From 8ef005e64dd364e7fc7b51e89957017cfa6adbd6 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Mon, 24 Dec 2018 02:27:12 +0100 Subject: [PATCH] Fixed several compiler issues with volatiles. --- ...ss1GenerateSingleStaticAssignmentForm.java | 16 +- .../kickc/passes/Pass2AliasElimination.java | 34 +- .../kickc/passes/Pass5FixLongBranches.java | 5 +- .../passes/PassNEliminateUnusedVars.java | 38 +- src/main/kc/stdlib/c64.kc | 12 + .../dk/camelot64/kickc/test/TestPrograms.java | 51 +- .../kc/examples/tetris/nes-background.gpx | Bin 0 -> 4158 bytes .../kc/examples/tetris/nes-background.png | Bin 7434 -> 4453 bytes src/test/kc/examples/tetris/nes-playfield.gpx | 1 + src/test/kc/examples/tetris/nes-playfield.png | Bin 0 -> 753 bytes src/test/kc/examples/tetris/test-sprites.asm | 16 + src/test/kc/examples/tetris/test-sprites.kc | 102 + src/test/kc/examples/tetris/tetris.kc | 3 +- src/test/kc/longbranch-interrupt-problem.kc | 24 + src/test/kc/test-interrupt-volatile-write.kc | 27 + src/test/ref/bitmap-plotter.cfg | 98 +- src/test/ref/bitmap-plotter.log | 895 +- src/test/ref/bitmap-plotter.sym | 16 +- src/test/ref/c64dtv-8bppcharstretch.cfg | 8 +- src/test/ref/c64dtv-8bppcharstretch.log | 900 +- src/test/ref/c64dtv-8bppcharstretch.sym | 138 +- src/test/ref/c64dtv-8bppchunkystretch.cfg | 8 +- src/test/ref/c64dtv-8bppchunkystretch.log | 943 +- src/test/ref/c64dtv-8bppchunkystretch.sym | 145 +- src/test/ref/c64dtv-blittermin.cfg | 8 +- src/test/ref/c64dtv-blittermin.log | 885 +- src/test/ref/c64dtv-blittermin.sym | 135 +- src/test/ref/c64dtv-color.cfg | 8 +- src/test/ref/c64dtv-color.log | 1071 +- src/test/ref/c64dtv-color.sym | 167 +- src/test/ref/c64dtv-gfxexplorer.asm | 3 + src/test/ref/c64dtv-gfxexplorer.cfg | 895 +- src/test/ref/c64dtv-gfxexplorer.log | 8642 +++++++++-------- src/test/ref/c64dtv-gfxexplorer.sym | 188 +- src/test/ref/c64dtv-gfxmodes.cfg | 12 +- src/test/ref/c64dtv-gfxmodes.log | 1374 ++- src/test/ref/c64dtv-gfxmodes.sym | 180 +- src/test/ref/constants.cfg | 10 +- src/test/ref/constants.log | 181 +- src/test/ref/constants.sym | 7 +- src/test/ref/emptyblock-error.asm | 1 + src/test/ref/emptyblock-error.cfg | 36 +- src/test/ref/emptyblock-error.log | 430 +- src/test/ref/emptyblock-error.sym | 9 +- src/test/ref/examples/3d/3d.asm | 58 +- src/test/ref/examples/3d/3d.cfg | 14 +- src/test/ref/examples/3d/3d.log | 1412 ++- src/test/ref/examples/3d/3d.sym | 80 +- src/test/ref/examples/3d/perspective.cfg | 8 +- src/test/ref/examples/3d/perspective.log | 625 +- src/test/ref/examples/3d/perspective.sym | 81 +- .../examples/bresenham/bitmap-bresenham.cfg | 8 +- .../examples/bresenham/bitmap-bresenham.log | 525 +- .../examples/bresenham/bitmap-bresenham.sym | 74 +- .../ref/examples/chargen/chargen-analysis.cfg | 8 +- .../ref/examples/chargen/chargen-analysis.log | 670 +- .../ref/examples/chargen/chargen-analysis.sym | 95 +- .../fastmultiply/fastmultiply8.kc.asm | 10 +- .../fastmultiply/fastmultiply8.kc.cfg | 4 +- .../fastmultiply/fastmultiply8.kc.log | 276 +- .../fastmultiply/fastmultiply8.kc.sym | 4 +- .../ref/examples/helloworld/helloworld.log | 31 +- .../ref/examples/helloworld/helloworld.sym | 1 + src/test/ref/examples/irq/irq-hyperscreen.cfg | 8 +- src/test/ref/examples/irq/irq-hyperscreen.log | 483 +- src/test/ref/examples/irq/irq-hyperscreen.sym | 69 +- .../multiplexer/simple-multiplexer.cfg | 12 +- .../multiplexer/simple-multiplexer.log | 574 +- .../multiplexer/simple-multiplexer.sym | 70 +- .../ref/examples/rasterbars/raster-bars.cfg | 8 +- .../ref/examples/rasterbars/raster-bars.log | 535 +- .../ref/examples/rasterbars/raster-bars.sym | 78 +- src/test/ref/examples/rotate/rotate.cfg | 138 +- src/test/ref/examples/rotate/rotate.log | 1603 +-- src/test/ref/examples/rotate/rotate.sym | 82 +- .../ref/examples/scrolllogo/scrolllogo.asm | 5 + .../ref/examples/scrolllogo/scrolllogo.cfg | 239 +- .../ref/examples/scrolllogo/scrolllogo.log | 2771 +++--- .../ref/examples/scrolllogo/scrolllogo.sym | 80 +- src/test/ref/examples/showlogo/showlogo.cfg | 12 +- src/test/ref/examples/showlogo/showlogo.log | 519 +- src/test/ref/examples/showlogo/showlogo.sym | 71 +- .../ref/examples/sinplotter/sine-plotter.asm | 5 + .../ref/examples/sinplotter/sine-plotter.cfg | 311 +- .../ref/examples/sinplotter/sine-plotter.log | 3289 ++++--- .../ref/examples/sinplotter/sine-plotter.sym | 77 +- .../ref/examples/sinsprites/sinus-sprites.cfg | 8 +- .../ref/examples/sinsprites/sinus-sprites.log | 579 +- .../ref/examples/sinsprites/sinus-sprites.sym | 73 +- src/test/ref/examples/tetris/test-sprites.asm | 167 + src/test/ref/examples/tetris/test-sprites.cfg | 119 + src/test/ref/examples/tetris/test-sprites.log | 2532 +++++ src/test/ref/examples/tetris/test-sprites.sym | 195 + src/test/ref/examples/tetris/tetris.asm | 33 +- src/test/ref/examples/tetris/tetris.cfg | 28 +- src/test/ref/examples/tetris/tetris.log | 6561 +++++++------ src/test/ref/examples/tetris/tetris.sym | 152 +- src/test/ref/halfscii.log | 7 + src/test/ref/halfscii.sym | 1 + src/test/ref/immzero.asm | 4 +- src/test/ref/immzero.cfg | 6 +- src/test/ref/immzero.log | 108 +- src/test/ref/immzero.sym | 5 +- src/test/ref/incrementinarray.cfg | 4 +- src/test/ref/incrementinarray.log | 91 +- src/test/ref/incrementinarray.sym | 5 +- src/test/ref/infloop-error.log | 6 +- src/test/ref/irq-hardware-clobber-jsr.cfg | 8 +- src/test/ref/irq-hardware-clobber-jsr.log | 451 +- src/test/ref/irq-hardware-clobber-jsr.sym | 65 +- src/test/ref/irq-hardware-clobber.log | 25 + src/test/ref/irq-hardware-clobber.sym | 4 + src/test/ref/irq-hardware.log | 25 + src/test/ref/irq-hardware.sym | 4 + src/test/ref/irq-kernel.log | 19 + src/test/ref/irq-kernel.sym | 3 + src/test/ref/irq-raster.log | 19 + src/test/ref/irq-raster.sym | 3 + src/test/ref/keyboard-glitch.cfg | 8 +- src/test/ref/keyboard-glitch.log | 959 +- src/test/ref/keyboard-glitch.sym | 145 +- src/test/ref/line-anim.asm | 77 +- src/test/ref/line-anim.cfg | 253 +- src/test/ref/line-anim.log | 3913 +++++--- src/test/ref/line-anim.sym | 175 +- src/test/ref/linegen.log | 88 +- src/test/ref/linegen.sym | 3 + src/test/ref/liverange-call-problem.asm | 16 + src/test/ref/liverange-call-problem.cfg | 10 +- src/test/ref/liverange-call-problem.log | 354 +- src/test/ref/liverange-call-problem.sym | 8 + src/test/ref/longbranch-interrupt-problem.asm | 34 + src/test/ref/longbranch-interrupt-problem.cfg | 32 + src/test/ref/longbranch-interrupt-problem.log | 526 + src/test/ref/longbranch-interrupt-problem.sym | 21 + src/test/ref/loopsplit.asm | 6 + src/test/ref/loopsplit.cfg | 10 +- src/test/ref/loopsplit.log | 217 +- src/test/ref/loopsplit.sym | 10 +- src/test/ref/modglobal.asm | 12 +- src/test/ref/modglobal.cfg | 8 +- src/test/ref/modglobal.log | 364 +- src/test/ref/modglobal.sym | 18 +- src/test/ref/print-problem.asm | 4 + src/test/ref/print-problem.cfg | 4 +- src/test/ref/print-problem.log | 91 +- src/test/ref/print-problem.sym | 6 +- src/test/ref/printmsg.cfg | 6 +- src/test/ref/printmsg.log | 119 +- src/test/ref/printmsg.sym | 5 +- src/test/ref/ptr-complex.asm | 1 + src/test/ref/ptr-complex.cfg | 2 +- src/test/ref/ptr-complex.log | 104 +- src/test/ref/ptr-complex.sym | 3 + src/test/ref/ptrtest.asm | 15 + src/test/ref/ptrtest.cfg | 31 +- src/test/ref/ptrtest.log | 602 +- src/test/ref/ptrtest.sym | 21 +- src/test/ref/ptrtestmin.asm | 2 + src/test/ref/ptrtestmin.cfg | 3 +- src/test/ref/ptrtestmin.log | 66 +- src/test/ref/ptrtestmin.sym | 7 +- src/test/ref/scroll-clobber.log | 7 + src/test/ref/scroll-clobber.sym | 1 + src/test/ref/signed-words.cfg | 8 +- src/test/ref/signed-words.log | 549 +- src/test/ref/signed-words.sym | 72 +- src/test/ref/sinusgen16.log | 68 +- src/test/ref/sinusgen16.sym | 6 + src/test/ref/sinusgen16b.log | 56 +- src/test/ref/sinusgen16b.sym | 4 + src/test/ref/sinusgen8.asm | 1 + src/test/ref/sinusgen8.cfg | 11 +- src/test/ref/sinusgen8.log | 330 +- src/test/ref/sinusgen8.sym | 15 +- src/test/ref/sinusgen8b.log | 50 +- src/test/ref/sinusgen8b.sym | 3 + src/test/ref/sinusgenscale8.asm | 1 + src/test/ref/sinusgenscale8.cfg | 218 +- src/test/ref/sinusgenscale8.log | 2111 ++-- src/test/ref/sinusgenscale8.sym | 17 +- src/test/ref/test-division.log | 6 + src/test/ref/test-division.sym | 1 + .../ref/test-interrupt-volatile-write.asm | 37 + .../ref/test-interrupt-volatile-write.cfg | 35 + .../ref/test-interrupt-volatile-write.log | 561 ++ .../ref/test-interrupt-volatile-write.sym | 23 + src/test/ref/test-interrupt-volatile.log | 2 +- src/test/ref/test-keyboard-space.cfg | 8 +- src/test/ref/test-keyboard-space.log | 965 +- src/test/ref/test-keyboard-space.sym | 146 +- src/test/ref/test-keyboard.cfg | 8 +- src/test/ref/test-keyboard.log | 683 +- src/test/ref/test-keyboard.sym | 99 +- src/test/ref/test-lowhigh.asm | 10 + src/test/ref/test-lowhigh.cfg | 160 +- src/test/ref/test-lowhigh.log | 1566 +-- src/test/ref/test-lowhigh.sym | 12 +- src/test/ref/test-multiply-16bit.asm | 20 + src/test/ref/test-multiply-16bit.cfg | 394 +- src/test/ref/test-multiply-16bit.log | 3616 +++---- src/test/ref/test-multiply-16bit.sym | 18 +- src/test/ref/test-multiply-8bit.cfg | 452 +- src/test/ref/test-multiply-8bit.log | 4064 ++++---- src/test/ref/test-multiply-8bit.sym | 18 +- src/test/ref/unused-vars.log | 113 +- src/test/ref/unused-vars.sym | 11 + 207 files changed, 47409 insertions(+), 21561 deletions(-) create mode 100644 src/test/kc/examples/tetris/nes-background.gpx create mode 100644 src/test/kc/examples/tetris/nes-playfield.gpx create mode 100644 src/test/kc/examples/tetris/nes-playfield.png create mode 100644 src/test/kc/examples/tetris/test-sprites.asm create mode 100644 src/test/kc/examples/tetris/test-sprites.kc create mode 100644 src/test/kc/longbranch-interrupt-problem.kc create mode 100644 src/test/kc/test-interrupt-volatile-write.kc create mode 100644 src/test/ref/examples/tetris/test-sprites.asm create mode 100644 src/test/ref/examples/tetris/test-sprites.cfg create mode 100644 src/test/ref/examples/tetris/test-sprites.log create mode 100644 src/test/ref/examples/tetris/test-sprites.sym create mode 100644 src/test/ref/longbranch-interrupt-problem.asm create mode 100644 src/test/ref/longbranch-interrupt-problem.cfg create mode 100644 src/test/ref/longbranch-interrupt-problem.log create mode 100644 src/test/ref/longbranch-interrupt-problem.sym create mode 100644 src/test/ref/test-interrupt-volatile-write.asm create mode 100644 src/test/ref/test-interrupt-volatile-write.cfg create mode 100644 src/test/ref/test-interrupt-volatile-write.log create mode 100644 src/test/ref/test-interrupt-volatile-write.sym diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java index 71ed2037c..e77b4e90a 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java @@ -12,10 +12,7 @@ import dk.camelot64.kickc.model.statements.StatementPhiBlock; import dk.camelot64.kickc.model.symbols.*; import dk.camelot64.kickc.model.types.SymbolType; import dk.camelot64.kickc.model.types.SymbolTypeArray; -import dk.camelot64.kickc.model.values.LValue; -import dk.camelot64.kickc.model.values.LabelRef; -import dk.camelot64.kickc.model.values.RValue; -import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.values.*; import java.util.Collection; import java.util.LinkedHashMap; @@ -241,7 +238,7 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base { } /** - * Get all predecessros for a control flow block. + * Get all predecessors for a control flow block. * If the block is the start of an interrupt the @begin is included as a predecessor. * @param block The block to examine * @return All predecessor blocks @@ -251,7 +248,14 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base { Symbol symbol = getScope().getSymbol(block.getLabel()); if(symbol instanceof Procedure) { if(((Procedure) symbol).getInterruptType()!=null) { - predecessors.add(getGraph().getFirstBlock()); + // Find all root-level predecessors to the main block + ControlFlowBlock mainBlock = getGraph().getBlock(new LabelRef("main")); + List mainPredecessors = getGraph().getPredecessors(mainBlock); + for(ControlFlowBlock mainPredecessor : mainPredecessors) { + if(mainPredecessor.getScope().equals(ScopeRef.ROOT)) { + predecessors.add(mainPredecessor); + } + } } } return predecessors; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java index 852c7f567..d0a5a4b52 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java @@ -39,6 +39,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { public static Aliases findAliases(Program program) { Aliases candidates = findAliasesCandidates(program); cleanupCandidates(candidates, program); + cleanupCandidateVolatiles(candidates, program); return candidates; } @@ -58,7 +59,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { for(StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) { RValue rValue = phiRValue.getrValue(); if(aliasSet.contains(rValue)) { - program.getLog().append("Alias candidate removed " + rValue.toString(program)); + program.getLog().append("Alias candidate removed (phi-usage) " + rValue.toString(program)); aliasSet.remove(rValue); break; } @@ -76,12 +77,41 @@ public class Pass2AliasElimination extends Pass2SsaOptimization { while(aliasSetListIterator.hasNext()) { AliasSet aliasSet = aliasSetListIterator.next(); if(aliasSet.getVars().size() <= 1) { - program.getLog().append("Alias candidate removed " + aliasSet.toString(program)); + program.getLog().append("Alias candidate removed (solo) " + aliasSet.toString(program)); aliasSetListIterator.remove(); } } } + // Remove all candidates that are volatile and not assigned to the same variable + private static void cleanupCandidateVolatiles(Aliases candidates, Program program) { + ListIterator aliasSetListIterator = candidates.getAliasSets().listIterator(); + while(aliasSetListIterator.hasNext()) { + AliasSet aliasSet = aliasSetListIterator.next(); + ProgramScope programScope = program.getScope(); + // Examine if any volatile variables are in the alias + boolean anyVolatile = false; + boolean sameBaseVar = true; + String unversionedFullName = null; + for(VariableRef variableRef : aliasSet.getVars()) { + Variable variable = programScope.getVariable(variableRef); + if(variable.isDeclaredVolatile()) { + anyVolatile = true; + } + if(unversionedFullName == null) { + unversionedFullName = variableRef.getFullNameUnversioned(); + } else if(!unversionedFullName.equals(variableRef.getFullNameUnversioned())) { + sameBaseVar = false; + } + } + if(anyVolatile & !sameBaseVar) { + program.getLog().append("Alias candidate removed (volatile)" + aliasSet.toString(program)); + aliasSetListIterator.remove(); + } + } + } + + /** * Find variables which are aliases of other variables. * diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass5FixLongBranches.java b/src/main/java/dk/camelot64/kickc/passes/Pass5FixLongBranches.java index 348ebcd7a..b83a87eee 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass5FixLongBranches.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass5FixLongBranches.java @@ -133,11 +133,12 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization { getLog().append("Fixing long branch [" + idx + "] " + asmLine.toString() + " to " + inverseType.getMnemnonic()); String branchDest = asmInstruction.getParameter(); asmInstruction.setType(inverseType); - asmInstruction.setParameter("!" + branchDest + "+"); + String newLabel = ("!" + branchDest).replace("$","_"); + asmInstruction.setParameter(newLabel+"+"); AsmInstructionType jmpType = AsmInstructionSet.getInstructionType("jmp", AsmAddressingMode.ABS, false); AsmInstruction jmpInstruction = new AsmInstruction(jmpType, branchDest); asmSegment.addLineAfter(asmInstruction, jmpInstruction); - asmSegment.addLineAfter(jmpInstruction, new AsmLabel("!" + branchDest)); + asmSegment.addLineAfter(jmpInstruction, new AsmLabel(newLabel)); return true; } } diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java b/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java index 3a2e63256..1e1c2355b 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java @@ -1,14 +1,16 @@ package dk.camelot64.kickc.passes; -import dk.camelot64.kickc.model.*; -import dk.camelot64.kickc.model.statements.StatementPhiBlock; -import dk.camelot64.kickc.model.values.LValue; -import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.ControlFlowBlock; +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.VariableReferenceInfos; import dk.camelot64.kickc.model.statements.Statement; import dk.camelot64.kickc.model.statements.StatementAssignment; import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; import dk.camelot64.kickc.model.symbols.ConstantVar; import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.VariableRef; import java.util.Collection; import java.util.ListIterator; @@ -35,26 +37,28 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization { if(statement instanceof StatementAssignment) { StatementAssignment assignment = (StatementAssignment) statement; LValue lValue = assignment.getlValue(); - if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && !Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) { - if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) { - getLog().append("Eliminating unused variable " + lValue.toString(getProgram()) + " and assignment " + assignment.toString(getProgram(), false)); - } - stmtIt.remove(); + if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) { Variable variable = getScope().getVariable((VariableRef) lValue); - if(variable!=null) { - variable.getScope().remove(variable); + if(variable==null || !variable.isDeclaredVolatile()) { + if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) { + getLog().append("Eliminating unused variable " + lValue.toString(getProgram()) + " and assignment " + assignment.toString(getProgram(), false)); + } + stmtIt.remove(); + if(variable != null) { + variable.getScope().remove(variable); + } + modified = true; } - modified = true; } } else if(statement instanceof StatementCall) { StatementCall call = (StatementCall) statement; LValue lValue = call.getlValue(); if(lValue instanceof VariableRef && referenceInfos.isUnused((VariableRef) lValue) && !Pass2ConstantIdentification.isAddressOfUsed((VariableRef) lValue, getProgram())) { - if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) { + if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) { getLog().append("Eliminating unused variable - keeping the call " + lValue.toString(getProgram())); } Variable variable = getScope().getVariable((VariableRef) lValue); - if(variable!=null) { + if(variable != null) { variable.getScope().remove(variable); } call.setlValue(null); @@ -67,11 +71,11 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization { StatementPhiBlock.PhiVariable phiVariable = phiVarIt.next(); VariableRef variableRef = phiVariable.getVariable(); if(referenceInfos.isUnused(variableRef) && !Pass2ConstantIdentification.isAddressOfUsed(variableRef, getProgram())) { - if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) { + if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) { getLog().append("Eliminating unused variable - keeping the phi block " + variableRef.toString(getProgram())); } Variable variable = getScope().getVariable(variableRef); - if(variable!=null) { + if(variable != null) { variable.getScope().remove(variable); } phiVarIt.remove(); @@ -85,7 +89,7 @@ public class PassNEliminateUnusedVars extends Pass2SsaOptimization { Collection allConstants = getScope().getAllConstants(true); for(ConstantVar constant : allConstants) { if(referenceInfos.isUnused(constant.getRef())) { - if(getLog().isVerbosePass1CreateSsa()||getLog().isVerboseSSAOptimize()) { + if(getLog().isVerbosePass1CreateSsa() || getLog().isVerboseSSAOptimize()) { getLog().append("Eliminating unused constant " + constant.toString(getProgram())); } constant.getScope().remove(constant); diff --git a/src/main/kc/stdlib/c64.kc b/src/main/kc/stdlib/c64.kc index af47a8cdb..c3ac15e89 100644 --- a/src/main/kc/stdlib/c64.kc +++ b/src/main/kc/stdlib/c64.kc @@ -18,8 +18,12 @@ const byte PROCPORT_KERNEL_IO = %00110110; // BASIC in $A000, I/O in $D000, KERNEL in $E000 const byte PROCPORT_BASIC_KERNEL_IO = %00110111; +// The address of the CHARGEN character set const byte* CHARGEN = $d000; +// The offset of the sprite pointers from the screen start address +const word SPRITE_PTRS = $3f8; + const byte* SPRITES_XPOS = $d000; const byte* SPRITES_YPOS = $d001; const byte* SPRITES_XMSB = $d010; @@ -101,6 +105,7 @@ const void()** KERNEL_IRQ = $0314; // The vector used when the HARDWARE serves IRQ interrupts const void()** HARDWARE_IRQ = $fffe; +// The colors of the C64 const byte BLACK = $0; const byte WHITE = $1; const byte RED = $2; @@ -130,6 +135,13 @@ inline byte toDd00(byte* gfx) { return %00000011 ^ (>((word)gfx))>>6; } +// Get the sprite pointer for a sprite. +// The sprite pointer is the index of the sprite within the graphics bank and equal to the sprite (byte)(sprite_addr/64) +// The sprite pointers are stored SCREEN+$3f8+sprite_id to set the pointer of each sprite +inline byte toSpritePtr(byte* sprite) { + return (byte)(((word)sprite)>>6); +} + // Select a specific VIC graphics bank by setting the CIA 2 port A ($dd00) as needed inline void vicSelectGfxBank(byte* gfx) { *CIA2_PORT_A_DDR = %00000011; diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index a48653ab0..308d50ad8 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -44,35 +44,50 @@ public class TestPrograms { AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); } + @Test + public void testInterruptVolatileWrite() throws IOException, URISyntaxException { + compileAndCompare("test-interrupt-volatile-write"); + } + + @Test + public void testLongbranchInterruptProblem() throws IOException, URISyntaxException { + compileAndCompare("longbranch-interrupt-problem"); + } + + @Test + public void testTetrisSprites() throws IOException, URISyntaxException { + compileAndCompare("examples/tetris/test-sprites"); + } + @Test public void testTetris() throws IOException, URISyntaxException { compileAndCompare("examples/tetris/tetris"); } -/* - @Test - public void testVarInitProblem() throws IOException, URISyntaxException { - compileAndCompare("var-init-problem"); - } + /* + @Test + public void testVarInitProblem() throws IOException, URISyntaxException { + compileAndCompare("var-init-problem"); + } - @Test - public void testConstIfProblem() throws IOException, URISyntaxException { - compileAndCompare("const-if-problem"); - } + @Test + public void testConstIfProblem() throws IOException, URISyntaxException { + compileAndCompare("const-if-problem"); + } - @Test - public void testTetrisNullPointer() throws IOException, URISyntaxException { - compileAndCompare("tetris-npe"); - } + @Test + public void testTetrisNullPointer() throws IOException, URISyntaxException { + compileAndCompare("tetris-npe"); + } - //@Test - //public void testUnrollCall() throws IOException, URISyntaxException { - // compileAndCompare("unroll-call"); - //} + //@Test + //public void testUnrollCall() throws IOException, URISyntaxException { + // compileAndCompare("unroll-call"); + //} -*/ + */ @Test public void testFastMultiply8() throws IOException, URISyntaxException { compileAndCompare("examples/fastmultiply/fastmultiply8.kc"); diff --git a/src/test/kc/examples/tetris/nes-background.gpx b/src/test/kc/examples/tetris/nes-background.gpx new file mode 100644 index 0000000000000000000000000000000000000000..aa95fe986aa898ac59be819c60ed158e3a6936a2 GIT binary patch literal 4158 zcma);c|6ox*uc}KQYk{&rkiLH)8dkKv`BK}mNnbZMvA#*84UBIl2RE-;aWy2%ZMQj z$?~JJFO#fY%V02;m>FXjv;5Ahd*46aKi@yj^EuBs=X0LtIp_O4pC?3W*4>(P!YtF3agGC>Z@4pSD_AkqCxCxRqDmee20Yzq_$SlPry&oQe&iJmgeAvn24~c z@hW3I@yVcB7rte?8sZOz3hsSjbT+0}-IGYmF5Z|_H@3TAj|m&UQ4zK_FK^Cl#P zA5Ae=ztNJULkp>C3%+pRi&Oj{mNEMiLqWC*y+FiupRN zy}Wtkk@0Oo^R>jz98z~6vFa9#8}Djy`LsSc*xi=O#I8%SZp+ce)X%?dshcm*R(C0s zYAPctE00x>{5yo>!2~NQhmvCKB#CQ{`-p*)sv$;2~e>3$2WuSel`*` zOm6^uh$ISNS|Y{Jhf}6guS2SOwm{j1D*V^70@n$Uw=mtujYS8+eQKwCNvZ}at zPtF!ZP4v0hb#A_g;%4n1pMK0Z>76Yw#N4KCUvp{eJ3#;)DjCH^P6;duIAKNK+NzL| zdh!`0T}*ZN{X(YGMr5Cp0|m1ZXpV2IhB>-iEKf`+zc|^w_why>#EG+X(7PnAGf*e5 z*WtZkK-wN5%aIWWw;o1Xw8U@kqpVl&Zg5A09B;}h`)0x0_C|`dPFM#CQzup$Pq_QH zzm|Ba2lHpP)V8;23eYD$Rh8rPxA@Az{&PCRii{Y{xX}B-CUfmA81~W|u5S#&ptv$M zOY9dq4@x%sTpMQRfvWBTK{ZeNn(Bq+5UX^K%ycU+ig-t?{xUAYtY;W|vD8hD{1UGD zuzrk}E}k02_6Qz_j#8J)_ODt2U^}8*7KJrNP3P3J&;P7tpTh)8&>baHK_mZgQ<>|w zK<_eSd%*YkH_pkYOIh;1BHn>i1*a)P_8{K316YNt!Ig@$X-gkCKx^2t(Jd`ah8Qtu zSO0W&W+XKll{fp&MB3a(T}(Ae8t0F=$YRmRSyR+IUV+uP33-yaCKyBAU)?ANXD)8%9=-g#5IUiWq;)z?hDBRwnMR^p(dVR+?DSjk5j>i zl*Q!>5K9zTc{k$}sNkR#Wty;mmJubW$5@o~2M#=3A#C)NZ~fd`L_Lof_bD~cfA628 z`Uf`QaNvnxjdtX&*1FMN0#OY5?=g?_HKPGbvt@cYg8Ea+r#p^O0Iun5!ys+hV9nHw@Oub*sWY-7at z#T>>Vt)xc83cXBC`wRA0DidaDNwvO1qubOvkIq_ z%~L_i!JRgUF|({CN*bO7Iy_9o#;a?%j}gXKOrNm9gz$kh@LYyVLf*1_CYf`|qYe#QJdg~#d4kOS~0PgiO%-HNWEE%95qyrWcsyIdl zuTQWr&qUF8xic=Fw*&z*kh@H)ES$aW!!l;cKmqQM37!F#`oK04audQD#NOkcJQm37 z0mh?@Cw$CG1@?Z3869C?A8AN8fL}i<00BuGA>X8PK>EiDxGKzQuSKxb3HCQ4bS+R{ z2{p3dswFtM6daw1I3Kb>ELpC#moKJv(yknsTa220A-;LBK|;TQF_ zH`tnUzQB99tPR8@LZXHr*9f`#2%10#F#~|C09Ub4Xyn0Qv2c*=BVNpae$L{;rK_ch zH|e-`&=8Hf(WXvf99f>d4qmte9uf8mxqmHU_pW*u?n;^rjG_FJ5z>KC7d|{vgs5fe zOE9y`B!y~3ZFiRzP>Es8S1Hw?qOn8E4__}~&MU!{yy8w>LDV=yu=P(pV)1_(3q(m^ zJc4G6Ri+R)nV9z|v6=;R#Tuyq|CLG?iTZ)831G)!LIA0Xjv5rBRfq&K=KT`tYat{( zf(j5Vg(KVVGKN^Bs|bU)>|}yGYXt-|u(<|B&1w)L&~io|1T1gi0{jR(H?lxXFOKu( z(AY-9(&9)I$97hP$>Ufz-@YisqG9Ctm-2S6?9Qx zO!Uf5`xR+~0>;57j0mI zJqvhL&Fz#u-ucuI!4~oNk&vZ!b~;<4(vFb1B`g#7h(gXjbwH{?2vaq17e^`e5j0gp zO-FB9LDOIr^d^HP=xhfDED8K93>svEwrIu?GX9@s<9ewSt|gRJm2V2;Dre3ot%Je@ zx&%Z|V5d+_G*4Yq{Url7K$2Ngx|U7r`dRoK|6-QyT}=9wv4n&~AJ#Bf*=msQLZJ|T?6H$PDIPUKnY6nF zy`D*o%2*bTt^2Q&@s7dvj9g3N2iOk0AlcfA7VyJ@-FoSHSohoRB+8Uqm{D3GPW8gU zUBA%r7UCc;$opmVE8tpt(*e8H(_&BceI)?S*an% z>1m*uggVF`M~MWN$6M)UX1C)snhz7Fj67`G*u~?qFP#2s%NWk$Jl0@D!}doL+}iQw zTMCF9Uu4A>4R_15jbG_95KQV)nyQl$eqOOz98A25WnN`iSuJkdN8oy$e2+K$L3+Da zB)6~PdBRWieWIzvt5AIt@qp%!nZ#R{?9={=A%ERZ-~_ELKjF`8o)wY2uCKB)-@td}h|ypKHOnYn7k-fpRQm9h15 zzov0bqxhz0{#pX#t^;HGH!lgc8Y1|LglK3XT@GJc5~PNoYOGq*;LxWChEeH<y>1GPSD3(dF%J z?)if6DhwhxHqmXcdBMap=k|{~p(dx};&V!=P>O0^Xj{Md>T2HK^mvU>JZm4L-lrT` z$Z4{It#I?~;@G;0^gqP3P0~PZB`N zOR)`~fU|T%JEQH3M3=9WijmVikz!Qkspsh()a%=}p0;gDN}=BnKj}EG@KgM7DCFLo z!CL+nsk5ee?QgS8-x#Xe!!i{z6ujc7*5VD6jMW`4SDbI_&5_eKyXQYy^TM8Om@IU9 zbKq6ZQ@ex;Q;khyE9kVw9BJ%rNr z&{Xwh|6{!}loO2pd8f(q208YOk;2n6_q-jSF@qL0&MowJv$ZQ^+MmyJ(=Ke^H$5Tv zt%_%Ov7ga!pEYg!?zyZ(k%wp0q?0z~SPK?;n)a-~x46r1bgLw@LzCi2Yij)eiQg|B z{i9hm+&ytUOZKF{eEWHh%|xcJgUtI?3RhvFM<`~vjssJIq%{?mMyiKWX%bqQd{Nx#+rQ>NEdqX7T(ly1UL; z`0b$m%eJ1DqlJ8A+UHQwrgO)$xkrCq(34l^d%k<^pF<;ufNtZ&fRACzO=Tmt9->_N^R_h*pil_mEc`-9ck;1 zB%(Ce|D;h0GKtQv zk_`PbZP(3dlscM*Rzh+g_Du9zwQfqOS(DuF9nWjxeH|VvJ%~80Q@iKr^+Y!s#jmi} zREIyhf~9@_KhtZET>P5+*KRFGnjo#7zH`fE2UkX}OZR(~)$w5$)2%J+3Vf{^EaLd* z_kJvTwpXc?pPg;B|E|1YRHOBZeOq-6LcCnqKOq@o6bGG|lGCY|UDBQ_Z#4}Xkjv|T zo@RVz)9+FiGz!i8f9XqI3DkPMwa8xYd!CP;vPns-D)rckvm;i^A?>*j<%0rNo?)lg V?aW@Q1AobTInq#4dmVB&{||+$D;59% literal 0 HcmV?d00001 diff --git a/src/test/kc/examples/tetris/nes-background.png b/src/test/kc/examples/tetris/nes-background.png index 345b721c972ea88af8eec167bfd2cf7ba4e89f51..18ad4dee316fbf824cf25fa6163b1c8b35684893 100644 GIT binary patch literal 4453 zcmZ8lc|26@+dpGsvJNW5*otgfqAbbGAX`0*t;nv8DCc`@Qb_jy5+l;^q+M004m7#Q35m z06@S;VC^sqcy-xU%mi=jKE~Jl0f49Fz#u6KJR$(VCunj}*ZM)`au(_xqK-RCt28hp zx*^OX<-u$HzZQv+gyQ_9D=DQ@+zY(e@fLa3@x?4RL}gm5G&_%OxRmklkCtl@Q|0?y zJ*F&&9@I^&o|?R0FFot+?VY`+86R=sR}^Oe(vq297PDkZ2xT&7$8+9Mx=^Lo`{WtF z(Fw1bw6)WU(FwMl;~2`0L*ehhden(FX3UqjfQp<7P=4;eO}Wi?3+2(I>s@1ywFwtA z5VawMQf3Utp0P6hU(&tl+5&qk$|tbHEctuGgOqc0=w(NnK1NcH-coIEj86Pa5OJQ0 z2~fIqjGS?5SNq*c#+iBP^=qD$wDf?~!T%**tF#{37A zmRp7@eoQm|Mruwq{AySO>bB%Ur7OTUPfs7MVDP#tkQc~>+ZH351%@kGXROA=se5nz zBOxt!h_;rfJBouioNCEYUl0!E(^h6&gjz~tU94Rid;tGF>H!k17kqmwP2+rb+l*^$ zor97^-Pbw4b>Y$d$hdoI)Vwv>Xe*9UtBoxq1>FHwRfF-Z?Y*Y(+9eVB>(e1tn;Jk^JPVV}?wqS!*vWaMKEdaHu}BLoJvE(P zj_dBVc-Znux6!)>?sdpf{kiOKlDy#%&>-m|o3_*_H*%tl^3v^F^{VoA&)xu4#_=4 z&WgBLTkM4u+MUzM+=EDJOyDzWNGb2pX60}$l8={Okeu}iNSCLw^n#@}yHmUK3UX7u z1`a;}v zw;k-+tpLZj`}QKTwI1>lB+=yH%dNH#IZZba4+6qYs|k}#es5>1_sm8dwYt6OkcQGA z^eJ&zS7FxrRxJ~f!kKsj`kDWP3K5ty>$^XroOPzW8}~Dx;;_v5_QsG9=bmofy5U$c z#-Yp0FmjOdlq`z5Mrqt<1Y)K;bk5QD=*wwvR5q@hZgFCQy9GkXO+FRE4rGylj<6kN zfD5?G4O-U;8esbDg{URdJ;~d^6@iA6HxpI_Gw>T+mK)0A6ERzAmp;ljFd_WJLXLPp z%p1~3747G-&k+8vs626lK5BDS=DUELFH8tW=3-o%Rbri8$6JO6S=};z)oh@<5 z9oT$ayt&RhDh}Xfr}QM4DPLWH+$RFxpEv_e_kS^d`!Raw z3v7g7lcfxte6nItdL&t9=v?eIe&^a*hdeN(W=%X_$-mfLktI4N4P;3 zS3nmw-EE=^Lm0IguDO7)(!rwaA6Xp#1g@gD9m4Tsf0m+?4u48x%4Q3yZ@C)Se6~~^ zQ`gclVsODNw4D0q3kHwFdf@4Bb8_C5+Ja5~qL}o)w7u-N`bW3WFF}Y@cvLt`HXsex zjHjFK{x~y|IQm|?H(}(~BAR`!NY^ndo^6e7hrB{2UAHDeHi+*X6pN{h>P^I>6j>a! zT&(o|(8+QC-LVca($(Zf$g3iv!Q>8t{^(Y>X-1BdJ;KG~W+a;3_4>U)?AP!eOSZS5 zOEn%9<;RCmx*0iQzQ8pX0Mj#HV1z&mNVPsHX%YdF%RBAtgn%#Ce=uLV0{E^=G<_BP zg8OD)!V~D}I@Hz{16paAk%PU9a501$>kqIdqO!C=OvI1DYMshx7SGw&Kmzgqy%$Y!=lvy$d^0cnePb(GEqcqCo>Dl$Lyki(Ln4xA44~pO2lvNy0ehB3B`o7_WEIy~JS8$Eu3KIa1_7AA=^OzWHl)i5Dwv zF&4|PTNH%Za^1ty!+i0FtZA;79*H-lzMb#B{nTnGq3A>J&eEwS7faP5z8LQ*tLV=r zD$kR9*c?p$qw#C%7Nr6qeE6x*R+L`N+**l9L=<}A%Xd+Sd1DgG%_ZO6U*h#i`bm=J z%plDx|HOKceFEBhr^>#p|6)7)e7nO(hXCI zvtp^F{j6$*R5m?<@8NP>n#|EmKle}Fur&dLuWXT^{ser6SidAH^?<@S>b!qv|6z_{ z8o1^e7p&kFE*EkE6dTY3LglJQ%Y_8kQ$we)K}_s#wQ>l_H5MXODNX}&WrWl8B*a~c zLloGA(D7y5G~j&;#IR|j|3*x{ALyMArpfme_Ea-H1v~x!`5dQ znHQ0g^P3b6#snylQT)Rv!z((GGJNXz?y?CiZEc1IlTPOWDc=G)bVv0NM?k34^5DUL zCNFxler$j|c1J0QOGuU(foZ>UrsgO)V87o;Sf+^_f^Yc<*#Z*=dEagF0@iG%-1GDBD=8rMm6enx?sjJvEO!=|?YY6< zxy@Oz0pa(P0|!$e=I^PWC-_BW6T-g{1U9&d`)j<;S28d1r#%X4?6LhbU}Gyw!NXF2 zxH~B~LScdA!i0b!VbES&^#{u452_F1lCY>SK1A3o{1f-I%$TavAI|GKMcU}u958Jf zxFZ|-abneCwTFWNy}&GF`vbyvpY6ISkS5HokOhHahPREF^+BQ{z=f)Bk<~GCpQEXl zYFGh zpCNS5MjiK<8TGUH>&j2%9H|q{^56^DX9!sXpw^$LZTn#_xR^i0nGeb~-NF~Jp&1?r z47zCU2$r{cf24}U(~?vD%cSdC6M$CIH{93i?@R#2ElypH#C!N`TfoJg*zmc@$oATW zfjrer?OLt^=OnXu4YyrClgqEqscQh*!|yJMUrGk6T0#h*>qL)T@VL%$;~?3P=;JpX zb9rb0>xgqE9M6Qv&qa36tgC!>P)ajj^sRGf_`K6-9ZbL}%_5tYHy}@RktB58X@`=M z{*ANivE}#Mw5K8?zV1NKs(`FMHqCf91m7w;REwdu&G3otm@kh?-UT?pMv0gF_QaYG zE7d>qwv#pcK!wUKT0C8>su4X8Fm^6vb{{_fpm?k$Nu zwlBj1A|kg||I%#Gl1^?oXF9+#cb6-3T;BGe9Gss4XqmcrpEwz5?z=BcZ>0v_bPI}1wDhSn12LLQrWQ=#P)XwalabF z#hT~53L+Bg`GMNQm~ad{A>AVx&e3!A`0M9pP7*5GQJ>c2UPYC5_@s<LW?ET7TOk;+$r=Pwi}{NN5X|iajp5*!M>Zg`@Eg`; z`N<`@Ir9NwejU^EY2R+mK_fh0vg+Redl0}LGR)=s^-g6LROvt>lG4NK3$4(^Q*3y2 zx@i2MnEHr3XQN11(|%r=gC@%*5Ng9dnD|^n;_syLu?-kzL6TkLAfq<{fkda=HBq}$ zawJjKhr@}06t5aS^IfeLzZViPMCP)^`2tswc!f&-;mto%iGC{B;doA97Wx+-%y@T3 z4s#y#K6tXbl(WTyC<%tf{_uHh(ADer1Ys(A!|UuN$J$}W2tl^Bi0k_w3Y`w zM3OZEPZ=!WU8nkka<}XXNN_&eraItolwDvNkjp0^y9}lYMn70RM#PdPHG@4G&&*>R zJr#bFlgS#SQzI^4ao&DJ3p0`O)*hoAGkarbj|1F^qo%Zh5v&~2p5AXw&WS13AZ-Lr zwK&c5phASH*UEQFjJqJIICev2pXJNnZsugHC1M9D#V}=qLb?U5y0R8-NnyPHTnG|d za(nVMU2Y8%Q|TQ_9$-q*)0Uo4Zln^nDXL-R02xB%B^<_8EaQBIXAd4?pC1*6jfR4?1l$SnNnj+9Rw-4mJ3Pl zDEW_k_i%_P5oLmw7k1`IyCxbLy3|CamQmMpDUEQ}sU;ZcIjNu@0;J#xn zi%e1S{)2vBqmqI_9JyjW=gsmN7+?>D{@XUeLS#%iulODT9wsD5T6&pGG*o%1{AJaLyVA$N=K7Y6`fx79^+ zdjJ3lMPM1aL-<^JUezLefr9OkX284FgEIhd@SBzS`705i1sB7l!=DrV-sRD-Z!3;o zbB^f&e@D>7Qwr>s+@D-Z*dwY$JQQ0d-LL^ET0p2jQMg|6xTINPH%)pJ06&WUyJt6z zaEBnhD6L?6YkRgtARq`h_Ii9SL%?j2pwhNiV|j1^C;#maDHGoEo28Wx&5Dm$CHD&7 zinSSUc5sk$*bM|;E?xc*Q)>lbu-?|n@TML<7scP7po{ z<~MRykn7~kk}Jcn7|i?)5-De+q=!AGIK!YuCdX?*?$dD6mqDMFKL2&ojAmgfN{hV+ zHXEsf763!+q2oF#BZsoUBW8y|Dt9mtrE71T*QZAhq#AhBD+3sh=atsv69n<2o9CPe zA8}g78mD`QgRonf0=v3%R60BoxBkf(ULMLpqvq3dLlPqygv7Mjm20?gz#o069I(QxY`Z(C;tU zE?N&hb^YZOg}^qiwdV#8UG{>W~&wEF0cY_1$TNpHWW1E^2p z?t0C4E4#5aeXVc(|M+u*Yd-m>-r$`HxB_@j?;0sHlhW2q)`Dt-tlfqb30nNU^0LIe ziLLHf_Ic_?Yt~vf`Zj6FUU%lG{z1Z(HpSN28=xPezrO8 z%F0u}97aEz5N^4P%3E!j(1X|ygF>29A_{GvAe=uo^)yeh z5XSSSmUMlH_htq)?_l~)t3dX*qlcda(_i>ypUTYfE4-XCpBpEEYoCs%KXhrnT&eqf znl3$U56pk8x!^RAv84f2H+;Kky^Wr+2~l&2LmMhlf{@Mwc_zs9BN(Le4PZV4wmslU zsyczav+`NY0uaDTDqE|puh@(ynUq6Nkr%CbsF@>!h-nST$1_-bE4K3N4Iqg4vBv1f zO!1|`+E0-d$`4Is+E5#ND8c`Vp*H2}){B0@i*oP^F)E^2Mj3k2kcgG89m(o>!8XPd z9Xg{LyK%GE3~nBytOi#Uzgx&ZYwto1@GE4<3vpQ&Az7BHW@BKLKw(~gxsV^G@1OYE zw{YDzB6`5@Sx(J>0k}(?SbOgvBJOJMgA0b^Qw`(S5iE!PlmL$)qmIRUv^1Y@)%Zq? zV%{-PA|SGtwXy^?O(_o}fl&wATQ=P`k$xzA03>2DxYsdmhrv3mc46vW$zRg@`7Xr0 zreKS$H?&4AmE~Pfn@F%1NJkT@u~)O|smHH8o-}USd~zzicwwO%b?p!)MTdJ65)8K@=rgdt*gE>@WjNR$*Pjy$=?b!czZtC{n8Amusv;ws>KH_z=$ zV2g>&qx{nYb>~brYfSa8Vx=HgKi846^^1Xnp}rNo#_VtTz_(nm_QsD@5<|lC@Y#0> ztgXH?qYkX!U>NS^PtdcRJkmr%rYnh(bA3>W(QLU@qZ}Dy>1$Q_1PDBdO3}~rd2RkM zZ-0qVmqEHW2zXImyVx;SD!GekWcQU^f7WwTV|YUnW9{8M&Kdube}bd0;pFuT42YC3 z?Wwd;P9xLtH_{UgQ%c{ex~(AWp-*dUoLCDlP7gqiCKNwwn;}njkxwry;{ea}sv^lG zL1S#B<3Y=B9?617+qz|bDy3l;D|K0j?G9cyCC8mDHd1iD(IBUAA%TGY=(^Kc|w?2>~ z0}pKmmc4t`?O|g4Ic6-s+b{U7c79?Qeu42s)O~(f)+&j)_*hwsI-HGFqc$rzW--Ymgv%! z&XWTx{z=3@whc7K?#scC4#`%Lr56t9yGk&cvj`gnF3eAOIAYNi;hVl&JG-)o zk@zBys{m3fu)Wr<_aMYpZNkpDJaM3C#RR(#{_EY^Nrvd7YIO-Sx7`rm?5{aD?&jEJoz*Q8`P;49N%3M2>l9V@8yeT=C+yKFjk{-@8#K%-jGo)a6?r)f8p*yoR{6y` z{r>d>u8ycvo6|d!+SMXcC<7BOG#7f4DDS--1R6^=)I#7|eNFxKms@aXDG+_RTLx?l z)_|mF$U;`J<^G`3a2=KpHXf^A{z0+s+R3Tv(Xs9<(lWf#M#DNr)^V03@ZX_{ekKwIQk%UXmFP|NO>o$*j zUEPUm%w0X0Oz!E_o=oi8NnSky*T|^o7LR!*T~PbsLg2I$;0u0DCTLn+Kmh%3+|TD5 z%NYJsztvvSBi_T zIJ&Epo(8*6cYDc@;*3Pn?bb-|4Mk*rsz97z(|iam_sh5jIQ44K)eh%MEpI_5Z1C_H9Wkhdveam^r4Yc%dRTHF?xX-_;sLKjX40wD7m|^cJMlaNjBh zYIFd69B2z`kS&2}3#+_++TF6?wg;x{aG-5R*4S^Un1PMH?d-V7w_sR3dLUkv#_%wW zCk#J#my@E0N}U=jr84at>_G*uRfiW~Zg+=HmL`J=fpo|vZ>};icdF#{?^@ts!df63 znT+HFl--8TOEPYIiisx>Yh_J$4Lhln{P*v?>KzWm}xkeAs*nylGedJ*Zg~o(Kl)^Fc zIP#T@eDjf6+{up3vM1NDE%0)}D;z)&v|(y7BUChOd{VSPUzn3B2gyxE{goNw|F)8X7vWaa=?nK)i)RbhX{aq~C&d}hqQl-d75!=28}N+y$J1pE>G+{PMrG;xo@fpwu!1JZ~K{` zRvkaOX0Yu(h)a6%W#JrnMbb6uKATfB=vgW~V+qwRe9G%MH&y%hXo~?iw-ZZBs$Gx( zz#ptg_a|SR5B_m;N-w{~>>m#=7T{J;01+)d;Ug*0l-Tp;Td?k-AR)!PtH1*HZg z_s=?4J;M|eHg!h4iH(#gOPX4l#i6`G2$Hd?**0*k%%m6qvX)#oX69%oTxHNR4llnQ zgO=x3G)dL=`fTT^&)>1(LTS5AHcos2rqyvfFHbNtq1{O}dlPN(MFBHMe#=gGwRDH0 zK?1W;b)4w(c>Oj^9U(TpXF$z}du02s#Ftf4BVI|*#~no-@Cy$CncgV>+Z6#GeQhhj zx{c4LKZbtv+iaz6aRHL0%hM@I;*SnueT50k-Re^7Jh40zap@Y7`P!(K8_9{TlV z%!QiH2b3JvkKBuHYA3eBb_E)?t`wrKe@uN)CWQHMa3U{bW6!dBL_r^0l7v~y^PteGM6=}5 zB7VbY-l&zFo-c=nejZbZLMp#+l~T>D6Q>z=xAl*DqxR#<)N}9dm-=sG%6kh%g&ZWk zRfB=iB%(Mi83Tw5K1;VFiBrY`G`yBAc~e&~DG`xK=yHSq)K91s}=WzcQQ2-UU}^#FDAyT8a5-$}<^6=Pb><^vo~z|1MJ5UdJa^6HGZgL02zX7Ho;hP8PZv z8lwk(E)P7o93_1%+ks434<>It6>3IyQn`bKoD@KT%P1???EIr&@rygjR_M>_l(5AC zp+3X1&pjXc#DUvIrgdi=UfJQjm(DVU#tZ^w7-dZco1F^Q()ts`dvMgQj}`P`V`6#j z^Y9MbpU-7{^^soQ0Nt3&xD{|-`90b#?Kx31#@bS-&Yuwg>$^kGecDx_&EKk*SiUj1KSXZvPt0+UNl<(MrA_9N&o3yGWU9!XDu3El_UgLcL9~zd6d02TV zVz5!R?*Mq%7#RJi3wGuIlU7<`ybJGRd6Z{yEAPcbJnYfrQqEOH z%dgH+^BNsKb;^Nhtm(m1ta&|pzKx&c%3>_w?_WNiChI3i{l_o)-vul>WsMtEeMF5U5W#eC58w8DYe(_DM_;!kuwCPy}da65jJud%X@Yb zvZ*5pdUca|OW!l{R;RO+78a~tyP(xk-1XTw*@!Oklj%_M7irbI7YW3*)o)li7us&u zOMFeFpApSsRZz|0aYSFneh`;KHtm88YI1Zl3k1D;i3Po#^5C7)Ze#3AS@-K!fM_7;LH(e+|;YZA22@W|E)UqJ#8 z`~0ptnDa2Ajz7wl4#u3+0{Y>3(UA(*vL9wYdk>2^@5XwyZl_FEcYVGjLVFJn6Z9(* zfl_n0=(~CG7*F$&vS!ch&MiV5|H)C*DT$aIXaw32#Zxjp)`Vgmgbsa`aP>b;rax5j z2-+H%`*ak{`4q=o;qYZnMSgBnLD&5%*WEyEWjQnqG&WIQN5T)B5?p%bfn} zXioqUKQxt!HR@H?=CGZkJawV+SVNIqe2TYd%OAmTZpxt8B3tRcLNg28rDF zQqyoj42XG_RAU|>dXK`m4tc@qW^=l8jOc}mtG|Y2K-itg`)3m!T$>+i+0d@flDXZWB_af+iEY<|<53;aukJb@f? zQ7PRI7Dh*(8Bj&9ta4=i1-vtL2^NpBfW4>?Ct7n}!A+3cYXOYmbfwpXimXH!3@i=# z7XkV&wQjT-M5p+N{*nhfsy;Pd?Sgmqry7f2=D!ho&W$+po3D`(<^6}z`wkQEb3Xe^_!0A z-0rA!ZyXFHq0`bAe%9ICbcqfkj8{Ec91aEgFXMw$)Q%Yobf1ILPg zF&igNraITGR!V_42ZP{)l()-%CXe#ML6p6^UY0bJKbc|FVGF6HPrka}zqjEd*fb!8 zXKuEz3&P=U@-(-nQ6ChHdnZi~>di9@3!1Psg`#fetIQ4r`*S9lrNj`q$iu48AXSc6 zrgGApfY$2ky&tV4t<+4)jqqEUL}s_-Lg8--kg+Ij?zaR$XrMX@`O0+0k5GbYLiOyY zHq1>hv<-*tGwJZjKBot1+BR9`H9qVIftTyK7w@qZ%m2E2Ta+kSgm^%ko#WXFvbU68 z&M;a(xF2q7l)syaBQJg5QI~M^8T+xw_&OFi<{h7~vV$-Yil3vzl1@nFY=*VkQ^R)N zC(*U~{qp|Iljn>)$Nyar(PO5E7{lDmaF>nQMtslPLc0CaEgZNZ<{E_M?KVq^msiOG z-;rK^c~w|r2&r4#^Sm)MCLY#)oMu5|+;&=0ZS>-2l%^}TbTdR=C=O{(uJx=S_+GG@ zP2}3Wl}MDwOjUJ;KP&UD(nc-kfk4SLEQ39fJ#8^1HoAy-^1qc+PHmE6%Th<%m}&iy zbc5B~v%ZD{f)Due=}0W_)aaULiDp;iS??-4_$cKZ^&DL|m5Jan4bG;IGTpQcd=JI^ zVT?ctN>z%5&+UC=0}aV<4XwYDDFfxq54br>`Il=Nl#f?hUE$*sH=E{uStcjrS?@1k zZ_o9!IfV$rVg3=fDE6(fq}J5)`O%#n_Nh9l=c<-mmhJdn0t7cxkXgrZhxOF~th=#I zQrHSc3;rkR`9V9p-=cz1n?S+Xi(~|LxC*kCH`R(V{^))M+lvIzOi+fmY&*@|q#zB# z%H4V7Qpn-kC;v{XQKE!no0kFy#`9p)_h=k&JH73V?5lB@P4edkbY!}E`S~r9-;7m} zqlO*VZre4`C@14#<&QE6b=R*woHN7A92D9tJwlhVmhR`sF4^PQVo+U4T3ji!am1pQ zW*mnI9v15XE0B?xk2(aF!Pc)0#C#4vQh4JbinX_>NAz>nkgQRPxaq>KOCzHzl@*fs z`xI=7adtp`o@No+>A2$>qj_?xr*0znBsn0ob;Boo`omeW@V>~?J_^f?X-?Nt#ZEVW z@7O?YYF39rt^l(f-!F<8={XAlpjF$9E1*v^aerO=lb>XXaw&&ZA^wkvuHch*{;5U! zl9ysfX0W`1?E-waNdVt-vIw|=+d!7&VEh>M=VmGH4Clvd9MWcQ3A1PTD{{Va-l1T# zH@gIU`NHLz1?hs~WL15iXf00a_`81cES4X$^s@xqes>H=oBn=|mZxc3F>-0#o7@)eR#~JCWe6Z z0SaKoh6t%xrw|FE=rj3c#OrApS?#Z1B&0RDSrQkr+6BssUNM!VvydV1)0Zmk$6S~? zV7b%IyPEfp9kig0y*boQa_uq%z;BvoMI@fgfA>0L9daUvuMdex$n3(q79-~*_6~o) z0-2SU2z+lZcY3f=XO?~5?QC7~ro-dbE;i>#b#VxL37ktH43S2MgputyNNzO|{%YCo zi7z-Tzg}{)@)>Cp2_Ifx(j5K8@*H7rNz#IKn#q}v0Di|t&KkJ~?nltAv*S9>ksD0B zsSnUyhQybk6=7%G_hMLBIIt(&zeG(E& zoBUI=;=vPjut&mS0qi`w%FHcTXy{p!m>>+)TsVJxlyy`{jr!ol*G^tOn=8{~EU==!DXO49WcN{C770M&^%{C#3` z_#S4h*PVsvGrI{VRBIH_JKt(R3vTqY2z8P0i8-nftL`FxF1%Amjbx zpG+|?@?Ey)WF5O(o42BNYU_Ns=?vBQ(+-Uty|^eAlPEOciMeA%ENx6EY2fdUXTtWy z3AZnXc>FnNy2cPy|30c28^KHZ?HUq*Co@{eNg2~TyX_=QR^{7zayoVLK%`?E+QfR{ iqQI#Y-K5ni5aU-)H88``L4SUAT3K8&e`n@)_kRHLeWGOm diff --git a/src/test/kc/examples/tetris/nes-playfield.gpx b/src/test/kc/examples/tetris/nes-playfield.gpx new file mode 100644 index 000000000..3568d4df4 --- /dev/null +++ b/src/test/kc/examples/tetris/nes-playfield.gpx @@ -0,0 +1 @@ +xM5ǟl[4"E\zBR۲mwBu9+G.QVB*iy; >ƙoW(ڮ~&c{<󳣕gDcb5Ϧ)>Lr\5˦t6^NbXef/\}yhnly9_h W;m +H>39ՊtiZ6M)f/+li"?07t0%7)T(ϝJBJD$s&q&ð:stй"ºkZ#}H>BMB*J *y"3,GB2l?Sk:Ifu,є|FgG?:{A~x???5'NuGy߽G~})DJ9t҇i=R79y&)(01gI]]D2ҟ{֦rwwRQHt!)YEcV[)RwP_#>3iH<;RR v~RQxncq^$r;< 6oԱuPg8u6 6 6 6 6 6 3؀:É 3؀:o PPPPPw^9&qqx}orԍim_I1) n??֏qU[H3IcR}=23[|Oo>1qKO#R@#; ^T{U{=-u]i{R;iqjq>ڞ"ߘ[6}+@ nF[dh[+0Q˺3Tu={z4hq{4Eh cNv#FD!]9PCj}7EȊDǚc[4fu.z})ohБd㣘lyk$M6YmΦ4fMc٠+gdG=(;j5ɠ؀:cꠎ :6؀:p` : :cꠎ :6؀:cꠎ 6޽o-_l2lV;dk8794l ГH 2u'%@O-᧑NГI#A-v}zڶthjբVoɓiư ГRU!eZz '6Vv{eV&^<+geSxEVj;` zUnhRcj(7RfA9ZFd=r`~B9G$yc#9#a9_pY^D4UZL>uKTZjYNu@2^`F-Lx>0%e@{iZb z?Y{qB|NQ#XA6|byfAiVBf9r0X{``7+{`_g4hjzN(d~SH;iiY;Hdp2hOug}c=r?+lK zx%yeN?+cPI?p>73mXtL`ba8UzbGZ_oUEw8X9DI5=C6(yBzSG?2`n{`9vSVdnSWjQ- z-0BM(U&LKB1p4h%*Ts!%iutX??rK}5DJ*k~G_;yl`p)tAqH5RUJRqCgj&C|=`y!%b z{filmGo(_FzKFQClU=s^ov5s_K=9%<60)bQhLq)h{HG^n=k|PjAO2I~-nQ40mp9$o zmfLeNYWF$cHQ(=5Pv2~1afh$9c!zxbxr;SE9k2iWHo7VreP`Z1TebEtpX!grg>K1N hAP7ko!0@YMNd0x`=;5ykvw&%s!PC{xWt~$(69D-9Zg~Iz literal 0 HcmV?d00001 diff --git a/src/test/kc/examples/tetris/test-sprites.asm b/src/test/kc/examples/tetris/test-sprites.asm new file mode 100644 index 000000000..c5f6c2845 --- /dev/null +++ b/src/test/kc/examples/tetris/test-sprites.asm @@ -0,0 +1,16 @@ + + +.label PLAYFIELD_SPRITES = $3000 + +.pc = PLAYFIELD_SPRITES "PLayfield Sprites" +.var charset = LoadPicture("nes-playfield.png", List().add($010101, $000000)) +.for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte charset.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } +} diff --git a/src/test/kc/examples/tetris/test-sprites.kc b/src/test/kc/examples/tetris/test-sprites.kc new file mode 100644 index 000000000..d2134be2d --- /dev/null +++ b/src/test/kc/examples/tetris/test-sprites.kc @@ -0,0 +1,102 @@ +import "c64" + +byte* PLAYFIELD_SPRITES = $2000; +byte* PLAYFIELD_CHARSET = $1000; +byte* PLAYFIELD_SCREEN = $0400; + +void main() { + init_sprites(); + init_irq(); +} + +// Setup the sprites +void init_sprites() { + vicSelectGfxBank(PLAYFIELD_SCREEN); + *D018 = toD018(PLAYFIELD_SCREEN, PLAYFIELD_CHARSET); + *SPRITES_ENABLE = %00001111; + *SPRITES_EXPAND_X = *SPRITES_EXPAND_Y = *SPRITES_MC = 0; + byte* sprites_ptr = PLAYFIELD_SCREEN+SPRITE_PTRS; + + byte xpos = 24+14*8; + byte ypos = 50; + byte ptr = toSpritePtr(PLAYFIELD_SPRITES); + for(byte s:0..3) { + byte s2 = s<<1; + SPRITES_XPOS[s2] = xpos; + SPRITES_YPOS[s2] = ypos; + SPRITES_COLS[s] = BLACK; + sprites_ptr[s] = ptr; + xpos = xpos+24; + ptr++; + } +} + +// The line of the first IRQ - $30 is 2 lines before the start of the screen +const byte IRQ_RASTER_FIRST = $30; +// The raster line of the next IRQ +volatile byte irq_raster_next = IRQ_RASTER_FIRST; +// Counting the 10 IRQs +volatile byte irq_cnt = 0; +// Y-pos of the sprites on the next IRQ +volatile byte irq_sprite_ypos = 50; + +// Setup the IRQ +void init_irq() { + asm { sei } + // Disable CIA 1 Timer IRQ + *CIA1_INTERRUPT = CIA_INTERRUPT_CLEAR; + // Set raster line + *VIC_CONTROL &=$7f; + *RASTER = IRQ_RASTER_FIRST; + // Enable Raster Interrupt + *IRQ_ENABLE = IRQ_RASTER; + // Set the IRQ routine + *KERNEL_IRQ = &irq; + asm { cli } +} + + +// Raster Interrupt Routine - sets up the sprites covering the playfield +// Repeats 10 timers every 21 lines from line IRQ_RASTER_FIRST +interrupt(kernel_min) void irq() { + + *BORDERCOL = *BGCOL = WHITE; + + // Place the sprites + SPRITES_YPOS[0] = irq_sprite_ypos; + SPRITES_YPOS[2] = irq_sprite_ypos; + SPRITES_YPOS[4] = irq_sprite_ypos; + SPRITES_YPOS[6] = irq_sprite_ypos; + + // Find next raster line / sprite positions + if(++irq_cnt==10) { + irq_cnt = 0; + irq_raster_next = IRQ_RASTER_FIRST; + irq_sprite_ypos = 50; + } else { + irq_raster_next += 21; + irq_sprite_ypos += 21; + } + + // Acknowledge the IRQ and setup the next one + *RASTER = irq_raster_next; + *IRQ_STATUS = IRQ_RASTER; + + *BORDERCOL = BLACK; + *BGCOL = BLUE; + +} + +kickasm(pc PLAYFIELD_SPRITES, resource "nes-playfield.png") {{ + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } +}} \ No newline at end of file diff --git a/src/test/kc/examples/tetris/tetris.kc b/src/test/kc/examples/tetris/tetris.kc index d201454cd..311dbfe0d 100644 --- a/src/test/kc/examples/tetris/tetris.kc +++ b/src/test/kc/examples/tetris/tetris.kc @@ -290,8 +290,9 @@ byte*[PLAYFIELD_LINES+3] screen_lines; // Initialize rendering void render_init() { + *BGCOL = BLACK; // Clear the screen - fill(SCREEN,1000,$a0); + fill(SCREEN,1000,$d0); fill(COLS,1000,BLACK); // Initialize the screen line pointers; byte* li = COLS + 40 + 15; diff --git a/src/test/kc/longbranch-interrupt-problem.kc b/src/test/kc/longbranch-interrupt-problem.kc new file mode 100644 index 000000000..c66873ed5 --- /dev/null +++ b/src/test/kc/longbranch-interrupt-problem.kc @@ -0,0 +1,24 @@ +// Tests that long branch fixing works with interrupt exits (to $ea81) + +const void()** KERNEL_IRQ = $0314; +const byte* BGCOL = $d020; +volatile byte col = 0; + +void main() { + *KERNEL_IRQ = &irq; + while(true) { + if(col>10) { + col = 0; + } + } +} + +interrupt(kernel_min) void irq() { + asm { + lda $dc0d + } + *BGCOL = col; + if(col!=0) { + col++; + } +} diff --git a/src/test/kc/test-interrupt-volatile-write.kc b/src/test/kc/test-interrupt-volatile-write.kc new file mode 100644 index 000000000..71d805c99 --- /dev/null +++ b/src/test/kc/test-interrupt-volatile-write.kc @@ -0,0 +1,27 @@ +// Tests that volatile variables can be both read & written inside & outside interrupts +// Currently fails because the modification is optimized away + +const void()** KERNEL_IRQ = $0314; +const byte* BGCOL = $d020; +volatile byte col = 0; + +void main() { + *KERNEL_IRQ = &irq; + while(true) { + if(col>10) { + col = 0; + } + } +} + +interrupt(kernel_min) void irq() { + asm { + lda $dc0d + } + *BGCOL = col; + if(col!=0) { + col++; + } else { + col += 2; + } +} diff --git a/src/test/ref/bitmap-plotter.cfg b/src/test/ref/bitmap-plotter.cfg index 85d32e8f6..447b3b479 100644 --- a/src/test/ref/bitmap-plotter.cfg +++ b/src/test/ref/bitmap-plotter.cfg @@ -47,78 +47,80 @@ plots::@return: scope:[plots] from plots::@3 plot: scope:[plot] from plots::@1 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 - [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) - [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 - [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) - [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 - [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) - [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 - [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) - [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 + [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 + [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) + [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) + [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 + [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 + [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) + [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 + [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) + [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot - [34] return + [36] return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - [35] phi() + [37] phi() to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [36] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) - [36] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 - [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 - [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 - [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 + [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) + [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) + [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 + [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 + [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 + [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 + [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [43] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) - [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 + [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) + [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 + [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [46] (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/dword/signed dword) 0 ) - [46] (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/dword/signed dword) 0 ) - [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 - [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 - [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 - [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 - [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 + [48] (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/dword/signed dword) 0 ) + [48] (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/dword/signed dword) 0 ) + [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 + [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 + [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 + [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 + [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 + [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [56] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) - [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 + [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) + [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 + [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [59] return + [61] return to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [60] phi() + [62] phi() to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [61] phi() + [63] phi() to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) - [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 + [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) + [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 + [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [66] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) - [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 - [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 + [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) + [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 + [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 + [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [70] return + [72] return to:@return diff --git a/src/test/ref/bitmap-plotter.log b/src/test/ref/bitmap-plotter.log index 0b7d46008..a49688305 100644 --- a/src/test/ref/bitmap-plotter.log +++ b/src/test/ref/bitmap-plotter.log @@ -2,13 +2,19 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) FGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 to:@1 @@ -135,12 +141,16 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) plot::$0 ← > (byte*) plot::plotter_x#0 (byte~) plot::$6 ← *((byte[256]) plot_xhi#0 + (byte) plot::x#1) (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 (byte~) plot::$7 ← *((byte[256]) plot_xlo#0 + (byte) plot::x#1) (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$2 ← > (word) plot::plotter_y#0 (byte~) plot::$8 ← *((byte[256]) plot_yhi#0 + (byte) plot::y#1) (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$3 ← < (word) plot::plotter_y#1 (byte~) plot::$9 ← *((byte[256]) plot_ylo#0 + (byte) plot::y#1) (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 @@ -288,12 +298,18 @@ SYMBOL TABLE SSA (byte) BMM#2 (byte) BMM#3 (byte) BMM#4 +(byte*) COLS +(byte*) COLS#0 +(byte) CSEL +(byte) CSEL#0 (byte*) D011 (byte*) D011#0 (byte*) D011#1 (byte*) D011#2 (byte*) D011#3 (byte*) D011#4 +(byte*) D016 +(byte*) D016#0 (byte*) D018 (byte*) D018#0 (byte*) D018#1 @@ -306,12 +322,16 @@ SYMBOL TABLE SSA (byte) DEN#2 (byte) DEN#3 (byte) DEN#4 +(byte) ECM +(byte) ECM#0 (byte*) FGCOL (byte*) FGCOL#0 (byte*) FGCOL#1 (byte*) FGCOL#2 (byte*) FGCOL#3 (byte*) FGCOL#4 +(byte) MCM +(byte) MCM#0 (byte*) RASTER (byte*) RASTER#0 (byte*) RASTER#1 @@ -330,6 +350,8 @@ SYMBOL TABLE SSA (byte) RSEL#2 (byte) RSEL#3 (byte) RSEL#4 +(byte) RST8 +(byte) RST8#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -425,6 +447,10 @@ SYMBOL TABLE SSA (label) main::@7 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) +(byte~) plot::$0 +(byte~) plot::$1 +(byte~) plot::$2 +(byte~) plot::$3 (byte*~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 @@ -562,13 +588,19 @@ Simple Condition (bool~) init_screen::$1 if((byte*) init_screen::b#1!=(byte*~) i Simple Condition (bool~) init_screen::$3 if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2 Successful SSA optimization Pass2ConditionalJumpSimplification 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 = ((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 = ((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 } @@ -592,6 +624,8 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte) main::$0 = BMM#0|DEN#0 Constant (const word) main::$3 = ((word))SCREEN#0 Constant (const word) main::$5 = ((word))BITMAP#0 +Constant (const byte) plot::$0 = >plot::plotter_x#0 +Constant (const byte) plot::$2 = >plot::plotter_y#0 Constant (const byte) init_plot_tables::$1 = >BITMAP#0 Constant (const byte*) init_screen::b#0 = BITMAP#0 Constant (const byte*) init_screen::$0 = BITMAP#0+8192 @@ -609,6 +643,7 @@ Constant (const byte) main::$8 = ((byte))main::$7 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value init_plot_tables::x#1 ← ++ init_plot_tables::x#2 to ++ @@ -678,15 +713,15 @@ Calls in [plots] to plot:19 Created 9 initial phi equivalence classes Coalesced [23] plots::i#4 ← plots::i#1 -Coalesced [58] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 -Coalesced [63] init_plot_tables::y#5 ← init_plot_tables::y#1 -Coalesced [64] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 -Coalesced (already) [65] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 -Coalesced [66] init_plot_tables::x#5 ← init_plot_tables::x#1 -Coalesced [67] init_plot_tables::bits#5 ← init_plot_tables::bits#4 -Coalesced [68] init_plot_tables::bits#6 ← init_plot_tables::bits#1 -Coalesced [79] init_screen::c#3 ← init_screen::c#1 -Coalesced [80] init_screen::b#3 ← init_screen::b#1 +Coalesced [60] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 +Coalesced [65] init_plot_tables::y#5 ← init_plot_tables::y#1 +Coalesced [66] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 +Coalesced (already) [67] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 +Coalesced [68] init_plot_tables::x#5 ← init_plot_tables::x#1 +Coalesced [69] init_plot_tables::bits#5 ← init_plot_tables::bits#4 +Coalesced [70] init_plot_tables::bits#6 ← init_plot_tables::bits#1 +Coalesced [81] init_screen::c#3 ← init_screen::c#1 +Coalesced [82] init_screen::b#3 ← init_screen::b#1 Coalesced down to 7 phi equivalence classes Culled Empty Block (label) plots::@4 Culled Empty Block (label) init_plot_tables::@5 @@ -754,80 +789,82 @@ plots::@return: scope:[plots] from plots::@3 plot: scope:[plot] from plots::@1 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) [24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6 - [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) - [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 - [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) - [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 - [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) - [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 - [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) - [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 + [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 + [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) + [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) + [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 + [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 + [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) + [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 + [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 + [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) + [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot - [34] return + [36] return to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - [35] phi() + [37] phi() to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [36] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) - [36] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) - [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 - [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 - [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 - [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 - [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 + [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) + [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) + [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 + [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 + [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 + [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 + [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [43] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) - [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 - [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 + [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 ) + [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 + [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [46] (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/dword/signed dword) 0 ) - [46] (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/dword/signed dword) 0 ) - [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 - [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 - [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 - [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 - [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 - [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 + [48] (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/dword/signed dword) 0 ) + [48] (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/dword/signed dword) 0 ) + [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 + [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 + [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 + [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 + [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 + [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [56] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) - [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 - [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 + [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) + [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 + [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [59] return + [61] return to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [60] phi() + [62] phi() to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [61] phi() + [63] phi() to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) - [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 - [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 + [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) + [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 + [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [66] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) - [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 - [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 - [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 + [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) + [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 + [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 + [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [70] return + [72] return to:@return @@ -835,12 +872,18 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL (byte*) BITMAP (byte) BMM +(byte*) COLS +(byte) CSEL (byte*) D011 +(byte*) D016 (byte*) D018 (byte) DEN +(byte) ECM (byte*) FGCOL +(byte) MCM (byte*) RASTER (byte) RSEL +(byte) RST8 (byte*) SCREEN (void()) init_plot_tables() (byte~) init_plot_tables::$0 22.0 @@ -872,6 +915,8 @@ VARIABLE REGISTER WEIGHTS (byte*) init_screen::c#2 16.5 (void()) main() (void()) plot((byte) plot::x , (byte) plot::y) +(byte~) plot::$1 20.0 +(byte~) plot::$3 20.0 (byte~) plot::$5 4.0 (byte~) plot::$6 4.0 (byte~) plot::$7 4.0 @@ -881,14 +926,14 @@ VARIABLE REGISTER WEIGHTS (byte*) plot::plotter#0 3.0 (byte*) plot::plotter_x (byte*) plot::plotter_x#1 2.0 -(byte*) plot::plotter_x#2 0.8 +(byte*) plot::plotter_x#2 0.6666666666666666 (word) plot::plotter_y (word) plot::plotter_y#1 2.0 (word) plot::plotter_y#2 4.0 (byte) plot::x -(byte) plot::x#0 9.727272727272727 +(byte) plot::x#0 8.23076923076923 (byte) plot::y -(byte) plot::y#0 15.000000000000002 +(byte) plot::y#0 11.666666666666664 (byte[256]) plot_bit (byte[256]) plot_xhi (byte[256]) plot_xlo @@ -914,10 +959,12 @@ Added variable plot::x#0 to zero page equivalence class [ plot::x#0 ] Added variable plot::y#0 to zero page equivalence class [ plot::y#0 ] Added variable plot::$6 to zero page equivalence class [ plot::$6 ] Added variable plot::plotter_x#1 to zero page equivalence class [ plot::plotter_x#1 ] +Added variable plot::$1 to zero page equivalence class [ plot::$1 ] Added variable plot::$7 to zero page equivalence class [ plot::$7 ] Added variable plot::plotter_x#2 to zero page equivalence class [ plot::plotter_x#2 ] Added variable plot::$8 to zero page equivalence class [ plot::$8 ] Added variable plot::plotter_y#1 to zero page equivalence class [ plot::plotter_y#1 ] +Added variable plot::$3 to zero page equivalence class [ plot::$3 ] Added variable plot::$9 to zero page equivalence class [ plot::$9 ] Added variable plot::plotter_y#2 to zero page equivalence class [ plot::plotter_y#2 ] Added variable plot::plotter#0 to zero page equivalence class [ plot::plotter#0 ] @@ -940,10 +987,12 @@ Complete equivalence classes [ plot::y#0 ] [ plot::$6 ] [ plot::plotter_x#1 ] +[ plot::$1 ] [ plot::$7 ] [ plot::plotter_x#2 ] [ plot::$8 ] [ plot::plotter_y#1 ] +[ plot::$3 ] [ plot::$9 ] [ plot::plotter_y#2 ] [ plot::plotter#0 ] @@ -965,20 +1014,22 @@ Allocated zp ZP_BYTE:12 [ plot::x#0 ] Allocated zp ZP_BYTE:13 [ plot::y#0 ] Allocated zp ZP_BYTE:14 [ plot::$6 ] Allocated zp ZP_WORD:15 [ plot::plotter_x#1 ] -Allocated zp ZP_BYTE:17 [ plot::$7 ] -Allocated zp ZP_WORD:18 [ plot::plotter_x#2 ] -Allocated zp ZP_BYTE:20 [ plot::$8 ] -Allocated zp ZP_WORD:21 [ plot::plotter_y#1 ] -Allocated zp ZP_BYTE:23 [ plot::$9 ] -Allocated zp ZP_WORD:24 [ plot::plotter_y#2 ] -Allocated zp ZP_WORD:26 [ plot::plotter#0 ] -Allocated zp ZP_BYTE:28 [ plot::$5 ] -Allocated zp ZP_BYTE:29 [ init_plot_tables::$0 ] -Allocated zp ZP_BYTE:30 [ init_plot_tables::$6 ] -Allocated zp ZP_BYTE:31 [ init_plot_tables::$7 ] -Allocated zp ZP_BYTE:32 [ init_plot_tables::$8 ] -Allocated zp ZP_BYTE:33 [ init_plot_tables::$9 ] -Allocated zp ZP_BYTE:34 [ init_plot_tables::$10 ] +Allocated zp ZP_BYTE:17 [ plot::$1 ] +Allocated zp ZP_BYTE:18 [ plot::$7 ] +Allocated zp ZP_WORD:19 [ plot::plotter_x#2 ] +Allocated zp ZP_BYTE:21 [ plot::$8 ] +Allocated zp ZP_WORD:22 [ plot::plotter_y#1 ] +Allocated zp ZP_BYTE:24 [ plot::$3 ] +Allocated zp ZP_BYTE:25 [ plot::$9 ] +Allocated zp ZP_WORD:26 [ plot::plotter_y#2 ] +Allocated zp ZP_WORD:28 [ plot::plotter#0 ] +Allocated zp ZP_BYTE:30 [ plot::$5 ] +Allocated zp ZP_BYTE:31 [ init_plot_tables::$0 ] +Allocated zp ZP_BYTE:32 [ init_plot_tables::$6 ] +Allocated zp ZP_BYTE:33 [ init_plot_tables::$7 ] +Allocated zp ZP_BYTE:34 [ init_plot_tables::$8 ] +Allocated zp ZP_BYTE:35 [ init_plot_tables::$9 ] +Allocated zp ZP_BYTE:36 [ init_plot_tables::$10 ] INITIAL ASM //SEG0 Basic Upstart @@ -1026,7 +1077,7 @@ main: { lda #SCREEN/$40|BITMAP/$400 sta D018 //SEG13 [8] call init_screen - //SEG14 [61] phi from main to init_screen [phi:main->init_screen] + //SEG14 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG15 [9] phi from main to main::@5 [phi:main->main::@5] @@ -1035,7 +1086,7 @@ main: { //SEG16 main::@5 b5: //SEG17 [10] call init_plot_tables - //SEG18 [35] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] init_plot_tables_from_b5: jsr init_plot_tables jmp b2 @@ -1103,18 +1154,20 @@ plots: { } //SEG41 plot plot: { - .label _5 = $1c + .label _1 = $11 + .label _3 = $18 + .label _5 = $1e .label _6 = $e - .label _7 = $11 - .label _8 = $14 - .label _9 = $17 + .label _7 = $12 + .label _8 = $15 + .label _9 = $19 .label x = $c .label y = $d .label plotter_x = $f - .label plotter_x_2 = $12 - .label plotter_y = $15 - .label plotter_y_2 = $18 - .label plotter = $1a + .label plotter_x_2 = $13 + .label plotter_y = $16 + .label plotter_y_2 = $1a + .label plotter = $1c //SEG42 [23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy x lda plot_xhi,y @@ -1124,34 +1177,40 @@ plot: { sta plotter_x+1 lda #<0 sta plotter_x - //SEG44 [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG44 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuz1=_lo_pbuz2 + lda plotter_x + sta _1 + //SEG45 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy x lda plot_xlo,y sta _7 - //SEG45 [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz2_setlo_vbuz3 + //SEG46 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz2_setlo_vbuz3 lda _7 sta plotter_x_2 lda plotter_x+1 sta plotter_x_2+1 - //SEG46 [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG47 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy y lda plot_yhi,y sta _8 - //SEG47 [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuz2 + //SEG48 [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuz2 lda _8 sta plotter_y+1 lda #<0 sta plotter_y - //SEG48 [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG49 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuz1=_lo_vwuz2 + lda plotter_y + sta _3 + //SEG50 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy y lda plot_ylo,y sta _9 - //SEG49 [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz2_setlo_vbuz3 + //SEG51 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz2_setlo_vbuz3 lda _9 sta plotter_y_2 lda plotter_y+1 sta plotter_y_2+1 - //SEG50 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz2_plus_vwuz3 + //SEG52 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz2_plus_vwuz3 lda plotter_x_2 clc adc plotter_y_2 @@ -1159,138 +1218,138 @@ plot: { lda plotter_x_2+1 adc plotter_y_2+1 sta plotter+1 - //SEG51 [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 + //SEG53 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 ldy #0 lda (plotter),y ldy x ora plot_bit,y sta _5 - //SEG52 [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuz2 + //SEG54 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (plotter),y jmp breturn - //SEG53 plot::@return + //SEG55 plot::@return breturn: - //SEG54 [34] return + //SEG56 [36] return rts } -//SEG55 init_plot_tables +//SEG57 init_plot_tables init_plot_tables: { - .label _0 = $1d - .label _6 = $1e - .label _7 = $1f - .label _8 = $20 - .label _9 = $21 - .label _10 = $22 + .label _0 = $1f + .label _6 = $20 + .label _7 = $21 + .label _8 = $22 + .label _9 = $23 + .label _10 = $24 .label bits = 4 .label x = 3 .label y = 5 .label yoffs = 6 - //SEG56 [36] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG58 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG57 [36] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 + //SEG59 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 lda #$80 sta bits - //SEG58 [36] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 + //SEG60 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG59 [36] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG61 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG60 [36] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG61 [36] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG62 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG63 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG62 init_plot_tables::@1 + //SEG64 init_plot_tables::@1 b1: - //SEG63 [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 + //SEG65 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 lda #$f8 and x sta _0 - //SEG64 [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG66 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldy x sta plot_xlo,y - //SEG65 [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG67 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy x lda #>BITMAP sta plot_xhi,y - //SEG66 [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG68 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta plot_bit,y - //SEG67 [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG69 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG68 [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuz1_neq_0_then_la1 + //SEG70 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b10_from_b1 - //SEG69 [43] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG71 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG70 [43] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 + //SEG72 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG71 init_plot_tables::@2 + //SEG73 init_plot_tables::@2 b2: - //SEG72 [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuz1=_inc_vbuz1 + //SEG74 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG73 [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuz1_neq_0_then_la1 + //SEG75 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG74 [46] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG76 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG75 [46] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG77 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG76 [46] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 + //SEG78 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG77 [46] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG79 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG78 [46] 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 - //SEG79 [46] 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 + //SEG80 [48] 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 + //SEG81 [48] 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 jmp b3 - //SEG80 init_plot_tables::@3 + //SEG82 init_plot_tables::@3 b3: - //SEG81 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG83 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _6 - //SEG82 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG84 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG83 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuz1=vbuz2_bor_vbuz3 + //SEG85 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG84 [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG86 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuz1=vbuz2 lda _8 ldy y sta plot_ylo,y - //SEG85 [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG87 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG86 [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG88 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuz1=vbuz2 lda _9 ldy y sta plot_yhi,y - //SEG87 [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG89 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _10 - //SEG88 [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG90 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuz1_neq_vbuc1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 - //SEG89 init_plot_tables::@7 + //SEG91 init_plot_tables::@7 b7: - //SEG90 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG92 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -1298,92 +1357,92 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG91 [56] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG93 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG92 [56] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG94 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG93 init_plot_tables::@4 + //SEG95 init_plot_tables::@4 b4: - //SEG94 [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuz1=_inc_vbuz1 + //SEG96 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG95 [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuz1_neq_0_then_la1 + //SEG97 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG96 init_plot_tables::@return + //SEG98 init_plot_tables::@return breturn: - //SEG97 [59] return + //SEG99 [61] return rts - //SEG98 [60] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG100 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG99 init_plot_tables::@10 + //SEG101 init_plot_tables::@10 b10: - //SEG100 [43] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG102 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG101 [43] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG103 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG102 init_screen +//SEG104 init_screen init_screen: { .label b = 8 .label c = $a - //SEG103 [62] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG105 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG104 [62] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG106 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG105 [62] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG107 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG106 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG108 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG107 init_screen::@1 + //SEG109 init_screen::@1 b1: - //SEG108 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG110 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (b),y - //SEG109 [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG111 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG110 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG112 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG113 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG112 [66] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG114 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG113 [66] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG115 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG114 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG116 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG115 init_screen::@2 + //SEG117 init_screen::@2 b2: - //SEG116 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG118 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 lda #$14 ldy #0 sta (c),y - //SEG117 [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG119 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG118 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG120 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -1391,9 +1450,9 @@ init_screen: { cmp #(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] -Statement [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) BITMAP#0/(word/signed word/dword/signed dword) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::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::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::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:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a -Statement [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y -Statement [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:19 [ plots::i#2 ] ) always clobbers reg byte y -Statement [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a -Statement [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a -Statement [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a +Statement [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) always clobbers reg byte a +Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a +Statement [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a +Statement [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:19 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y +Statement [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:19 [ plots::i#2 ] ) always clobbers reg byte y +Statement [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -1464,68 +1525,74 @@ Potential registers zp ZP_BYTE:12 [ plot::x#0 ] : zp ZP_BYTE:12 , reg byte x , r Potential registers zp ZP_BYTE:13 [ plot::y#0 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:14 [ plot::$6 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:15 [ plot::plotter_x#1 ] : zp ZP_WORD:15 , -Potential registers zp ZP_BYTE:17 [ plot::$7 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:18 [ plot::plotter_x#2 ] : zp ZP_WORD:18 , -Potential registers zp ZP_BYTE:20 [ plot::$8 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:21 [ plot::plotter_y#1 ] : zp ZP_WORD:21 , -Potential registers zp ZP_BYTE:23 [ plot::$9 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:24 [ plot::plotter_y#2 ] : zp ZP_WORD:24 , -Potential registers zp ZP_WORD:26 [ plot::plotter#0 ] : zp ZP_WORD:26 , -Potential registers zp ZP_BYTE:28 [ plot::$5 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ init_plot_tables::$0 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ init_plot_tables::$6 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ init_plot_tables::$7 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:32 [ init_plot_tables::$8 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ init_plot_tables::$9 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ init_plot_tables::$10 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ plot::$1 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:18 [ plot::$7 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:19 [ plot::plotter_x#2 ] : zp ZP_WORD:19 , +Potential registers zp ZP_BYTE:21 [ plot::$8 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:22 [ plot::plotter_y#1 ] : zp ZP_WORD:22 , +Potential registers zp ZP_BYTE:24 [ plot::$3 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ plot::$9 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:26 [ plot::plotter_y#2 ] : zp ZP_WORD:26 , +Potential registers zp ZP_WORD:28 [ plot::plotter#0 ] : zp ZP_WORD:28 , +Potential registers zp ZP_BYTE:30 [ plot::$5 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ init_plot_tables::$0 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ init_plot_tables::$6 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ init_plot_tables::$7 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:34 [ init_plot_tables::$8 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:35 [ init_plot_tables::$9 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:36 [ init_plot_tables::$10 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [plots] 252.5: zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] -Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:29 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:31 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:32 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:33 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:30 [ init_plot_tables::$6 ] +Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:31 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:33 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:35 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:36 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:32 [ init_plot_tables::$6 ] +Uplift Scope [plot] 20: zp ZP_BYTE:17 [ plot::$1 ] 20: zp ZP_BYTE:24 [ plot::$3 ] 11.67: zp ZP_BYTE:13 [ plot::y#0 ] 8.23: zp ZP_BYTE:12 [ plot::x#0 ] 4: zp ZP_BYTE:14 [ plot::$6 ] 4: zp ZP_BYTE:18 [ plot::$7 ] 4: zp ZP_BYTE:21 [ plot::$8 ] 4: zp ZP_BYTE:25 [ plot::$9 ] 4: zp ZP_WORD:26 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:30 [ plot::$5 ] 3: zp ZP_WORD:28 [ plot::plotter#0 ] 2: zp ZP_WORD:15 [ plot::plotter_x#1 ] 2: zp ZP_WORD:22 [ plot::plotter_y#1 ] 0.67: zp ZP_WORD:19 [ plot::plotter_x#2 ] Uplift Scope [init_screen] 33: zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] 33: zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] -Uplift Scope [plot] 15: zp ZP_BYTE:13 [ plot::y#0 ] 9.73: zp ZP_BYTE:12 [ plot::x#0 ] 4: zp ZP_BYTE:14 [ plot::$6 ] 4: zp ZP_BYTE:17 [ plot::$7 ] 4: zp ZP_BYTE:20 [ plot::$8 ] 4: zp ZP_BYTE:23 [ plot::$9 ] 4: zp ZP_WORD:24 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:28 [ plot::$5 ] 3: zp ZP_WORD:26 [ plot::plotter#0 ] 2: zp ZP_WORD:15 [ plot::plotter_x#1 ] 2: zp ZP_WORD:21 [ plot::plotter_y#1 ] 0.8: zp ZP_WORD:18 [ plot::plotter_x#2 ] Uplift Scope [main] Uplift Scope [] -Uplifting [plots] best 8995 combination reg byte x [ plots::i#2 plots::i#1 ] -Uplifting [init_plot_tables] best 8485 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp ZP_BYTE:31 [ init_plot_tables::$7 ] zp ZP_BYTE:32 [ init_plot_tables::$8 ] zp ZP_BYTE:33 [ init_plot_tables::$9 ] zp ZP_BYTE:34 [ init_plot_tables::$10 ] zp ZP_BYTE:30 [ init_plot_tables::$6 ] +Uplifting [plots] best 9007 combination reg byte x [ plots::i#2 plots::i#1 ] +Uplifting [init_plot_tables] best 8497 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp ZP_BYTE:33 [ init_plot_tables::$7 ] zp ZP_BYTE:34 [ init_plot_tables::$8 ] zp ZP_BYTE:35 [ init_plot_tables::$9 ] zp ZP_BYTE:36 [ init_plot_tables::$10 ] zp ZP_BYTE:32 [ init_plot_tables::$6 ] Limited combination testing to 100 combinations of 138240 possible. -Uplifting [init_screen] best 8485 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] -Uplifting [plot] best 8473 combination zp ZP_BYTE:13 [ plot::y#0 ] zp ZP_BYTE:12 [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] zp ZP_BYTE:20 [ plot::$8 ] zp ZP_BYTE:23 [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] zp ZP_BYTE:28 [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ] -Limited combination testing to 100 combinations of 9216 possible. -Uplifting [main] best 8473 combination -Uplifting [] best 8473 combination -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ init_plot_tables::$7 ] -Uplifting [init_plot_tables] best 8413 combination reg byte a [ init_plot_tables::$7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init_plot_tables::$8 ] -Uplifting [init_plot_tables] best 8353 combination reg byte a [ init_plot_tables::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:33 [ init_plot_tables::$9 ] -Uplifting [init_plot_tables] best 8293 combination reg byte a [ init_plot_tables::$9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$10 ] -Uplifting [init_plot_tables] best 8233 combination reg byte a [ init_plot_tables::$10 ] +Uplifting [plot] best 8491 combination reg byte a [ plot::$1 ] reg byte a [ plot::$3 ] zp ZP_BYTE:13 [ plot::y#0 ] zp ZP_BYTE:12 [ plot::x#0 ] zp ZP_BYTE:14 [ plot::$6 ] zp ZP_BYTE:18 [ plot::$7 ] zp ZP_BYTE:21 [ plot::$8 ] zp ZP_BYTE:25 [ plot::$9 ] zp ZP_WORD:26 [ plot::plotter_y#2 ] zp ZP_BYTE:30 [ plot::$5 ] zp ZP_WORD:28 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:22 [ plot::plotter_y#1 ] zp ZP_WORD:19 [ plot::plotter_x#2 ] +Limited combination testing to 100 combinations of 147456 possible. +Uplifting [init_screen] best 8491 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [main] best 8491 combination +Uplifting [] best 8491 combination +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ init_plot_tables::$7 ] +Uplifting [init_plot_tables] best 8431 combination reg byte a [ init_plot_tables::$7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$8 ] +Uplifting [init_plot_tables] best 8371 combination reg byte a [ init_plot_tables::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:35 [ init_plot_tables::$9 ] +Uplifting [init_plot_tables] best 8311 combination reg byte a [ init_plot_tables::$9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:36 [ init_plot_tables::$10 ] +Uplifting [init_plot_tables] best 8251 combination reg byte a [ init_plot_tables::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ plot::y#0 ] -Uplifting [plot] best 8233 combination zp ZP_BYTE:13 [ plot::y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ init_plot_tables::$6 ] -Uplifting [init_plot_tables] best 8233 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ] +Uplifting [plot] best 8251 combination zp ZP_BYTE:13 [ plot::y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 8251 combination zp ZP_BYTE:32 [ init_plot_tables::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ plot::x#0 ] -Uplifting [plot] best 8233 combination zp ZP_BYTE:12 [ plot::x#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:20 [ plot::$8 ] -Uplifting [plot] best 8227 combination reg byte a [ plot::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:23 [ plot::$9 ] -Uplifting [plot] best 8221 combination reg byte a [ plot::$9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:28 [ plot::$5 ] -Uplifting [plot] best 8215 combination reg byte a [ plot::$5 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] with [ zp ZP_WORD:18 [ plot::plotter_x#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:24 [ plot::plotter_y#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_WORD:26 [ plot::plotter#0 ] ] - score: 1 +Uplifting [plot] best 8251 combination zp ZP_BYTE:12 [ plot::x#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:14 [ plot::$6 ] +Uplifting [plot] best 8245 combination reg byte a [ plot::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:18 [ plot::$7 ] +Uplifting [plot] best 8239 combination reg byte a [ plot::$7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ plot::$8 ] +Uplifting [plot] best 8233 combination reg byte a [ plot::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ plot::$9 ] +Uplifting [plot] best 8227 combination reg byte a [ plot::$9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:30 [ plot::$5 ] +Uplifting [plot] best 8221 combination reg byte a [ plot::$5 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] with [ zp ZP_WORD:19 [ plot::plotter_x#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ plot::plotter_y#1 ] ] with [ zp ZP_WORD:26 [ plot::plotter_y#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp ZP_WORD:28 [ plot::plotter#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_WORD:15 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:12 [ plot::x#0 ] ] with [ zp ZP_BYTE:30 [ init_plot_tables::$6 ] ] +Coalescing zero page register [ zp ZP_BYTE:12 [ plot::x#0 ] ] with [ zp ZP_BYTE:32 [ init_plot_tables::$6 ] ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] Allocated (was zp ZP_BYTE:12) zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ] Allocated (was zp ZP_BYTE:13) zp ZP_BYTE:5 [ plot::y#0 ] -Allocated (was zp ZP_WORD:21) zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] +Allocated (was zp ZP_WORD:22) zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1573,7 +1640,7 @@ main: { lda #SCREEN/$40|BITMAP/$400 sta D018 //SEG13 [8] call init_screen - //SEG14 [61] phi from main to init_screen [phi:main->init_screen] + //SEG14 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG15 [9] phi from main to main::@5 [phi:main->main::@5] @@ -1582,7 +1649,7 @@ main: { //SEG16 main::@5 b5: //SEG17 [10] call init_plot_tables - //SEG18 [35] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] init_plot_tables_from_b5: jsr init_plot_tables jmp b2 @@ -1657,24 +1724,28 @@ plot: { sta plotter_x+1 lda #<0 sta plotter_x - //SEG44 [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG44 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuaa=_lo_pbuz1 + lda plotter_x + //SEG45 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy x lda plot_xlo,y - //SEG45 [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa + //SEG46 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG46 [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG47 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_yhi,y - //SEG47 [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa + //SEG48 [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa sta plotter_y+1 lda #<0 sta plotter_y - //SEG48 [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG49 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuaa=_lo_vwuz1 + lda plotter_y + //SEG50 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_ylo,y - //SEG49 [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa + //SEG51 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y - //SEG50 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 + //SEG52 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc plotter_y @@ -1682,109 +1753,109 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //SEG51 [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG53 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter),y ldy x ora plot_bit,y - //SEG52 [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa + //SEG54 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y jmp breturn - //SEG53 plot::@return + //SEG55 plot::@return breturn: - //SEG54 [34] return + //SEG56 [36] return rts } -//SEG55 init_plot_tables +//SEG57 init_plot_tables init_plot_tables: { .label _6 = 4 .label yoffs = 2 - //SEG56 [36] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG58 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG57 [36] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG59 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG58 [36] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG60 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG59 [36] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG61 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG60 [36] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG61 [36] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG62 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG63 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG62 init_plot_tables::@1 + //SEG64 init_plot_tables::@1 b1: - //SEG63 [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG65 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG64 [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG66 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG65 [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG67 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG66 [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG68 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG67 [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG69 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG68 [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 + //SEG70 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 cpy #0 bne b10_from_b1 - //SEG69 [43] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG71 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG70 [43] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG72 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 jmp b2 - //SEG71 init_plot_tables::@2 + //SEG73 init_plot_tables::@2 b2: - //SEG72 [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx + //SEG74 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx inx - //SEG73 [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 + //SEG75 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG74 [46] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG76 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG75 [46] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG77 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG76 [46] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG78 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG77 [46] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG79 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG78 [46] 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 - //SEG79 [46] 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 + //SEG80 [48] 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 + //SEG81 [48] 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 jmp b3 - //SEG80 init_plot_tables::@3 + //SEG82 init_plot_tables::@3 b3: - //SEG81 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG83 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG82 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG84 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG83 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG85 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG84 [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG86 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG85 [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG87 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG86 [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG88 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG87 [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG89 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG88 [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG90 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG89 init_plot_tables::@7 + //SEG91 init_plot_tables::@7 b7: - //SEG90 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG92 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -1792,91 +1863,91 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG91 [56] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG93 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG92 [56] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG94 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG93 init_plot_tables::@4 + //SEG95 init_plot_tables::@4 b4: - //SEG94 [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx + //SEG96 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx inx - //SEG95 [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 + //SEG97 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG96 init_plot_tables::@return + //SEG98 init_plot_tables::@return breturn: - //SEG97 [59] return + //SEG99 [61] return rts - //SEG98 [60] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG100 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG99 init_plot_tables::@10 + //SEG101 init_plot_tables::@10 b10: - //SEG100 [43] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG102 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG101 [43] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG103 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG102 init_screen +//SEG104 init_screen init_screen: { .label b = 2 .label c = 2 - //SEG103 [62] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG105 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG104 [62] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG106 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG105 [62] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG107 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG106 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG108 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG107 init_screen::@1 + //SEG109 init_screen::@1 b1: - //SEG108 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG110 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (b),y - //SEG109 [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG111 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG110 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG112 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG113 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG112 [66] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG114 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG113 [66] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG115 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG114 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG116 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG115 init_screen::@2 + //SEG117 init_screen::@2 b2: - //SEG116 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG118 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 lda #$14 ldy #0 sta (c),y - //SEG117 [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG119 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG118 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG120 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -1884,9 +1955,9 @@ init_screen: { cmp #0 Replacing instruction ldx #0 with TAX @@ -1993,18 +2066,24 @@ FINAL SYMBOL TABLE (const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192 (byte) BMM (const byte) BMM#0 BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) COLS +(byte) CSEL (byte*) D011 (const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D016 (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 (byte) DEN (const byte) DEN#0 DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) ECM (byte*) FGCOL (const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte) MCM (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte) RSEL (const byte) RSEL#0 RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) RST8 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (void()) init_plot_tables() @@ -2051,6 +2130,8 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@7 (void()) plot((byte) plot::x , (byte) plot::y) +(byte~) plot::$1 reg byte a 20.0 +(byte~) plot::$3 reg byte a 20.0 (byte~) plot::$5 reg byte a 4.0 (byte~) plot::$6 reg byte a 4.0 (byte~) plot::$7 reg byte a 4.0 @@ -2061,14 +2142,14 @@ FINAL SYMBOL TABLE (byte*) plot::plotter#0 plotter zp ZP_WORD:2 3.0 (byte*) plot::plotter_x (byte*) plot::plotter_x#1 plotter_x zp ZP_WORD:2 2.0 -(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.8 +(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.6666666666666666 (word) plot::plotter_y (word) plot::plotter_y#1 plotter_y zp ZP_WORD:6 2.0 (word) plot::plotter_y#2 plotter_y zp ZP_WORD:6 4.0 (byte) plot::x -(byte) plot::x#0 x zp ZP_BYTE:4 9.727272727272727 +(byte) plot::x#0 x zp ZP_BYTE:4 8.23076923076923 (byte) plot::y -(byte) plot::y#0 y zp ZP_BYTE:5 15.000000000000002 +(byte) plot::y#0 y zp ZP_BYTE:5 11.666666666666664 (byte[256]) plot_bit (const byte[256]) plot_bit#0 plot_bit = { fill( 256, 0) } (byte[256]) plot_xhi @@ -2101,9 +2182,11 @@ zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tab zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ] zp ZP_BYTE:5 [ plot::y#0 ] reg byte a [ plot::$6 ] +reg byte a [ plot::$1 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ] +reg byte a [ plot::$3 ] reg byte a [ plot::$9 ] reg byte a [ plot::$5 ] reg byte a [ init_plot_tables::$0 ] @@ -2153,12 +2236,12 @@ main: { lda #SCREEN/$40|BITMAP/$400 sta D018 //SEG13 [8] call init_screen - //SEG14 [61] phi from main to init_screen [phi:main->init_screen] + //SEG14 [63] phi from main to init_screen [phi:main->init_screen] jsr init_screen //SEG15 [9] phi from main to main::@5 [phi:main->main::@5] //SEG16 main::@5 //SEG17 [10] call init_plot_tables - //SEG18 [35] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] jsr init_plot_tables //SEG19 main::@2 b2: @@ -2218,22 +2301,24 @@ plot: { sta plotter_x+1 lda #<0 sta plotter_x - //SEG44 [25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG44 [25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1 -- vbuaa=_lo_pbuz1 + //SEG45 [26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0) -- vbuaa=pbuc1_derefidx_vbuz1 lda plot_xlo,y - //SEG45 [26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa + //SEG46 [27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG46 [27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG47 [28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 ldy y lda plot_yhi,y - //SEG47 [28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa + //SEG48 [29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8 -- vwuz1=vbuc1_sethi_vbuaa sta plotter_y+1 lda #<0 sta plotter_y - //SEG48 [29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG49 [30] (byte~) plot::$3 ← < (word) plot::plotter_y#1 -- vbuaa=_lo_vwuz1 + //SEG50 [31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0) -- vbuaa=pbuc1_derefidx_vbuz1 lda plot_ylo,y - //SEG49 [30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa + //SEG51 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y - //SEG50 [31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 + //SEG52 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc plotter_y @@ -2241,94 +2326,94 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //SEG51 [32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG53 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter),y ldy x ora plot_bit,y - //SEG52 [33] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa + //SEG54 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y - //SEG53 plot::@return - //SEG54 [34] return + //SEG55 plot::@return + //SEG56 [36] return rts } -//SEG55 init_plot_tables +//SEG57 init_plot_tables init_plot_tables: { .label _6 = 4 .label yoffs = 2 - //SEG56 [36] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG57 [36] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG58 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG59 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG58 [36] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG60 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG59 [36] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] - //SEG60 [36] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG61 [36] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy - //SEG62 init_plot_tables::@1 + //SEG61 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG62 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG63 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG64 init_plot_tables::@1 b1: - //SEG63 [37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG65 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG64 [38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG66 [40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG65 [39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG67 [41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG66 [40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG68 [42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG67 [41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG69 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG68 [42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 + //SEG70 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10 -- vbuyy_neq_0_then_la1 cpy #0 bne b2 - //SEG69 [43] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG70 [43] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG71 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG72 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 - //SEG71 init_plot_tables::@2 + //SEG73 init_plot_tables::@2 b2: - //SEG72 [44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx + //SEG74 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 -- vbuxx=_inc_vbuxx inx - //SEG73 [45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 + //SEG75 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG74 [46] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG75 [46] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG76 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG77 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs sta yoffs+1 - //SEG76 [46] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG78 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 tax - //SEG77 [46] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] - //SEG78 [46] 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 - //SEG79 [46] 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 - //SEG80 init_plot_tables::@3 + //SEG79 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG80 [48] 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 + //SEG81 [48] 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 + //SEG82 init_plot_tables::@3 b3: - //SEG81 [47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG83 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG82 [48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG84 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG83 [49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG85 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG84 [50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG86 [52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG85 [51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG87 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG86 [52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG88 [54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG87 [53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG89 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG88 [54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG90 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG89 init_plot_tables::@7 - //SEG90 [55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG91 init_plot_tables::@7 + //SEG92 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -2336,81 +2421,81 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG91 [56] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] - //SEG92 [56] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy - //SEG93 init_plot_tables::@4 + //SEG93 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG94 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG95 init_plot_tables::@4 b4: - //SEG94 [57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx + //SEG96 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 -- vbuxx=_inc_vbuxx inx - //SEG95 [58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 + //SEG97 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG96 init_plot_tables::@return - //SEG97 [59] return + //SEG98 init_plot_tables::@return + //SEG99 [61] return rts - //SEG98 [60] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] - //SEG99 init_plot_tables::@10 - //SEG100 [43] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] - //SEG101 [43] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG100 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG101 init_plot_tables::@10 + //SEG102 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG103 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy } -//SEG102 init_screen +//SEG104 init_screen init_screen: { .label b = 2 .label c = 2 - //SEG103 [62] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] - //SEG104 [62] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG105 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG106 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 - //SEG105 [62] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] - //SEG106 [62] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy - //SEG107 init_screen::@1 + //SEG107 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG108 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG109 init_screen::@1 b1: - //SEG108 [63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG110 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (b),y - //SEG109 [64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 + //SEG111 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG110 [65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG112 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1 -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #init_screen::@2] - //SEG112 [66] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG113 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG114 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 - //SEG113 [66] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] - //SEG114 [66] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG115 init_screen::@2 + //SEG115 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG116 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG117 init_screen::@2 b2: - //SEG116 [67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 + //SEG118 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20 -- _deref_pbuz1=vbuc1 lda #$14 ldy #0 sta (c),y - //SEG117 [68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 + //SEG119 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG118 [69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 + //SEG120 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #@8] -b8_from_bbegin: - jmp b8 -//SEG4 @8 -b8: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @8 to @end [phi:@8->@end] -bend_from_b8: +//SEG6 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend //SEG7 @end bend: @@ -2032,15 +2712,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label CHARSET8 = $8000 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -b8_from_bbegin: - jmp b8 -//SEG4 @8 -b8: +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +b9_from_bbegin: + jmp b9 +//SEG4 @9 +b9: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @8 to @end [phi:@8->@end] -bend_from_b8: +//SEG6 [3] phi from @9 to @end [phi:@9->@end] +bend_from_b9: jmp bend //SEG7 @end bend: @@ -2537,7 +3217,7 @@ gfx_init_screen0: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b8 +Removing instruction jmp b9 Removing instruction jmp bend Removing instruction jmp b17 Removing instruction jmp b1 @@ -2576,8 +3256,8 @@ Replacing label b1_from_b7 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 Removing instruction bbegin: -Removing instruction b8_from_bbegin: -Removing instruction bend_from_b8: +Removing instruction b9_from_bbegin: +Removing instruction bend_from_b9: Removing instruction b1_from_b1: Removing instruction b1_from_gfx_init: Removing instruction gfx_init_plane_charset8_from_b1: @@ -2589,7 +3269,7 @@ Removing instruction b1_from_b3: Removing instruction b2_from_b1: Removing instruction b2_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b8: +Removing instruction b9: Removing instruction bend: Removing instruction gfx_init_from_main: Removing instruction b17: @@ -2625,35 +3305,132 @@ Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @8 +(label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 (byte*) CHARSET8 (const byte*) CHARSET8#0 CHARSET8 = ((byte*))(word/dword/signed dword) 32768 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF (const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF (byte) DTV_CHUNKY (const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) 64 +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_LINEAR (const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE (const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760 +(byte[16]) DTV_PALETTE_DEFAULT (byte*) DTV_PLANEA_MODULO_HI (const byte*) DTV_PLANEA_MODULO_HI#0 DTV_PLANEA_MODULO_HI = ((byte*))(word/dword/signed dword) 53305 (byte*) DTV_PLANEA_MODULO_LO @@ -2678,20 +3455,56 @@ FINAL SYMBOL TABLE (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 31744 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 (byte*) VIC_CONTROL2 @@ -2708,6 +3521,9 @@ FINAL SYMBOL TABLE (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (label) dtvSetCpuBankSegment1::@return (byte*) dtvSetCpuBankSegment1::cpuBank @@ -2866,11 +3682,11 @@ Score: 75383 .label SCREEN = $7c00 .label CHARSET8 = $8000 //SEG2 @begin -//SEG3 [1] phi from @begin to @8 [phi:@begin->@8] -//SEG4 @8 +//SEG3 [1] phi from @begin to @9 [phi:@begin->@9] +//SEG4 @9 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @8 to @end [phi:@8->@end] +//SEG6 [3] phi from @9 to @end [phi:@9->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/c64dtv-8bppcharstretch.sym b/src/test/ref/c64dtv-8bppcharstretch.sym index fadfe26b9..a0d88f07a 100644 --- a/src/test/ref/c64dtv-8bppcharstretch.sym +++ b/src/test/ref/c64dtv-8bppcharstretch.sym @@ -1,32 +1,129 @@ -(label) @8 +(label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 (byte*) CHARSET8 (const byte*) CHARSET8#0 CHARSET8 = ((byte*))(word/dword/signed dword) 32768 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF (const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF (byte) DTV_CHUNKY (const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) 64 +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_LINEAR (const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE (const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760 +(byte[16]) DTV_PALETTE_DEFAULT (byte*) DTV_PLANEA_MODULO_HI (const byte*) DTV_PLANEA_MODULO_HI#0 DTV_PLANEA_MODULO_HI = ((byte*))(word/dword/signed dword) 53305 (byte*) DTV_PLANEA_MODULO_LO @@ -51,20 +148,56 @@ (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 31744 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 (byte*) VIC_CONTROL2 @@ -81,6 +214,9 @@ (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (label) dtvSetCpuBankSegment1::@return (byte*) dtvSetCpuBankSegment1::cpuBank diff --git a/src/test/ref/c64dtv-8bppchunkystretch.cfg b/src/test/ref/c64dtv-8bppchunkystretch.cfg index 244738bac..43fc5540a 100644 --- a/src/test/ref/c64dtv-8bppchunkystretch.cfg +++ b/src/test/ref/c64dtv-8bppchunkystretch.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@6 -@6: scope:[] from @begin + to:@7 +@7: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 [3] phi() -main: scope:[main] from @6 +main: scope:[main] from @7 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 diff --git a/src/test/ref/c64dtv-8bppchunkystretch.log b/src/test/ref/c64dtv-8bppchunkystretch.log index fb95da49e..55d85605e 100644 --- a/src/test/ref/c64dtv-8bppchunkystretch.log +++ b/src/test/ref/c64dtv-8bppchunkystretch.log @@ -5,37 +5,116 @@ CONTROL FLOW GRAPH SSA (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 - to:@3 -@3: scope:[] from @begin + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_FEATURE_DISABLE_TIL_RESET#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 (byte) DTV_LINEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BORDER_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_HIGHCOLOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_OVERSCAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) DTV_COLORRAM_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) DTV_BADLINE_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) DTV_CHUNKY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte*) DTV_PALETTE#0 ← ((byte*)) (word/dword/signed dword) 53760 + (byte[16]) DTV_PALETTE_DEFAULT#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 54, (byte/word/signed word/dword/signed dword) 190, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 255, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 59, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 154, (byte/signed byte/word/signed word/dword/signed dword) 10 } + (byte*) DTV_PLANEA_START_LO#0 ← ((byte*)) (word/dword/signed dword) 53306 + (byte*) DTV_PLANEA_START_MI#0 ← ((byte*)) (word/dword/signed dword) 53307 + (byte*) DTV_PLANEA_START_HI#0 ← ((byte*)) (word/dword/signed dword) 53317 + (byte*) DTV_PLANEA_STEP#0 ← ((byte*)) (word/dword/signed dword) 53318 + (byte*) DTV_PLANEA_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53304 + (byte*) DTV_PLANEA_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53305 (byte*) DTV_PLANEB_START_LO#0 ← ((byte*)) (word/dword/signed dword) 53321 (byte*) DTV_PLANEB_START_MI#0 ← ((byte*)) (word/dword/signed dword) 53322 (byte*) DTV_PLANEB_START_HI#0 ← ((byte*)) (word/dword/signed dword) 53323 (byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) 53324 (byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53319 (byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53320 - to:@4 + (byte*) DTV_SPRITE_BANK#0 ← ((byte*)) (word/dword/signed dword) 53325 + (byte*) DTV_COLOR_BANK_LO#0 ← ((byte*)) (word/dword/signed dword) 53302 + (byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) 53303 + (dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) 120832 + (byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) 53309 + (byte*) DTV_GRAPHICS_HICOL_BANK#0 ← ((byte*)) (word/dword/signed dword) 53310 + to:@5 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_chunky gfx_init_chunky::@4 gfx_init_chunky::@6 (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 ← phi( gfx_init_chunky/(byte) dtvSetCpuBankSegment1::cpuBankIdx#0 gfx_init_chunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_chunky::@6/(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ) (byte*) dtvSetCpuBankSegment1::cpuBank#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 @@ -45,10 +124,74 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_chunky gfx_i dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@4: scope:[] from @3 +@5: scope:[] from @4 + (byte*) DTV_BLITTER_SRCA_LO#0 ← ((byte*)) (word/dword/signed dword) 54048 + (byte*) DTV_BLITTER_SRCA_MI#0 ← ((byte*)) (word/dword/signed dword) 54049 + (byte*) DTV_BLITTER_SRCA_HI#0 ← ((byte*)) (word/dword/signed dword) 54050 + (byte*) DTV_BLITTER_SRCA_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54051 + (byte*) DTV_BLITTER_SRCA_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54052 + (byte*) DTV_BLITTER_SRCA_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54053 + (byte*) DTV_BLITTER_SRCA_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54054 + (byte*) DTV_BLITTER_SRCA_STEP#0 ← ((byte*)) (word/dword/signed dword) 54055 + (byte*) DTV_BLITTER_SRCB_LO#0 ← ((byte*)) (word/dword/signed dword) 54056 + (byte*) DTV_BLITTER_SRCB_MI#0 ← ((byte*)) (word/dword/signed dword) 54057 + (byte*) DTV_BLITTER_SRCB_HI#0 ← ((byte*)) (word/dword/signed dword) 54058 + (byte*) DTV_BLITTER_SRCB_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54059 + (byte*) DTV_BLITTER_SRCB_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54060 + (byte*) DTV_BLITTER_SRCB_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54061 + (byte*) DTV_BLITTER_SRCB_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54062 + (byte*) DTV_BLITTER_SRCB_STEP#0 ← ((byte*)) (word/dword/signed dword) 54063 + (byte*) DTV_BLITTER_DEST_LO#0 ← ((byte*)) (word/dword/signed dword) 54064 + (byte*) DTV_BLITTER_DEST_MI#0 ← ((byte*)) (word/dword/signed dword) 54065 + (byte*) DTV_BLITTER_DEST_HI#0 ← ((byte*)) (word/dword/signed dword) 54066 + (byte*) DTV_BLITTER_DEST_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54067 + (byte*) DTV_BLITTER_DEST_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54068 + (byte*) DTV_BLITTER_DEST_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54069 + (byte*) DTV_BLITTER_DEST_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54070 + (byte*) DTV_BLITTER_DEST_STEP#0 ← ((byte*)) (word/dword/signed dword) 54071 + (byte*) DTV_BLITTER_LEN_LO#0 ← ((byte*)) (word/dword/signed dword) 54072 + (byte*) DTV_BLITTER_LEN_HI#0 ← ((byte*)) (word/dword/signed dword) 54073 + (byte*) DTV_BLITTER_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 54074 + (byte) DTV_BLIT_FORCE_START#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_VIC_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_CIA_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_VBLANK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) DTV_BLIT_IRQ_EN#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte*) DTV_BLITTER_TRANSPARANCY#0 ← ((byte*)) (word/dword/signed dword) 54075 + (byte) DTV_BLIT_DISABLE_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_WRITE_TRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_TRANSPARANCY_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) 54078 + (byte) DTV_BLIT_SHIFT0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_SHIFT1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SHIFT2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SHIFT3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) DTV_BLIT_SHIFT4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_SHIFT5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) DTV_BLIT_SHIFT6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) DTV_BLIT_SHIFT7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) DTV_BLIT_AND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_NAND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_NOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_OR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) DTV_BLIT_XOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_XNOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) DTV_BLIT_SUB#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 54079 + (byte) DTV_BLIT_CLEAR_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_STATUS_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) CHUNKY#0 ← ((byte*)) (word/dword/signed dword) 32768 - to:@6 -main: scope:[main] from @6 + to:@7 +main: scope:[main] from @7 asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -214,46 +357,252 @@ gfx_init_chunky::@9: scope:[gfx_init_chunky] from gfx_init_chunky::@6 gfx_init_chunky::@return: scope:[gfx_init_chunky] from gfx_init_chunky::@9 return to:@return -@6: scope:[] from @4 +@7: scope:[] from @5 call main - to:@7 -@7: scope:[] from @6 + to:@8 +@8: scope:[] from @7 to:@end -@end: scope:[] from @7 +@end: scope:[] from @8 SYMBOL TABLE SSA -(label) @3 (label) @4 -(label) @6 +(label) @5 (label) @7 +(label) @8 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 (byte*) CHUNKY (byte*) CHUNKY#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A#0 (byte*) CIA2_PORT_A_DDR (byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) DTV_BADLINE_OFF (byte) DTV_BADLINE_OFF#0 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_ALU#0 +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL#0 +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_CONTROL2#0 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LIN_LO#0 +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_LO#0 +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MI#0 +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_HI#0 +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_MOD_LO#0 +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_DEST_STEP#0 +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_HI#0 +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_LEN_LO#0 +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LIN_LO#0 +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_LO#0 +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MI#0 +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_HI#0 +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_MOD_LO#0 +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCA_STEP#0 +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LIN_LO#0 +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_LO#0 +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MI#0 +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_HI#0 +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_MOD_LO#0 +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_SRCB_STEP#0 +(byte*) DTV_BLITTER_TRANSPARANCY +(byte*) DTV_BLITTER_TRANSPARANCY#0 +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_ADD#0 +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_AND#0 +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CIA_IRQ#0 +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_CLEAR_IRQ#0 +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_CONT#0 +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DEST_FWD#0 +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_DISABLE_B#0 +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_FORCE_START#0 +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_IRQ_EN#0 +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NAND#0 +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_NOR#0 +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_OR#0 +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT0#0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT1#0 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT2#0 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT3#0 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT4#0 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT5#0 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT6#0 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SHIFT7#0 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_CONT#0 +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCA_FWD#0 +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_CONT#0 +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_SRCB_FWD#0 +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_BUSY#0 +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_STATUS_IRQ#0 +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_SUB#0 +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_TRANSPARANCY_NONE#0 +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VBLANK#0 +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_VIC_IRQ#0 +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT#0 +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XNOR#0 +(byte) DTV_BLIT_XOR +(byte) DTV_BLIT_XOR#0 +(byte) DTV_BORDER_OFF +(byte) DTV_BORDER_OFF#0 (byte) DTV_CHUNKY (byte) DTV_CHUNKY#0 (byte) DTV_COLORRAM_OFF (byte) DTV_COLORRAM_OFF#0 +(dword) DTV_COLOR_BANK_DEFAULT +(dword) DTV_COLOR_BANK_DEFAULT#0 +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_HI#0 +(byte*) DTV_COLOR_BANK_LO +(byte*) DTV_COLOR_BANK_LO#0 (byte*) DTV_CONTROL (byte*) DTV_CONTROL#0 (byte*) DTV_FEATURE (byte*) DTV_FEATURE#0 +(byte) DTV_FEATURE_DISABLE_TIL_RESET +(byte) DTV_FEATURE_DISABLE_TIL_RESET#0 (byte) DTV_FEATURE_ENABLE (byte) DTV_FEATURE_ENABLE#0 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_HICOL_BANK#0 +(byte*) DTV_GRAPHICS_VIC_BANK +(byte*) DTV_GRAPHICS_VIC_BANK#0 (byte) DTV_HIGHCOLOR (byte) DTV_HIGHCOLOR#0 (byte) DTV_LINEAR (byte) DTV_LINEAR#0 +(byte) DTV_OVERSCAN +(byte) DTV_OVERSCAN#0 (byte*) DTV_PALETTE (byte*) DTV_PALETTE#0 +(byte[16]) DTV_PALETTE_DEFAULT +(byte[16]) DTV_PALETTE_DEFAULT#0 +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_HI#0 +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_MODULO_LO#0 +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_HI#0 +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_LO#0 +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_START_MI#0 +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEA_STEP#0 (byte*) DTV_PLANEB_MODULO_HI (byte*) DTV_PLANEB_MODULO_HI#0 (byte*) DTV_PLANEB_MODULO_LO @@ -266,16 +615,90 @@ SYMBOL TABLE SSA (byte*) DTV_PLANEB_START_MI#0 (byte*) DTV_PLANEB_STEP (byte*) DTV_PLANEB_STEP#0 +(byte*) DTV_SPRITE_BANK +(byte*) DTV_SPRITE_BANK#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 (byte*) PROCPORT_DDR (byte*) PROCPORT_DDR#0 (byte) PROCPORT_DDR_MEMORY_MASK (byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 (byte) PROCPORT_RAM_IO (byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 (byte*) VIC_CONTROL (byte*) VIC_CONTROL#0 (byte*) VIC_CONTROL2 @@ -292,6 +715,12 @@ SYMBOL TABLE SSA (byte*) VIC_MEMORY#0 (byte) VIC_RSEL (byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (label) dtvSetCpuBankSegment1::@return (byte*) dtvSetCpuBankSegment1::cpuBank @@ -414,7 +843,7 @@ SYMBOL TABLE SSA (byte) main::rst#3 Culled Empty Block (label) gfx_init_chunky::@9 -Culled Empty Block (label) @7 +Culled Empty Block (label) @8 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) gfx_init_chunky::$4 ← (byte*) gfx_init_chunky::gfxb#3 != (word/dword/signed dword) 32768 from (bool~) gfx_init_chunky::$3 ← (byte*) gfx_init_chunky::gfxb#3 == (word/dword/signed dword) 32768 Successful SSA optimization Pass2UnaryNotSimplification @@ -448,35 +877,178 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 Constant (const byte) VIC_DEN#0 = 16 Constant (const byte) VIC_RSEL#0 = 8 Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 Constant (const byte) VIC_MCM#0 = 16 Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) DTV_FEATURE#0 = ((byte*))53311 Constant (const byte) DTV_FEATURE_ENABLE#0 = 1 +Constant (const byte) DTV_FEATURE_DISABLE_TIL_RESET#0 = 2 Constant (const byte*) DTV_CONTROL#0 = ((byte*))53308 Constant (const byte) DTV_LINEAR#0 = 1 +Constant (const byte) DTV_BORDER_OFF#0 = 2 Constant (const byte) DTV_HIGHCOLOR#0 = 4 +Constant (const byte) DTV_OVERSCAN#0 = 8 Constant (const byte) DTV_COLORRAM_OFF#0 = 16 Constant (const byte) DTV_BADLINE_OFF#0 = 32 Constant (const byte) DTV_CHUNKY#0 = 64 Constant (const byte*) DTV_PALETTE#0 = ((byte*))53760 +Constant (const byte[16]) DTV_PALETTE_DEFAULT#0 = { 0, 15, 54, 190, 88, 219, 134, 255, 41, 38, 59, 5, 7, 223, 154, 10 } +Constant (const byte*) DTV_PLANEA_START_LO#0 = ((byte*))53306 +Constant (const byte*) DTV_PLANEA_START_MI#0 = ((byte*))53307 +Constant (const byte*) DTV_PLANEA_START_HI#0 = ((byte*))53317 +Constant (const byte*) DTV_PLANEA_STEP#0 = ((byte*))53318 +Constant (const byte*) DTV_PLANEA_MODULO_LO#0 = ((byte*))53304 +Constant (const byte*) DTV_PLANEA_MODULO_HI#0 = ((byte*))53305 Constant (const byte*) DTV_PLANEB_START_LO#0 = ((byte*))53321 Constant (const byte*) DTV_PLANEB_START_MI#0 = ((byte*))53322 Constant (const byte*) DTV_PLANEB_START_HI#0 = ((byte*))53323 Constant (const byte*) DTV_PLANEB_STEP#0 = ((byte*))53324 Constant (const byte*) DTV_PLANEB_MODULO_LO#0 = ((byte*))53319 Constant (const byte*) DTV_PLANEB_MODULO_HI#0 = ((byte*))53320 +Constant (const byte*) DTV_SPRITE_BANK#0 = ((byte*))53325 +Constant (const byte*) DTV_COLOR_BANK_LO#0 = ((byte*))53302 +Constant (const byte*) DTV_COLOR_BANK_HI#0 = ((byte*))53303 +Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = 120832 +Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))53309 +Constant (const byte*) DTV_GRAPHICS_HICOL_BANK#0 = ((byte*))53310 Constant (const byte*) dtvSetCpuBankSegment1::cpuBank#0 = ((byte*))255 +Constant (const byte*) DTV_BLITTER_SRCA_LO#0 = ((byte*))54048 +Constant (const byte*) DTV_BLITTER_SRCA_MI#0 = ((byte*))54049 +Constant (const byte*) DTV_BLITTER_SRCA_HI#0 = ((byte*))54050 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_LO#0 = ((byte*))54051 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_HI#0 = ((byte*))54052 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_LO#0 = ((byte*))54053 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_HI#0 = ((byte*))54054 +Constant (const byte*) DTV_BLITTER_SRCA_STEP#0 = ((byte*))54055 +Constant (const byte*) DTV_BLITTER_SRCB_LO#0 = ((byte*))54056 +Constant (const byte*) DTV_BLITTER_SRCB_MI#0 = ((byte*))54057 +Constant (const byte*) DTV_BLITTER_SRCB_HI#0 = ((byte*))54058 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_LO#0 = ((byte*))54059 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_HI#0 = ((byte*))54060 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_LO#0 = ((byte*))54061 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_HI#0 = ((byte*))54062 +Constant (const byte*) DTV_BLITTER_SRCB_STEP#0 = ((byte*))54063 +Constant (const byte*) DTV_BLITTER_DEST_LO#0 = ((byte*))54064 +Constant (const byte*) DTV_BLITTER_DEST_MI#0 = ((byte*))54065 +Constant (const byte*) DTV_BLITTER_DEST_HI#0 = ((byte*))54066 +Constant (const byte*) DTV_BLITTER_DEST_MOD_LO#0 = ((byte*))54067 +Constant (const byte*) DTV_BLITTER_DEST_MOD_HI#0 = ((byte*))54068 +Constant (const byte*) DTV_BLITTER_DEST_LIN_LO#0 = ((byte*))54069 +Constant (const byte*) DTV_BLITTER_DEST_LIN_HI#0 = ((byte*))54070 +Constant (const byte*) DTV_BLITTER_DEST_STEP#0 = ((byte*))54071 +Constant (const byte*) DTV_BLITTER_LEN_LO#0 = ((byte*))54072 +Constant (const byte*) DTV_BLITTER_LEN_HI#0 = ((byte*))54073 +Constant (const byte*) DTV_BLITTER_CONTROL#0 = ((byte*))54074 +Constant (const byte) DTV_BLIT_FORCE_START#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_FWD#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_FWD#0 = 4 +Constant (const byte) DTV_BLIT_DEST_FWD#0 = 8 +Constant (const byte) DTV_BLIT_VIC_IRQ#0 = 16 +Constant (const byte) DTV_BLIT_CIA_IRQ#0 = 32 +Constant (const byte) DTV_BLIT_VBLANK#0 = 64 +Constant (const byte) DTV_BLIT_IRQ_EN#0 = 128 +Constant (const byte*) DTV_BLITTER_TRANSPARANCY#0 = ((byte*))54075 +Constant (const byte) DTV_BLIT_DISABLE_B#0 = 1 +Constant (const byte) DTV_BLIT_WRITE_TRANSPARENT#0 = 2 +Constant (const byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 = 4 +Constant (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 = 0 +Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))54078 +Constant (const byte) DTV_BLIT_SHIFT0#0 = 0 +Constant (const byte) DTV_BLIT_SHIFT1#0 = 1 +Constant (const byte) DTV_BLIT_SHIFT2#0 = 2 +Constant (const byte) DTV_BLIT_SHIFT3#0 = 3 +Constant (const byte) DTV_BLIT_SHIFT4#0 = 4 +Constant (const byte) DTV_BLIT_SHIFT5#0 = 5 +Constant (const byte) DTV_BLIT_SHIFT6#0 = 6 +Constant (const byte) DTV_BLIT_SHIFT7#0 = 7 +Constant (const byte) DTV_BLIT_AND#0 = 0 +Constant (const byte) DTV_BLIT_NAND#0 = 8 +Constant (const byte) DTV_BLIT_NOR#0 = 16 +Constant (const byte) DTV_BLIT_OR#0 = 24 +Constant (const byte) DTV_BLIT_XOR#0 = 32 +Constant (const byte) DTV_BLIT_XNOR#0 = 40 +Constant (const byte) DTV_BLIT_ADD#0 = 48 +Constant (const byte) DTV_BLIT_SUB#0 = 56 +Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))54079 +Constant (const byte) DTV_BLIT_CLEAR_IRQ#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_CONT#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_CONT#0 = 4 +Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8 +Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1 +Constant (const byte) DTV_BLIT_STATUS_IRQ#0 = 2 Constant (const byte*) CHUNKY#0 = ((byte*))32768 Constant (const byte) main::j#0 = 0 Constant (const byte) main::rst#0 = 66 @@ -526,6 +1098,7 @@ Constant (const byte) main::$23 = main::$18|main::$22 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@3 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value main::j#1 ← ++ main::j#2 to ++ @@ -534,8 +1107,8 @@ Resolved ranged next value gfx_init_chunky::x#1 ← ++ gfx_init_chunky::x#2 to + Resolved ranged comparison value if(gfx_init_chunky::x#1!=rangelast(0,319)) goto gfx_init_chunky::@2 to (word/signed word/dword/signed dword) 320 Resolved ranged next value gfx_init_chunky::y#1 ← ++ gfx_init_chunky::y#6 to ++ Resolved ranged comparison value if(gfx_init_chunky::y#1!=rangelast(0,50)) goto gfx_init_chunky::@1 to (byte/signed byte/word/signed word/dword/signed dword) 51 -Culled Empty Block (label) @3 Culled Empty Block (label) @4 +Culled Empty Block (label) @5 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@6 Culled Empty Block (label) gfx_init_chunky::@7 @@ -596,7 +1169,7 @@ Added new block during phi lifting gfx_init_chunky::@10(between gfx_init_chunky: Added new block during phi lifting gfx_init_chunky::@11(between gfx_init_chunky::@3 and gfx_init_chunky::@2) Added new block during phi lifting gfx_init_chunky::@12(between gfx_init_chunky::@2 and gfx_init_chunky::@3) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @6 +Adding NOP phi() at start of @7 Adding NOP phi() at start of @end Adding NOP phi() at start of gfx_init_chunky Adding NOP phi() at start of gfx_init_chunky::@6 @@ -625,7 +1198,7 @@ Culled Empty Block (label) gfx_init_chunky::@10 Culled Empty Block (label) gfx_init_chunky::@11 Culled Empty Block (label) gfx_init_chunky::@12 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @6 +Adding NOP phi() at start of @7 Adding NOP phi() at start of @end Adding NOP phi() at start of gfx_init_chunky Adding NOP phi() at start of gfx_init_chunky::@6 @@ -633,14 +1206,14 @@ Adding NOP phi() at start of gfx_init_chunky::@6 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@6 -@6: scope:[] from @begin + to:@7 +@7: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 [3] phi() -main: scope:[main] from @6 +main: scope:[main] from @7 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -742,30 +1315,170 @@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBan VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN (byte*) CHUNKY +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF (byte) DTV_CHUNKY (byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (byte*) DTV_FEATURE +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (byte) DTV_LINEAR +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP (byte*) DTV_PLANEB_MODULO_HI (byte*) DTV_PLANEB_MODULO_LO (byte*) DTV_PLANEB_START_HI (byte*) DTV_PLANEB_START_LO (byte*) DTV_PLANEB_START_MI (byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (byte*) VIC_CONTROL2 (byte) VIC_CSEL @@ -774,6 +1487,9 @@ VARIABLE REGISTER WEIGHTS (byte) VIC_MCM (byte*) VIC_MEMORY (byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (byte*) dtvSetCpuBankSegment1::cpuBank (byte) dtvSetCpuBankSegment1::cpuBankIdx @@ -888,15 +1604,15 @@ INITIAL ASM .label CHUNKY = $8000 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG6 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG7 @end bend: @@ -1413,15 +2129,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label CHUNKY = $8000 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG6 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG7 @end bend: @@ -1778,7 +2494,7 @@ dtvSetCpuBankSegment1: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp bend Removing instruction jmp b17 Removing instruction jmp b1 @@ -1806,8 +2522,8 @@ Replacing label b2_from_b3 with b2 Replacing label b2_from_b3 with b2 Replacing label b1_from_b5 with b1 Removing instruction bbegin: -Removing instruction b6_from_bbegin: -Removing instruction bend_from_b6: +Removing instruction b7_from_bbegin: +Removing instruction bend_from_b7: Removing instruction b1_from_b1: Removing instruction b1_from_b5: Removing instruction b2_from_b1: @@ -1816,7 +2532,7 @@ Removing instruction b3_from_b2: Removing instruction b6_from_b5: Removing instruction dtvSetCpuBankSegment1_from_b6: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b6: +Removing instruction b7: Removing instruction bend: Removing instruction gfx_init_chunky_from_main: Removing instruction b17: @@ -1840,35 +2556,138 @@ Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @6 +(label) @7 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CHUNKY (const byte*) CHUNKY#0 CHUNKY = ((byte*))(word/dword/signed dword) 32768 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF (const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF (byte) DTV_CHUNKY (const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) DTV_COLORRAM_OFF (const byte) DTV_COLORRAM_OFF#0 DTV_COLORRAM_OFF = (byte/signed byte/word/signed word/dword/signed dword) 16 +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_LINEAR (const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE (const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760 +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP (byte*) DTV_PLANEB_MODULO_HI (const byte*) DTV_PLANEB_MODULO_HI#0 DTV_PLANEB_MODULO_HI = ((byte*))(word/dword/signed dword) 53320 (byte*) DTV_PLANEB_MODULO_LO @@ -1881,16 +2700,53 @@ FINAL SYMBOL TABLE (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 (byte*) VIC_CONTROL2 @@ -1907,6 +2763,9 @@ FINAL SYMBOL TABLE (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (label) dtvSetCpuBankSegment1::@return (byte*) dtvSetCpuBankSegment1::cpuBank @@ -2013,11 +2872,11 @@ Score: 19888 .label DTV_PLANEB_MODULO_HI = $d048 .label CHUNKY = $8000 //SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 @7 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG6 [3] phi from @7 to @end [phi:@7->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/c64dtv-8bppchunkystretch.sym b/src/test/ref/c64dtv-8bppchunkystretch.sym index d5ff06ec9..4ecb8b533 100644 --- a/src/test/ref/c64dtv-8bppchunkystretch.sym +++ b/src/test/ref/c64dtv-8bppchunkystretch.sym @@ -1,32 +1,135 @@ -(label) @6 +(label) @7 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CHUNKY (const byte*) CHUNKY#0 CHUNKY = ((byte*))(word/dword/signed dword) 32768 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF (const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF (byte) DTV_CHUNKY (const byte) DTV_CHUNKY#0 DTV_CHUNKY = (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) DTV_COLORRAM_OFF (const byte) DTV_COLORRAM_OFF#0 DTV_COLORRAM_OFF = (byte/signed byte/word/signed word/dword/signed dword) 16 +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_LINEAR (const byte) DTV_LINEAR#0 DTV_LINEAR = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE (const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760 +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP (byte*) DTV_PLANEB_MODULO_HI (const byte*) DTV_PLANEB_MODULO_HI#0 DTV_PLANEB_MODULO_HI = ((byte*))(word/dword/signed dword) 53320 (byte*) DTV_PLANEB_MODULO_LO @@ -39,16 +142,53 @@ (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 (byte*) VIC_CONTROL2 @@ -65,6 +205,9 @@ (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) dtvSetCpuBankSegment1((byte) dtvSetCpuBankSegment1::cpuBankIdx) (label) dtvSetCpuBankSegment1::@return (byte*) dtvSetCpuBankSegment1::cpuBank diff --git a/src/test/ref/c64dtv-blittermin.cfg b/src/test/ref/c64dtv-blittermin.cfg index acaf0ff77..ba08a30e1 100644 --- a/src/test/ref/c64dtv-blittermin.cfg +++ b/src/test/ref/c64dtv-blittermin.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [3] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 diff --git a/src/test/ref/c64dtv-blittermin.log b/src/test/ref/c64dtv-blittermin.log index ccb1788bb..f61324675 100644 --- a/src/test/ref/c64dtv-blittermin.log +++ b/src/test/ref/c64dtv-blittermin.log @@ -2,12 +2,120 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@3 -@3: scope:[] from @begin + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@4 -@4: scope:[] from @3 + (byte) DTV_FEATURE_DISABLE_TIL_RESET#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 + (byte) DTV_LINEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BORDER_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_HIGHCOLOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_OVERSCAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_COLORRAM_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BADLINE_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_CHUNKY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte*) DTV_PALETTE#0 ← ((byte*)) (word/dword/signed dword) 53760 + (byte[16]) DTV_PALETTE_DEFAULT#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 54, (byte/word/signed word/dword/signed dword) 190, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 255, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 59, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 154, (byte/signed byte/word/signed word/dword/signed dword) 10 } + (byte*) DTV_PLANEA_START_LO#0 ← ((byte*)) (word/dword/signed dword) 53306 + (byte*) DTV_PLANEA_START_MI#0 ← ((byte*)) (word/dword/signed dword) 53307 + (byte*) DTV_PLANEA_START_HI#0 ← ((byte*)) (word/dword/signed dword) 53317 + (byte*) DTV_PLANEA_STEP#0 ← ((byte*)) (word/dword/signed dword) 53318 + (byte*) DTV_PLANEA_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53304 + (byte*) DTV_PLANEA_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53305 + (byte*) DTV_PLANEB_START_LO#0 ← ((byte*)) (word/dword/signed dword) 53321 + (byte*) DTV_PLANEB_START_MI#0 ← ((byte*)) (word/dword/signed dword) 53322 + (byte*) DTV_PLANEB_START_HI#0 ← ((byte*)) (word/dword/signed dword) 53323 + (byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) 53324 + (byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53319 + (byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53320 + (byte*) DTV_SPRITE_BANK#0 ← ((byte*)) (word/dword/signed dword) 53325 + (byte*) DTV_COLOR_BANK_LO#0 ← ((byte*)) (word/dword/signed dword) 53302 + (byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) 53303 + (dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) 120832 + (byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) 53309 + (byte*) DTV_GRAPHICS_HICOL_BANK#0 ← ((byte*)) (word/dword/signed dword) 53310 + to:@5 +@5: scope:[] from @4 (byte*) DTV_BLITTER_SRCA_LO#0 ← ((byte*)) (word/dword/signed dword) 54048 (byte*) DTV_BLITTER_SRCA_MI#0 ← ((byte*)) (word/dword/signed dword) 54049 (byte*) DTV_BLITTER_SRCA_HI#0 ← ((byte*)) (word/dword/signed dword) 54050 @@ -39,21 +147,46 @@ CONTROL FLOW GRAPH SSA (byte) DTV_BLIT_SRCA_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_BLIT_SRCB_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_BLIT_DEST_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_VIC_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_CIA_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_VBLANK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) DTV_BLIT_IRQ_EN#0 ← (byte/word/signed word/dword/signed dword) 128 (byte*) DTV_BLITTER_TRANSPARANCY#0 ← ((byte*)) (word/dword/signed dword) 54075 + (byte) DTV_BLIT_DISABLE_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_WRITE_TRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_BLIT_TRANSPARANCY_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) 54078 + (byte) DTV_BLIT_SHIFT0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_SHIFT1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SHIFT2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SHIFT3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) DTV_BLIT_SHIFT4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_SHIFT5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) DTV_BLIT_SHIFT6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) DTV_BLIT_SHIFT7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) DTV_BLIT_AND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_NAND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_NOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_OR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) DTV_BLIT_XOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_XNOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 (byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) DTV_BLIT_SUB#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 (byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 54079 (byte) DTV_BLIT_CLEAR_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_STATUS_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte[]) SRCA#0 ← { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' } (byte) SRCA_LEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 (byte[]) SRCB#0 ← { (byte/word/signed word/dword/signed dword) 128 } - to:@5 -main: scope:[main] from @5 - (byte*) DTV_BLITTER_ALU#1 ← phi( @5/(byte*) DTV_BLITTER_ALU#2 ) + to:@6 +main: scope:[main] from @6 + (byte*) DTV_BLITTER_ALU#1 ← phi( @6/(byte*) DTV_BLITTER_ALU#2 ) *((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0 *((byte*) DTV_BLITTER_CONTROL2#0) ← (byte) DTV_BLIT_CLEAR_IRQ#0 (byte~) main::$0 ← < (byte[]) SRCA#0 @@ -125,21 +258,77 @@ main::@3: scope:[main] from main::@2 main::@return: scope:[main] from main::@3 return to:@return -@5: scope:[] from @4 - (byte*) DTV_BLITTER_ALU#2 ← phi( @4/(byte*) DTV_BLITTER_ALU#0 ) - call main - to:@6 @6: scope:[] from @5 + (byte*) DTV_BLITTER_ALU#2 ← phi( @5/(byte*) DTV_BLITTER_ALU#0 ) + call main + to:@7 +@7: scope:[] from @6 to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 SYMBOL TABLE SSA -(label) @3 (label) @4 (label) @5 (label) @6 +(label) @7 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) DTV_BADLINE_OFF +(byte) DTV_BADLINE_OFF#0 (byte*) DTV_BLITTER_ALU (byte*) DTV_BLITTER_ALU#0 (byte*) DTV_BLITTER_ALU#1 @@ -204,34 +393,244 @@ SYMBOL TABLE SSA (byte*) DTV_BLITTER_TRANSPARANCY#0 (byte) DTV_BLIT_ADD (byte) DTV_BLIT_ADD#0 +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_AND#0 +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CIA_IRQ#0 (byte) DTV_BLIT_CLEAR_IRQ (byte) DTV_BLIT_CLEAR_IRQ#0 (byte) DTV_BLIT_DEST_CONT (byte) DTV_BLIT_DEST_CONT#0 (byte) DTV_BLIT_DEST_FWD (byte) DTV_BLIT_DEST_FWD#0 +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_DISABLE_B#0 (byte) DTV_BLIT_FORCE_START (byte) DTV_BLIT_FORCE_START#0 +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_IRQ_EN#0 +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NAND#0 +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_NOR#0 +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_OR#0 +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT0#0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT1#0 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT2#0 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT3#0 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT4#0 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT5#0 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT6#0 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SHIFT7#0 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_CONT#0 (byte) DTV_BLIT_SRCA_FWD (byte) DTV_BLIT_SRCA_FWD#0 +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_CONT#0 (byte) DTV_BLIT_SRCB_FWD (byte) DTV_BLIT_SRCB_FWD#0 (byte) DTV_BLIT_STATUS_BUSY (byte) DTV_BLIT_STATUS_BUSY#0 +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_STATUS_IRQ#0 +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_SUB#0 (byte) DTV_BLIT_TRANSPARANCY_NONE (byte) DTV_BLIT_TRANSPARANCY_NONE#0 +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VBLANK#0 +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_VIC_IRQ#0 +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT#0 +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XNOR#0 +(byte) DTV_BLIT_XOR +(byte) DTV_BLIT_XOR#0 +(byte) DTV_BORDER_OFF +(byte) DTV_BORDER_OFF#0 +(byte) DTV_CHUNKY +(byte) DTV_CHUNKY#0 +(byte) DTV_COLORRAM_OFF +(byte) DTV_COLORRAM_OFF#0 +(dword) DTV_COLOR_BANK_DEFAULT +(dword) DTV_COLOR_BANK_DEFAULT#0 +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_HI#0 +(byte*) DTV_COLOR_BANK_LO +(byte*) DTV_COLOR_BANK_LO#0 +(byte*) DTV_CONTROL +(byte*) DTV_CONTROL#0 (byte*) DTV_FEATURE (byte*) DTV_FEATURE#0 +(byte) DTV_FEATURE_DISABLE_TIL_RESET +(byte) DTV_FEATURE_DISABLE_TIL_RESET#0 (byte) DTV_FEATURE_ENABLE (byte) DTV_FEATURE_ENABLE#0 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_HICOL_BANK#0 +(byte*) DTV_GRAPHICS_VIC_BANK +(byte*) DTV_GRAPHICS_VIC_BANK#0 +(byte) DTV_HIGHCOLOR +(byte) DTV_HIGHCOLOR#0 +(byte) DTV_LINEAR +(byte) DTV_LINEAR#0 +(byte) DTV_OVERSCAN +(byte) DTV_OVERSCAN#0 +(byte*) DTV_PALETTE +(byte*) DTV_PALETTE#0 +(byte[16]) DTV_PALETTE_DEFAULT +(byte[16]) DTV_PALETTE_DEFAULT#0 +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_HI#0 +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_MODULO_LO#0 +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_HI#0 +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_LO#0 +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_START_MI#0 +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEA_STEP#0 +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_HI#0 +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_MODULO_LO#0 +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_HI#0 +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_LO#0 +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_START_MI#0 +(byte*) DTV_PLANEB_STEP +(byte*) DTV_PLANEB_STEP#0 +(byte*) DTV_SPRITE_BANK +(byte*) DTV_SPRITE_BANK#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 +(byte*) RASTER +(byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 (byte[]) SRCA (byte[]) SRCA#0 (byte) SRCA_LEN (byte) SRCA_LEN#0 (byte[]) SRCB (byte[]) SRCB#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) main() (byte~) main::$0 (byte~) main::$1 @@ -265,7 +664,7 @@ SYMBOL TABLE SSA (byte) main::r#3 (byte) main::r#4 -Culled Empty Block (label) @6 +Culled Empty Block (label) @7 Successful SSA optimization Pass2CullEmptyBlocks Alias (byte) main::r#1 = (byte) main::r#4 Alias (byte) main::r#2 = (byte) main::r#3 @@ -278,8 +677,116 @@ Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$16 if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 Simple Condition (bool~) main::$20 if((byte) main::r#1!=rangelast(0,7)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) DTV_FEATURE#0 = ((byte*))53311 Constant (const byte) DTV_FEATURE_ENABLE#0 = 1 +Constant (const byte) DTV_FEATURE_DISABLE_TIL_RESET#0 = 2 +Constant (const byte*) DTV_CONTROL#0 = ((byte*))53308 +Constant (const byte) DTV_LINEAR#0 = 1 +Constant (const byte) DTV_BORDER_OFF#0 = 2 +Constant (const byte) DTV_HIGHCOLOR#0 = 4 +Constant (const byte) DTV_OVERSCAN#0 = 8 +Constant (const byte) DTV_COLORRAM_OFF#0 = 16 +Constant (const byte) DTV_BADLINE_OFF#0 = 32 +Constant (const byte) DTV_CHUNKY#0 = 64 +Constant (const byte*) DTV_PALETTE#0 = ((byte*))53760 +Constant (const byte[16]) DTV_PALETTE_DEFAULT#0 = { 0, 15, 54, 190, 88, 219, 134, 255, 41, 38, 59, 5, 7, 223, 154, 10 } +Constant (const byte*) DTV_PLANEA_START_LO#0 = ((byte*))53306 +Constant (const byte*) DTV_PLANEA_START_MI#0 = ((byte*))53307 +Constant (const byte*) DTV_PLANEA_START_HI#0 = ((byte*))53317 +Constant (const byte*) DTV_PLANEA_STEP#0 = ((byte*))53318 +Constant (const byte*) DTV_PLANEA_MODULO_LO#0 = ((byte*))53304 +Constant (const byte*) DTV_PLANEA_MODULO_HI#0 = ((byte*))53305 +Constant (const byte*) DTV_PLANEB_START_LO#0 = ((byte*))53321 +Constant (const byte*) DTV_PLANEB_START_MI#0 = ((byte*))53322 +Constant (const byte*) DTV_PLANEB_START_HI#0 = ((byte*))53323 +Constant (const byte*) DTV_PLANEB_STEP#0 = ((byte*))53324 +Constant (const byte*) DTV_PLANEB_MODULO_LO#0 = ((byte*))53319 +Constant (const byte*) DTV_PLANEB_MODULO_HI#0 = ((byte*))53320 +Constant (const byte*) DTV_SPRITE_BANK#0 = ((byte*))53325 +Constant (const byte*) DTV_COLOR_BANK_LO#0 = ((byte*))53302 +Constant (const byte*) DTV_COLOR_BANK_HI#0 = ((byte*))53303 +Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = 120832 +Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))53309 +Constant (const byte*) DTV_GRAPHICS_HICOL_BANK#0 = ((byte*))53310 Constant (const byte*) DTV_BLITTER_SRCA_LO#0 = ((byte*))54048 Constant (const byte*) DTV_BLITTER_SRCA_MI#0 = ((byte*))54049 Constant (const byte*) DTV_BLITTER_SRCA_HI#0 = ((byte*))54050 @@ -311,14 +818,39 @@ Constant (const byte) DTV_BLIT_FORCE_START#0 = 1 Constant (const byte) DTV_BLIT_SRCA_FWD#0 = 2 Constant (const byte) DTV_BLIT_SRCB_FWD#0 = 4 Constant (const byte) DTV_BLIT_DEST_FWD#0 = 8 +Constant (const byte) DTV_BLIT_VIC_IRQ#0 = 16 +Constant (const byte) DTV_BLIT_CIA_IRQ#0 = 32 +Constant (const byte) DTV_BLIT_VBLANK#0 = 64 +Constant (const byte) DTV_BLIT_IRQ_EN#0 = 128 Constant (const byte*) DTV_BLITTER_TRANSPARANCY#0 = ((byte*))54075 +Constant (const byte) DTV_BLIT_DISABLE_B#0 = 1 +Constant (const byte) DTV_BLIT_WRITE_TRANSPARENT#0 = 2 +Constant (const byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 = 4 Constant (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 = 0 Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))54078 +Constant (const byte) DTV_BLIT_SHIFT0#0 = 0 +Constant (const byte) DTV_BLIT_SHIFT1#0 = 1 +Constant (const byte) DTV_BLIT_SHIFT2#0 = 2 +Constant (const byte) DTV_BLIT_SHIFT3#0 = 3 +Constant (const byte) DTV_BLIT_SHIFT4#0 = 4 +Constant (const byte) DTV_BLIT_SHIFT5#0 = 5 +Constant (const byte) DTV_BLIT_SHIFT6#0 = 6 +Constant (const byte) DTV_BLIT_SHIFT7#0 = 7 +Constant (const byte) DTV_BLIT_AND#0 = 0 +Constant (const byte) DTV_BLIT_NAND#0 = 8 +Constant (const byte) DTV_BLIT_NOR#0 = 16 +Constant (const byte) DTV_BLIT_OR#0 = 24 +Constant (const byte) DTV_BLIT_XOR#0 = 32 +Constant (const byte) DTV_BLIT_XNOR#0 = 40 Constant (const byte) DTV_BLIT_ADD#0 = 48 +Constant (const byte) DTV_BLIT_SUB#0 = 56 Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))54079 Constant (const byte) DTV_BLIT_CLEAR_IRQ#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_CONT#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_CONT#0 = 4 Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8 Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1 +Constant (const byte) DTV_BLIT_STATUS_IRQ#0 = 2 Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte[]) SRCA#0 = { 'c', 'a', 'm', 'e', 'l', 'o', 't', '!', ' ' } Constant (const byte) SRCA_LEN#0 = 9 @@ -346,10 +878,11 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte) main::$14 = main::$13|DTV_BLIT_DEST_FWD#0 Constant (const byte) main::$19 = main::$18|DTV_BLIT_DEST_FWD#0 Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars Resolved ranged next value main::r#1 ← ++ main::r#2 to ++ Resolved ranged comparison value if(main::r#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8 -Culled Empty Block (label) @3 Culled Empty Block (label) @4 +Culled Empty Block (label) @5 Culled Empty Block (label) main::@1 Successful SSA optimization Pass2CullEmptyBlocks Inlining constant with var siblings (const byte) main::r#0 @@ -375,7 +908,7 @@ Constant inlined main::$8 = <(const byte*) SCREEN#0 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting main::@5(between main::@3 and main::@2) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end CALL GRAPH Calls in [] to main:2 @@ -385,20 +918,20 @@ Coalesced [43] main::r#5 ← main::r#1 Coalesced down to 1 phi equivalence classes Culled Empty Block (label) main::@5 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [3] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 [4] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [5] *((const byte*) DTV_BLITTER_CONTROL2#0) ← (const byte) DTV_BLIT_CLEAR_IRQ#0 [6] *((const byte*) DTV_BLITTER_SRCA_LO#0) ← <(const byte[]) SRCA#0 @@ -448,6 +981,34 @@ main::@return: scope:[main] from main::@3 VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF (byte*) DTV_BLITTER_ALU (byte*) DTV_BLITTER_CONTROL (byte*) DTV_BLITTER_CONTROL2 @@ -479,20 +1040,125 @@ VARIABLE REGISTER WEIGHTS (byte*) DTV_BLITTER_SRCB_STEP (byte*) DTV_BLITTER_TRANSPARANCY (byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ (byte) DTV_BLIT_CLEAR_IRQ (byte) DTV_BLIT_DEST_CONT (byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B (byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT (byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT (byte) DTV_BLIT_SRCB_FWD (byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB (byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF +(byte) DTV_CHUNKY +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO +(byte*) DTV_CONTROL (byte*) DTV_FEATURE +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK +(byte) DTV_HIGHCOLOR +(byte) DTV_LINEAR +(byte) DTV_OVERSCAN +(byte*) DTV_PALETTE +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte[]) SRCA (byte) SRCA_LEN (byte[]) SRCB +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (byte~) main::$15 202.0 (byte) main::r @@ -559,15 +1225,15 @@ INITIAL ASM .const SRCA_LEN = 9 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -846,15 +1512,15 @@ ASSEMBLER BEFORE OPTIMIZATION .const SRCA_LEN = 9 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -997,7 +1663,7 @@ main: { SRCB: .byte $80 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b5 +Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -1012,11 +1678,11 @@ Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b2_from_b3 with b2 Removing instruction bbegin: -Removing instruction b5_from_bbegin: -Removing instruction bend_from_b5: +Removing instruction b6_from_bbegin: +Removing instruction bend_from_b6: Removing instruction b2_from_b3: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b5: +Removing instruction b6: Removing instruction bend: Removing instruction b2_from_main: Removing instruction b3: @@ -1034,9 +1700,37 @@ Removing instruction jmp b2 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @5 +(label) @6 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF (byte*) DTV_BLITTER_ALU (const byte*) DTV_BLITTER_ALU#0 DTV_BLITTER_ALU = ((byte*))(word/dword/signed dword) 54078 (byte*) DTV_BLITTER_CONTROL @@ -1099,34 +1793,139 @@ FINAL SYMBOL TABLE (const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) 54075 (byte) DTV_BLIT_ADD (const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) 48 +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ (byte) DTV_BLIT_CLEAR_IRQ (const byte) DTV_BLIT_CLEAR_IRQ#0 DTV_BLIT_CLEAR_IRQ = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_BLIT_DEST_CONT (const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) DTV_BLIT_DEST_FWD (const byte) DTV_BLIT_DEST_FWD#0 DTV_BLIT_DEST_FWD = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) DTV_BLIT_DISABLE_B (byte) DTV_BLIT_FORCE_START (const byte) DTV_BLIT_FORCE_START#0 DTV_BLIT_FORCE_START = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT (byte) DTV_BLIT_SRCA_FWD (const byte) DTV_BLIT_SRCA_FWD#0 DTV_BLIT_SRCA_FWD = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) DTV_BLIT_SRCB_CONT (byte) DTV_BLIT_SRCB_FWD (const byte) DTV_BLIT_SRCB_FWD#0 DTV_BLIT_SRCB_FWD = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_BLIT_STATUS_BUSY (const byte) DTV_BLIT_STATUS_BUSY#0 DTV_BLIT_STATUS_BUSY = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB (byte) DTV_BLIT_TRANSPARANCY_NONE (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 DTV_BLIT_TRANSPARANCY_NONE = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF +(byte) DTV_CHUNKY +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO +(byte*) DTV_CONTROL (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK +(byte) DTV_HIGHCOLOR +(byte) DTV_LINEAR +(byte) DTV_OVERSCAN +(byte*) DTV_PALETTE +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte[]) SRCA (const byte[]) SRCA#0 SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' } (byte) SRCA_LEN (const byte) SRCA_LEN#0 SRCA_LEN = (byte/signed byte/word/signed word/dword/signed dword) 9 (byte[]) SRCB (const byte[]) SRCB#0 SRCB = { (byte/word/signed word/dword/signed dword) 128 } +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (byte~) main::$15 reg byte a 202.0 (label) main::@2 @@ -1192,11 +1991,11 @@ Score: 1567 .label SCREEN = $400 .const SRCA_LEN = 9 //SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 @6 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG6 [3] phi from @6 to @end [phi:@6->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/c64dtv-blittermin.sym b/src/test/ref/c64dtv-blittermin.sym index 5cc3a7bd1..8e719e45e 100644 --- a/src/test/ref/c64dtv-blittermin.sym +++ b/src/test/ref/c64dtv-blittermin.sym @@ -1,6 +1,34 @@ -(label) @5 +(label) @6 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF (byte*) DTV_BLITTER_ALU (const byte*) DTV_BLITTER_ALU#0 DTV_BLITTER_ALU = ((byte*))(word/dword/signed dword) 54078 (byte*) DTV_BLITTER_CONTROL @@ -63,34 +91,139 @@ (const byte*) DTV_BLITTER_TRANSPARANCY#0 DTV_BLITTER_TRANSPARANCY = ((byte*))(word/dword/signed dword) 54075 (byte) DTV_BLIT_ADD (const byte) DTV_BLIT_ADD#0 DTV_BLIT_ADD = (byte/signed byte/word/signed word/dword/signed dword) 48 +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ (byte) DTV_BLIT_CLEAR_IRQ (const byte) DTV_BLIT_CLEAR_IRQ#0 DTV_BLIT_CLEAR_IRQ = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_BLIT_DEST_CONT (const byte) DTV_BLIT_DEST_CONT#0 DTV_BLIT_DEST_CONT = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) DTV_BLIT_DEST_FWD (const byte) DTV_BLIT_DEST_FWD#0 DTV_BLIT_DEST_FWD = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) DTV_BLIT_DISABLE_B (byte) DTV_BLIT_FORCE_START (const byte) DTV_BLIT_FORCE_START#0 DTV_BLIT_FORCE_START = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT (byte) DTV_BLIT_SRCA_FWD (const byte) DTV_BLIT_SRCA_FWD#0 DTV_BLIT_SRCA_FWD = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) DTV_BLIT_SRCB_CONT (byte) DTV_BLIT_SRCB_FWD (const byte) DTV_BLIT_SRCB_FWD#0 DTV_BLIT_SRCB_FWD = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_BLIT_STATUS_BUSY (const byte) DTV_BLIT_STATUS_BUSY#0 DTV_BLIT_STATUS_BUSY = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB (byte) DTV_BLIT_TRANSPARANCY_NONE (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 DTV_BLIT_TRANSPARANCY_NONE = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR +(byte) DTV_BORDER_OFF +(byte) DTV_CHUNKY +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO +(byte*) DTV_CONTROL (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK +(byte) DTV_HIGHCOLOR +(byte) DTV_LINEAR +(byte) DTV_OVERSCAN +(byte*) DTV_PALETTE +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte[]) SRCA (const byte[]) SRCA#0 SRCA = { (byte) 'c', (byte) 'a', (byte) 'm', (byte) 'e', (byte) 'l', (byte) 'o', (byte) 't', (byte) '!', (byte) ' ' } (byte) SRCA_LEN (const byte) SRCA_LEN#0 SRCA_LEN = (byte/signed byte/word/signed word/dword/signed dword) 9 (byte[]) SRCB (const byte[]) SRCB#0 SRCB = { (byte/word/signed word/dword/signed dword) 128 } +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (byte~) main::$15 reg byte a 202.0 (label) main::@2 diff --git a/src/test/ref/c64dtv-color.cfg b/src/test/ref/c64dtv-color.cfg index 4e74a067a..94696dce4 100644 --- a/src/test/ref/c64dtv-color.cfg +++ b/src/test/ref/c64dtv-color.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [3] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 asm { sei } [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 diff --git a/src/test/ref/c64dtv-color.log b/src/test/ref/c64dtv-color.log index 501bf7e21..4c6380aee 100644 --- a/src/test/ref/c64dtv-color.log +++ b/src/test/ref/c64dtv-color.log @@ -2,19 +2,186 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 - to:@3 -@3: scope:[] from @begin + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_FEATURE_DISABLE_TIL_RESET#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 + (byte) DTV_LINEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_BORDER_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_HIGHCOLOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_OVERSCAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_COLORRAM_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) DTV_BADLINE_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_CHUNKY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte*) DTV_PALETTE#0 ← ((byte*)) (word/dword/signed dword) 53760 + (byte[16]) DTV_PALETTE_DEFAULT#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 54, (byte/word/signed word/dword/signed dword) 190, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 255, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 59, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 154, (byte/signed byte/word/signed word/dword/signed dword) 10 } + (byte*) DTV_PLANEA_START_LO#0 ← ((byte*)) (word/dword/signed dword) 53306 + (byte*) DTV_PLANEA_START_MI#0 ← ((byte*)) (word/dword/signed dword) 53307 + (byte*) DTV_PLANEA_START_HI#0 ← ((byte*)) (word/dword/signed dword) 53317 + (byte*) DTV_PLANEA_STEP#0 ← ((byte*)) (word/dword/signed dword) 53318 + (byte*) DTV_PLANEA_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53304 + (byte*) DTV_PLANEA_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53305 + (byte*) DTV_PLANEB_START_LO#0 ← ((byte*)) (word/dword/signed dword) 53321 + (byte*) DTV_PLANEB_START_MI#0 ← ((byte*)) (word/dword/signed dword) 53322 + (byte*) DTV_PLANEB_START_HI#0 ← ((byte*)) (word/dword/signed dword) 53323 + (byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) 53324 + (byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53319 + (byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53320 + (byte*) DTV_SPRITE_BANK#0 ← ((byte*)) (word/dword/signed dword) 53325 + (byte*) DTV_COLOR_BANK_LO#0 ← ((byte*)) (word/dword/signed dword) 53302 + (byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) 53303 + (dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) 120832 + (byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) 53309 + (byte*) DTV_GRAPHICS_HICOL_BANK#0 ← ((byte*)) (word/dword/signed dword) 53310 to:@5 -main: scope:[main] from @5 +@5: scope:[] from @4 + (byte*) DTV_BLITTER_SRCA_LO#0 ← ((byte*)) (word/dword/signed dword) 54048 + (byte*) DTV_BLITTER_SRCA_MI#0 ← ((byte*)) (word/dword/signed dword) 54049 + (byte*) DTV_BLITTER_SRCA_HI#0 ← ((byte*)) (word/dword/signed dword) 54050 + (byte*) DTV_BLITTER_SRCA_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54051 + (byte*) DTV_BLITTER_SRCA_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54052 + (byte*) DTV_BLITTER_SRCA_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54053 + (byte*) DTV_BLITTER_SRCA_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54054 + (byte*) DTV_BLITTER_SRCA_STEP#0 ← ((byte*)) (word/dword/signed dword) 54055 + (byte*) DTV_BLITTER_SRCB_LO#0 ← ((byte*)) (word/dword/signed dword) 54056 + (byte*) DTV_BLITTER_SRCB_MI#0 ← ((byte*)) (word/dword/signed dword) 54057 + (byte*) DTV_BLITTER_SRCB_HI#0 ← ((byte*)) (word/dword/signed dword) 54058 + (byte*) DTV_BLITTER_SRCB_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54059 + (byte*) DTV_BLITTER_SRCB_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54060 + (byte*) DTV_BLITTER_SRCB_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54061 + (byte*) DTV_BLITTER_SRCB_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54062 + (byte*) DTV_BLITTER_SRCB_STEP#0 ← ((byte*)) (word/dword/signed dword) 54063 + (byte*) DTV_BLITTER_DEST_LO#0 ← ((byte*)) (word/dword/signed dword) 54064 + (byte*) DTV_BLITTER_DEST_MI#0 ← ((byte*)) (word/dword/signed dword) 54065 + (byte*) DTV_BLITTER_DEST_HI#0 ← ((byte*)) (word/dword/signed dword) 54066 + (byte*) DTV_BLITTER_DEST_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54067 + (byte*) DTV_BLITTER_DEST_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54068 + (byte*) DTV_BLITTER_DEST_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54069 + (byte*) DTV_BLITTER_DEST_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54070 + (byte*) DTV_BLITTER_DEST_STEP#0 ← ((byte*)) (word/dword/signed dword) 54071 + (byte*) DTV_BLITTER_LEN_LO#0 ← ((byte*)) (word/dword/signed dword) 54072 + (byte*) DTV_BLITTER_LEN_HI#0 ← ((byte*)) (word/dword/signed dword) 54073 + (byte*) DTV_BLITTER_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 54074 + (byte) DTV_BLIT_FORCE_START#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_VIC_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_CIA_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_VBLANK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) DTV_BLIT_IRQ_EN#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte*) DTV_BLITTER_TRANSPARANCY#0 ← ((byte*)) (word/dword/signed dword) 54075 + (byte) DTV_BLIT_DISABLE_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_WRITE_TRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_TRANSPARANCY_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) 54078 + (byte) DTV_BLIT_SHIFT0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_SHIFT1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SHIFT2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SHIFT3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) DTV_BLIT_SHIFT4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_SHIFT5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) DTV_BLIT_SHIFT6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) DTV_BLIT_SHIFT7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) DTV_BLIT_AND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_NAND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_NOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_OR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) DTV_BLIT_XOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_XNOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) DTV_BLIT_SUB#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 54079 + (byte) DTV_BLIT_CLEAR_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_STATUS_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + to:@6 +main: scope:[main] from @6 asm { sei } *((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0 (byte~) main::$0 ← (byte) DTV_HIGHCOLOR#0 | (byte) DTV_BORDER_OFF#0 @@ -59,37 +226,368 @@ main::@8: scope:[main] from main::@14 main::@8 main::@return: scope:[main] from main::@1 return to:@return -@5: scope:[] from @3 - call main - to:@6 @6: scope:[] from @5 + call main + to:@7 +@7: scope:[] from @6 to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 SYMBOL TABLE SSA -(label) @3 +(label) @4 (label) @5 (label) @6 +(label) @7 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) DTV_BADLINE_OFF (byte) DTV_BADLINE_OFF#0 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_ALU#0 +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL#0 +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_CONTROL2#0 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LIN_LO#0 +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_LO#0 +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MI#0 +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_HI#0 +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_MOD_LO#0 +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_DEST_STEP#0 +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_HI#0 +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_LEN_LO#0 +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LIN_LO#0 +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_LO#0 +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MI#0 +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_HI#0 +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_MOD_LO#0 +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCA_STEP#0 +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LIN_LO#0 +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_LO#0 +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MI#0 +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_HI#0 +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_MOD_LO#0 +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_SRCB_STEP#0 +(byte*) DTV_BLITTER_TRANSPARANCY +(byte*) DTV_BLITTER_TRANSPARANCY#0 +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_ADD#0 +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_AND#0 +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CIA_IRQ#0 +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_CLEAR_IRQ#0 +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_CONT#0 +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DEST_FWD#0 +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_DISABLE_B#0 +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_FORCE_START#0 +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_IRQ_EN#0 +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NAND#0 +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_NOR#0 +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_OR#0 +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT0#0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT1#0 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT2#0 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT3#0 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT4#0 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT5#0 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT6#0 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SHIFT7#0 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_CONT#0 +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCA_FWD#0 +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_CONT#0 +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_SRCB_FWD#0 +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_BUSY#0 +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_STATUS_IRQ#0 +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_SUB#0 +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_TRANSPARANCY_NONE#0 +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VBLANK#0 +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_VIC_IRQ#0 +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT#0 +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XNOR#0 +(byte) DTV_BLIT_XOR +(byte) DTV_BLIT_XOR#0 (byte) DTV_BORDER_OFF (byte) DTV_BORDER_OFF#0 +(byte) DTV_CHUNKY +(byte) DTV_CHUNKY#0 +(byte) DTV_COLORRAM_OFF +(byte) DTV_COLORRAM_OFF#0 +(dword) DTV_COLOR_BANK_DEFAULT +(dword) DTV_COLOR_BANK_DEFAULT#0 +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_HI#0 +(byte*) DTV_COLOR_BANK_LO +(byte*) DTV_COLOR_BANK_LO#0 (byte*) DTV_CONTROL (byte*) DTV_CONTROL#0 (byte*) DTV_FEATURE (byte*) DTV_FEATURE#0 +(byte) DTV_FEATURE_DISABLE_TIL_RESET +(byte) DTV_FEATURE_DISABLE_TIL_RESET#0 (byte) DTV_FEATURE_ENABLE (byte) DTV_FEATURE_ENABLE#0 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_HICOL_BANK#0 +(byte*) DTV_GRAPHICS_VIC_BANK +(byte*) DTV_GRAPHICS_VIC_BANK#0 (byte) DTV_HIGHCOLOR (byte) DTV_HIGHCOLOR#0 +(byte) DTV_LINEAR +(byte) DTV_LINEAR#0 +(byte) DTV_OVERSCAN +(byte) DTV_OVERSCAN#0 (byte*) DTV_PALETTE (byte*) DTV_PALETTE#0 +(byte[16]) DTV_PALETTE_DEFAULT +(byte[16]) DTV_PALETTE_DEFAULT#0 +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_HI#0 +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_MODULO_LO#0 +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_HI#0 +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_LO#0 +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_START_MI#0 +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEA_STEP#0 +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_HI#0 +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_MODULO_LO#0 +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_HI#0 +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_LO#0 +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_START_MI#0 +(byte*) DTV_PLANEB_STEP +(byte*) DTV_PLANEB_STEP#0 +(byte*) DTV_SPRITE_BANK +(byte*) DTV_SPRITE_BANK#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) main() (byte~) main::$0 (byte~) main::$1 @@ -118,21 +616,186 @@ SYMBOL TABLE SSA Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 -Culled Empty Block (label) @6 +Culled Empty Block (label) @7 Successful SSA optimization Pass2CullEmptyBlocks Simple Condition (bool~) main::$2 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 64) goto main::@4 Simple Condition (bool~) main::$3 if((byte) main::r#1!=rangelast(49,255)) goto main::@7 Simple Condition (bool~) main::$4 if((byte) main::c#1!=rangelast(0,15)) goto main::@8 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) DTV_FEATURE#0 = ((byte*))53311 Constant (const byte) DTV_FEATURE_ENABLE#0 = 1 +Constant (const byte) DTV_FEATURE_DISABLE_TIL_RESET#0 = 2 Constant (const byte*) DTV_CONTROL#0 = ((byte*))53308 +Constant (const byte) DTV_LINEAR#0 = 1 Constant (const byte) DTV_BORDER_OFF#0 = 2 Constant (const byte) DTV_HIGHCOLOR#0 = 4 +Constant (const byte) DTV_OVERSCAN#0 = 8 +Constant (const byte) DTV_COLORRAM_OFF#0 = 16 Constant (const byte) DTV_BADLINE_OFF#0 = 32 +Constant (const byte) DTV_CHUNKY#0 = 64 Constant (const byte*) DTV_PALETTE#0 = ((byte*))53760 +Constant (const byte[16]) DTV_PALETTE_DEFAULT#0 = { 0, 15, 54, 190, 88, 219, 134, 255, 41, 38, 59, 5, 7, 223, 154, 10 } +Constant (const byte*) DTV_PLANEA_START_LO#0 = ((byte*))53306 +Constant (const byte*) DTV_PLANEA_START_MI#0 = ((byte*))53307 +Constant (const byte*) DTV_PLANEA_START_HI#0 = ((byte*))53317 +Constant (const byte*) DTV_PLANEA_STEP#0 = ((byte*))53318 +Constant (const byte*) DTV_PLANEA_MODULO_LO#0 = ((byte*))53304 +Constant (const byte*) DTV_PLANEA_MODULO_HI#0 = ((byte*))53305 +Constant (const byte*) DTV_PLANEB_START_LO#0 = ((byte*))53321 +Constant (const byte*) DTV_PLANEB_START_MI#0 = ((byte*))53322 +Constant (const byte*) DTV_PLANEB_START_HI#0 = ((byte*))53323 +Constant (const byte*) DTV_PLANEB_STEP#0 = ((byte*))53324 +Constant (const byte*) DTV_PLANEB_MODULO_LO#0 = ((byte*))53319 +Constant (const byte*) DTV_PLANEB_MODULO_HI#0 = ((byte*))53320 +Constant (const byte*) DTV_SPRITE_BANK#0 = ((byte*))53325 +Constant (const byte*) DTV_COLOR_BANK_LO#0 = ((byte*))53302 +Constant (const byte*) DTV_COLOR_BANK_HI#0 = ((byte*))53303 +Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = 120832 +Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))53309 +Constant (const byte*) DTV_GRAPHICS_HICOL_BANK#0 = ((byte*))53310 +Constant (const byte*) DTV_BLITTER_SRCA_LO#0 = ((byte*))54048 +Constant (const byte*) DTV_BLITTER_SRCA_MI#0 = ((byte*))54049 +Constant (const byte*) DTV_BLITTER_SRCA_HI#0 = ((byte*))54050 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_LO#0 = ((byte*))54051 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_HI#0 = ((byte*))54052 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_LO#0 = ((byte*))54053 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_HI#0 = ((byte*))54054 +Constant (const byte*) DTV_BLITTER_SRCA_STEP#0 = ((byte*))54055 +Constant (const byte*) DTV_BLITTER_SRCB_LO#0 = ((byte*))54056 +Constant (const byte*) DTV_BLITTER_SRCB_MI#0 = ((byte*))54057 +Constant (const byte*) DTV_BLITTER_SRCB_HI#0 = ((byte*))54058 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_LO#0 = ((byte*))54059 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_HI#0 = ((byte*))54060 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_LO#0 = ((byte*))54061 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_HI#0 = ((byte*))54062 +Constant (const byte*) DTV_BLITTER_SRCB_STEP#0 = ((byte*))54063 +Constant (const byte*) DTV_BLITTER_DEST_LO#0 = ((byte*))54064 +Constant (const byte*) DTV_BLITTER_DEST_MI#0 = ((byte*))54065 +Constant (const byte*) DTV_BLITTER_DEST_HI#0 = ((byte*))54066 +Constant (const byte*) DTV_BLITTER_DEST_MOD_LO#0 = ((byte*))54067 +Constant (const byte*) DTV_BLITTER_DEST_MOD_HI#0 = ((byte*))54068 +Constant (const byte*) DTV_BLITTER_DEST_LIN_LO#0 = ((byte*))54069 +Constant (const byte*) DTV_BLITTER_DEST_LIN_HI#0 = ((byte*))54070 +Constant (const byte*) DTV_BLITTER_DEST_STEP#0 = ((byte*))54071 +Constant (const byte*) DTV_BLITTER_LEN_LO#0 = ((byte*))54072 +Constant (const byte*) DTV_BLITTER_LEN_HI#0 = ((byte*))54073 +Constant (const byte*) DTV_BLITTER_CONTROL#0 = ((byte*))54074 +Constant (const byte) DTV_BLIT_FORCE_START#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_FWD#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_FWD#0 = 4 +Constant (const byte) DTV_BLIT_DEST_FWD#0 = 8 +Constant (const byte) DTV_BLIT_VIC_IRQ#0 = 16 +Constant (const byte) DTV_BLIT_CIA_IRQ#0 = 32 +Constant (const byte) DTV_BLIT_VBLANK#0 = 64 +Constant (const byte) DTV_BLIT_IRQ_EN#0 = 128 +Constant (const byte*) DTV_BLITTER_TRANSPARANCY#0 = ((byte*))54075 +Constant (const byte) DTV_BLIT_DISABLE_B#0 = 1 +Constant (const byte) DTV_BLIT_WRITE_TRANSPARENT#0 = 2 +Constant (const byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 = 4 +Constant (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 = 0 +Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))54078 +Constant (const byte) DTV_BLIT_SHIFT0#0 = 0 +Constant (const byte) DTV_BLIT_SHIFT1#0 = 1 +Constant (const byte) DTV_BLIT_SHIFT2#0 = 2 +Constant (const byte) DTV_BLIT_SHIFT3#0 = 3 +Constant (const byte) DTV_BLIT_SHIFT4#0 = 4 +Constant (const byte) DTV_BLIT_SHIFT5#0 = 5 +Constant (const byte) DTV_BLIT_SHIFT6#0 = 6 +Constant (const byte) DTV_BLIT_SHIFT7#0 = 7 +Constant (const byte) DTV_BLIT_AND#0 = 0 +Constant (const byte) DTV_BLIT_NAND#0 = 8 +Constant (const byte) DTV_BLIT_NOR#0 = 16 +Constant (const byte) DTV_BLIT_OR#0 = 24 +Constant (const byte) DTV_BLIT_XOR#0 = 32 +Constant (const byte) DTV_BLIT_XNOR#0 = 40 +Constant (const byte) DTV_BLIT_ADD#0 = 48 +Constant (const byte) DTV_BLIT_SUB#0 = 56 +Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))54079 +Constant (const byte) DTV_BLIT_CLEAR_IRQ#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_CONT#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_CONT#0 = 4 +Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8 +Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1 +Constant (const byte) DTV_BLIT_STATUS_IRQ#0 = 2 Constant (const byte[16]) main::palette#0 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } Constant (const byte) main::r#0 = 49 Constant (const byte) main::c#0 = 0 @@ -143,13 +806,15 @@ Constant (const byte) main::$1 = main::$0|DTV_BADLINE_OFF#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value main::r#1 ← ++ main::r#2 to ++ Resolved ranged comparison value if(main::r#1!=rangelast(49,255)) goto main::@7 to (byte/signed byte/word/signed word/dword/signed dword) 0 Resolved ranged next value main::c#1 ← ++ main::c#2 to ++ Resolved ranged comparison value if(main::c#1!=rangelast(0,15)) goto main::@8 to (byte/signed byte/word/signed word/dword/signed dword) 16 -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 +Culled Empty Block (label) @5 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@14 Successful SSA optimization Pass2CullEmptyBlocks @@ -163,7 +828,7 @@ Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting main::@17(between main::@7 and main::@7) Added new block during phi lifting main::@18(between main::@8 and main::@8) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end CALL GRAPH Calls in [] to main:2 @@ -175,20 +840,20 @@ Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@18 Culled Empty Block (label) main::@17 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [3] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 asm { sei } [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [6] *((const byte*) DTV_CONTROL#0) ← (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_BORDER_OFF#0|(const byte) DTV_BADLINE_OFF#0 @@ -217,14 +882,179 @@ main::@8: scope:[main] from main::@7 main::@8 VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF +(byte) DTV_CHUNKY +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (byte*) DTV_FEATURE +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR +(byte) DTV_LINEAR +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (byte) main::c (byte) main::c#1 151.5 @@ -260,15 +1090,15 @@ INITIAL ASM .label DTV_PALETTE = $d200 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -411,15 +1241,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label DTV_PALETTE = $d200 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -516,7 +1346,7 @@ main: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b5 +Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp b4 Removing instruction jmp b6 @@ -526,12 +1356,12 @@ Succesful ASM optimization Pass5NextJumpElimination Replacing label b7_from_b7 with b7 Replacing label b8_from_b8 with b8 Removing instruction bbegin: -Removing instruction b5_from_bbegin: -Removing instruction bend_from_b5: +Removing instruction b6_from_bbegin: +Removing instruction bend_from_b6: Removing instruction b7_from_b7: Removing instruction b8_from_b8: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b5: +Removing instruction b6: Removing instruction bend: Removing instruction b6: Removing instruction b7_from_b6: @@ -542,27 +1372,192 @@ Removing instruction jmp b8 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF (const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) DTV_CHUNKY +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4 +(byte) DTV_LINEAR +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE (const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760 +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (label) main::@4 (label) main::@6 @@ -599,11 +1594,11 @@ Score: 10180 .const DTV_BADLINE_OFF = $20 .label DTV_PALETTE = $d200 //SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 @6 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG6 [3] phi from @6 to @end [phi:@6->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/c64dtv-color.sym b/src/test/ref/c64dtv-color.sym index bfab409a9..8c15807ee 100644 --- a/src/test/ref/c64dtv-color.sym +++ b/src/test/ref/c64dtv-color.sym @@ -1,24 +1,189 @@ -(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) DTV_BADLINE_OFF (const byte) DTV_BADLINE_OFF#0 DTV_BADLINE_OFF = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) DTV_CHUNKY +(byte) DTV_COLORRAM_OFF +(dword) DTV_COLOR_BANK_DEFAULT +(byte*) DTV_COLOR_BANK_HI +(byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (const byte) DTV_HIGHCOLOR#0 DTV_HIGHCOLOR = (byte/signed byte/word/signed word/dword/signed dword) 4 +(byte) DTV_LINEAR +(byte) DTV_OVERSCAN (byte*) DTV_PALETTE (const byte*) DTV_PALETTE#0 DTV_PALETTE = ((byte*))(word/dword/signed dword) 53760 +(byte[16]) DTV_PALETTE_DEFAULT +(byte*) DTV_PLANEA_MODULO_HI +(byte*) DTV_PLANEA_MODULO_LO +(byte*) DTV_PLANEA_START_HI +(byte*) DTV_PLANEA_START_LO +(byte*) DTV_PLANEA_START_MI +(byte*) DTV_PLANEA_STEP +(byte*) DTV_PLANEB_MODULO_HI +(byte*) DTV_PLANEB_MODULO_LO +(byte*) DTV_PLANEB_START_HI +(byte*) DTV_PLANEB_START_LO +(byte*) DTV_PLANEB_START_MI +(byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (label) main::@4 (label) main::@6 diff --git a/src/test/ref/c64dtv-gfxexplorer.asm b/src/test/ref/c64dtv-gfxexplorer.asm index f78d58bd6..6d81b76b6 100644 --- a/src/test/ref/c64dtv-gfxexplorer.asm +++ b/src/test/ref/c64dtv-gfxexplorer.asm @@ -1503,7 +1503,10 @@ gfx_init_plane_fill: { lda _0+3 sta _1+1 lda _1 + tax + txa jsr dtvSetCpuBankSegment1 + inx lda plane_addr sta _4 lda plane_addr+1 diff --git a/src/test/ref/c64dtv-gfxexplorer.cfg b/src/test/ref/c64dtv-gfxexplorer.cfg index 63a19433e..b9fc48845 100644 --- a/src/test/ref/c64dtv-gfxexplorer.cfg +++ b/src/test/ref/c64dtv-gfxexplorer.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@67 -@67: scope:[] from @begin + to:@68 +@68: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @67 +@end: scope:[] from @68 [3] phi() -main: scope:[main] from @67 +main: scope:[main] from @68 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -958,738 +958,739 @@ gfx_init_plane_fill: scope:[gfx_init_plane_fill] from gfx_init_plane_blank gfx_ [488] call dtvSetCpuBankSegment1 to:gfx_init_plane_fill::@5 gfx_init_plane_fill::@5: scope:[gfx_init_plane_fill] from gfx_init_plane_fill - [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 - [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 - [491] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 - [492] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 + [489] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 + [490] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 + [491] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 + [492] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 + [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 to:gfx_init_plane_fill::@1 gfx_init_plane_fill::@1: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 - [493] (byte) gfx_init_plane_fill::by#4 ← phi( gfx_init_plane_fill::@3/(byte) gfx_init_plane_fill::by#1 gfx_init_plane_fill::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [493] (byte*) gfx_init_plane_fill::gfxb#3 ← phi( gfx_init_plane_fill::@3/(byte*) gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::@5/(byte*~) gfx_init_plane_fill::gfxb#6 ) + [494] (byte) gfx_init_plane_fill::by#4 ← phi( gfx_init_plane_fill::@3/(byte) gfx_init_plane_fill::by#1 gfx_init_plane_fill::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [494] (byte*) gfx_init_plane_fill::gfxb#3 ← phi( gfx_init_plane_fill::@3/(byte*) gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::@5/(byte*~) gfx_init_plane_fill::gfxb#6 ) to:gfx_init_plane_fill::@2 gfx_init_plane_fill::@2: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 - [494] (byte) gfx_init_plane_fill::bx#2 ← phi( gfx_init_plane_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_fill::@2/(byte) gfx_init_plane_fill::bx#1 ) - [494] (byte*) gfx_init_plane_fill::gfxb#2 ← phi( gfx_init_plane_fill::@1/(byte*) gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::@2/(byte*) gfx_init_plane_fill::gfxb#1 ) - [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 - [496] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 - [497] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 - [498] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 + [495] (byte) gfx_init_plane_fill::bx#2 ← phi( gfx_init_plane_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_fill::@2/(byte) gfx_init_plane_fill::bx#1 ) + [495] (byte*) gfx_init_plane_fill::gfxb#2 ← phi( gfx_init_plane_fill::@1/(byte*) gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::@2/(byte*) gfx_init_plane_fill::gfxb#1 ) + [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 + [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 + [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 + [499] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 to:gfx_init_plane_fill::@3 gfx_init_plane_fill::@3: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@2 - [499] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 - [500] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 + [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 + [501] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 to:gfx_init_plane_fill::@4 gfx_init_plane_fill::@4: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@3 - [501] phi() - [502] call dtvSetCpuBankSegment1 + [502] phi() + [503] call dtvSetCpuBankSegment1 to:gfx_init_plane_fill::@return gfx_init_plane_fill::@return: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@4 - [503] return + [504] return to:@return dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@6 gfx_init_plane_charset8 gfx_init_plane_charset8::@8 gfx_init_plane_fill gfx_init_plane_fill::@4 gfx_init_plane_horisontal gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal::@8 gfx_init_plane_vertical gfx_init_plane_vertical::@4 - [504] (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 ← phi( gfx_init_plane_8bppchunky/((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 gfx_init_plane_8bppchunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_plane_8bppchunky::@6/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_charset8/(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfx_init_plane_charset8::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_fill/(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 gfx_init_plane_fill::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal/(const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 gfx_init_plane_horisontal2/(const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfx_init_plane_horisontal2::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_vertical/(const byte) gfx_init_plane_vertical::gfxbCpuBank#0 gfx_init_plane_vertical::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 ) - [505] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 + [505] (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 ← phi( gfx_init_plane_8bppchunky/((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 gfx_init_plane_8bppchunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_plane_8bppchunky::@6/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_charset8/(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfx_init_plane_charset8::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_fill/(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 gfx_init_plane_fill::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal/(const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 gfx_init_plane_horisontal2/(const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfx_init_plane_horisontal2::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_vertical/(const byte) gfx_init_plane_vertical::gfxbCpuBank#0 gfx_init_plane_vertical::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 ) + [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 asm { .byte$32,$dd lda$ff .byte$32,$00 } to:dtvSetCpuBankSegment1::@return dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 - [507] return + [508] return to:@return gfx_init_plane_blank: scope:[gfx_init_plane_blank] from gfx_init::@13 - [508] phi() - [509] call gfx_init_plane_fill + [509] phi() + [510] call gfx_init_plane_fill to:gfx_init_plane_blank::@return gfx_init_plane_blank::@return: scope:[gfx_init_plane_blank] from gfx_init_plane_blank - [510] return + [511] return to:@return gfx_init_plane_vertical2: scope:[gfx_init_plane_vertical2] from gfx_init::@12 - [511] phi() - [512] call gfx_init_plane_fill + [512] phi() + [513] call gfx_init_plane_fill to:gfx_init_plane_vertical2::@return gfx_init_plane_vertical2::@return: scope:[gfx_init_plane_vertical2] from gfx_init_plane_vertical2 - [513] return + [514] return to:@return gfx_init_plane_horisontal2: scope:[gfx_init_plane_horisontal2] from gfx_init::@11 - [514] phi() - [515] call dtvSetCpuBankSegment1 + [515] phi() + [516] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@1: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@3 - [516] (byte*) gfx_init_plane_horisontal2::gfxa#3 ← phi( gfx_init_plane_horisontal2::@3/(byte*) gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_horisontal2/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 ) - [516] (byte) gfx_init_plane_horisontal2::ay#4 ← phi( gfx_init_plane_horisontal2::@3/(byte) gfx_init_plane_horisontal2::ay#1 gfx_init_plane_horisontal2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [517] (byte*) gfx_init_plane_horisontal2::gfxa#3 ← phi( gfx_init_plane_horisontal2::@3/(byte*) gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_horisontal2/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 ) + [517] (byte) gfx_init_plane_horisontal2::ay#4 ← phi( gfx_init_plane_horisontal2::@3/(byte) gfx_init_plane_horisontal2::ay#1 gfx_init_plane_horisontal2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) to:gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@2: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 - [517] (byte) gfx_init_plane_horisontal2::ax#2 ← phi( gfx_init_plane_horisontal2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal2::@2/(byte) gfx_init_plane_horisontal2::ax#1 ) - [517] (byte*) gfx_init_plane_horisontal2::gfxa#2 ← phi( gfx_init_plane_horisontal2::@1/(byte*) gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::@2/(byte*) gfx_init_plane_horisontal2::gfxa#1 ) - [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 - [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) - [521] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 - [522] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 - [523] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 + [518] (byte) gfx_init_plane_horisontal2::ax#2 ← phi( gfx_init_plane_horisontal2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal2::@2/(byte) gfx_init_plane_horisontal2::ax#1 ) + [518] (byte*) gfx_init_plane_horisontal2::gfxa#2 ← phi( gfx_init_plane_horisontal2::@1/(byte*) gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::@2/(byte*) gfx_init_plane_horisontal2::gfxa#1 ) + [519] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [520] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 + [521] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) + [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 + [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 + [524] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 to:gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@3: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@2 - [524] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 - [525] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 + [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 + [526] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 to:gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@4: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@3 - [526] phi() - [527] call dtvSetCpuBankSegment1 + [527] phi() + [528] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal2::@return gfx_init_plane_horisontal2::@return: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@4 - [528] return + [529] return to:@return gfx_init_plane_vertical: scope:[gfx_init_plane_vertical] from gfx_init::@10 - [529] phi() - [530] call dtvSetCpuBankSegment1 + [530] phi() + [531] call dtvSetCpuBankSegment1 to:gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@1: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical gfx_init_plane_vertical::@3 - [531] (byte) gfx_init_plane_vertical::by#4 ← phi( gfx_init_plane_vertical::@3/(byte) gfx_init_plane_vertical::by#1 gfx_init_plane_vertical/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [531] (byte*) gfx_init_plane_vertical::gfxb#3 ← phi( gfx_init_plane_vertical::@3/(byte*) gfx_init_plane_vertical::gfxb#1 gfx_init_plane_vertical/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 ) + [532] (byte) gfx_init_plane_vertical::by#4 ← phi( gfx_init_plane_vertical::@3/(byte) gfx_init_plane_vertical::by#1 gfx_init_plane_vertical/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [532] (byte*) gfx_init_plane_vertical::gfxb#3 ← phi( gfx_init_plane_vertical::@3/(byte*) gfx_init_plane_vertical::gfxb#1 gfx_init_plane_vertical/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 ) to:gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@2: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 - [532] (byte) gfx_init_plane_vertical::bx#2 ← phi( gfx_init_plane_vertical::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_vertical::@2/(byte) gfx_init_plane_vertical::bx#1 ) - [532] (byte*) gfx_init_plane_vertical::gfxb#2 ← phi( gfx_init_plane_vertical::@1/(byte*) gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::@2/(byte*) gfx_init_plane_vertical::gfxb#1 ) - [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [534] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 - [535] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 - [536] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 + [533] (byte) gfx_init_plane_vertical::bx#2 ← phi( gfx_init_plane_vertical::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_vertical::@2/(byte) gfx_init_plane_vertical::bx#1 ) + [533] (byte*) gfx_init_plane_vertical::gfxb#2 ← phi( gfx_init_plane_vertical::@1/(byte*) gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::@2/(byte*) gfx_init_plane_vertical::gfxb#1 ) + [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 + [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 + [537] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 to:gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@3: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@2 - [537] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 - [538] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 + [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 + [539] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 to:gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@4: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@3 - [539] phi() - [540] call dtvSetCpuBankSegment1 + [540] phi() + [541] call dtvSetCpuBankSegment1 to:gfx_init_plane_vertical::@return gfx_init_plane_vertical::@return: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@4 - [541] return + [542] return to:@return gfx_init_plane_horisontal: scope:[gfx_init_plane_horisontal] from gfx_init::@9 - [542] phi() - [543] call dtvSetCpuBankSegment1 + [543] phi() + [544] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@1: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal gfx_init_plane_horisontal::@7 - [544] (byte*) gfx_init_plane_horisontal::gfxa#6 ← phi( gfx_init_plane_horisontal::@7/(byte*) gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 ) - [544] (byte) gfx_init_plane_horisontal::ay#4 ← phi( gfx_init_plane_horisontal::@7/(byte) gfx_init_plane_horisontal::ay#1 gfx_init_plane_horisontal/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [545] (byte*) gfx_init_plane_horisontal::gfxa#6 ← phi( gfx_init_plane_horisontal::@7/(byte*) gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 ) + [545] (byte) gfx_init_plane_horisontal::ay#4 ← phi( gfx_init_plane_horisontal::@7/(byte) gfx_init_plane_horisontal::ay#1 gfx_init_plane_horisontal/(byte/signed byte/word/signed word/dword/signed dword) 0 ) to:gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@2: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@4 - [545] (byte) gfx_init_plane_horisontal::ax#2 ← phi( gfx_init_plane_horisontal::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal::@4/(byte) gfx_init_plane_horisontal::ax#1 ) - [545] (byte*) gfx_init_plane_horisontal::gfxa#3 ← phi( gfx_init_plane_horisontal::@1/(byte*) gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::@4/(byte*) gfx_init_plane_horisontal::gfxa#7 ) - [546] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 - [547] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 + [546] (byte) gfx_init_plane_horisontal::ax#2 ← phi( gfx_init_plane_horisontal::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal::@4/(byte) gfx_init_plane_horisontal::ax#1 ) + [546] (byte*) gfx_init_plane_horisontal::gfxa#3 ← phi( gfx_init_plane_horisontal::@1/(byte*) gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::@4/(byte*) gfx_init_plane_horisontal::gfxa#7 ) + [547] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 + [548] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 to:gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@5: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@2 - [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 - [549] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 + [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 + [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 to:gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@4: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 - [550] (byte*) gfx_init_plane_horisontal::gfxa#7 ← phi( gfx_init_plane_horisontal::@3/(byte*) gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::@5/(byte*) gfx_init_plane_horisontal::gfxa#2 ) - [551] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 - [552] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 + [551] (byte*) gfx_init_plane_horisontal::gfxa#7 ← phi( gfx_init_plane_horisontal::@3/(byte*) gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::@5/(byte*) gfx_init_plane_horisontal::gfxa#2 ) + [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 + [553] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 to:gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@7: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@4 - [553] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 - [554] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 + [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 + [555] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 to:gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@8: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@7 - [555] phi() - [556] call dtvSetCpuBankSegment1 + [556] phi() + [557] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@return: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@8 - [557] return + [558] return to:@return gfx_init_plane_horisontal::@3: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@2 - [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [559] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 + [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 to:gfx_init_plane_horisontal::@4 gfx_init_plane_charset8: scope:[gfx_init_plane_charset8] from gfx_init::@8 - [560] phi() - [561] call dtvSetCpuBankSegment1 + [561] phi() + [562] call dtvSetCpuBankSegment1 to:gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@9: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8 - [562] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 + [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 to:gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@1: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@9 - [563] (byte) gfx_init_plane_charset8::ch#8 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::ch#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [563] (byte) gfx_init_plane_charset8::col#6 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [563] (byte*) gfx_init_plane_charset8::gfxa#6 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::@9/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 ) - [563] (byte*) gfx_init_plane_charset8::chargen#3 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::@9/(const byte*) CHARGEN#0 ) + [564] (byte) gfx_init_plane_charset8::ch#8 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::ch#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [564] (byte) gfx_init_plane_charset8::col#6 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [564] (byte*) gfx_init_plane_charset8::gfxa#6 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::@9/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 ) + [564] (byte*) gfx_init_plane_charset8::chargen#3 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::@9/(const byte*) CHARGEN#0 ) to:gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@2: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@6 - [564] (byte) gfx_init_plane_charset8::cr#6 ← phi( gfx_init_plane_charset8::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::cr#1 ) - [564] (byte) gfx_init_plane_charset8::col#5 ← phi( gfx_init_plane_charset8::@1/(byte) gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::col#1 ) - [564] (byte*) gfx_init_plane_charset8::gfxa#5 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::gfxa#1 ) - [564] (byte*) gfx_init_plane_charset8::chargen#2 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::chargen#1 ) - [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) - [566] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 + [565] (byte) gfx_init_plane_charset8::cr#6 ← phi( gfx_init_plane_charset8::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::cr#1 ) + [565] (byte) gfx_init_plane_charset8::col#5 ← phi( gfx_init_plane_charset8::@1/(byte) gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::col#1 ) + [565] (byte*) gfx_init_plane_charset8::gfxa#5 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::gfxa#1 ) + [565] (byte*) gfx_init_plane_charset8::chargen#2 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::chargen#1 ) + [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) + [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 to:gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@3: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@4 - [567] (byte) gfx_init_plane_charset8::cp#2 ← phi( gfx_init_plane_charset8::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::cp#1 ) - [567] (byte) gfx_init_plane_charset8::col#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::col#1 ) - [567] (byte*) gfx_init_plane_charset8::gfxa#2 ← phi( gfx_init_plane_charset8::@2/(byte*) gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::@4/(byte*) gfx_init_plane_charset8::gfxa#1 ) - [567] (byte) gfx_init_plane_charset8::bits#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::bits#1 ) - [568] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 - [569] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 + [568] (byte) gfx_init_plane_charset8::cp#2 ← phi( gfx_init_plane_charset8::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::cp#1 ) + [568] (byte) gfx_init_plane_charset8::col#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::col#1 ) + [568] (byte*) gfx_init_plane_charset8::gfxa#2 ← phi( gfx_init_plane_charset8::@2/(byte*) gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::@4/(byte*) gfx_init_plane_charset8::gfxa#1 ) + [568] (byte) gfx_init_plane_charset8::bits#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::bits#1 ) + [569] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 + [570] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 to:gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@5: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@3 - [570] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 + [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 to:gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@4: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 - [571] (byte) gfx_init_plane_charset8::c#2 ← phi( gfx_init_plane_charset8::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@5/(byte~) gfx_init_plane_charset8::c#3 ) - [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 - [573] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 - [574] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [575] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 - [576] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 - [577] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 + [572] (byte) gfx_init_plane_charset8::c#2 ← phi( gfx_init_plane_charset8::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@5/(byte~) gfx_init_plane_charset8::c#3 ) + [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 + [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 + [575] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 + [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 + [578] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 to:gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@6: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@4 - [578] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 - [579] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 + [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 + [580] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 to:gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@7: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@6 - [580] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 - [581] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 + [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 + [582] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 to:gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@8: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@7 - [582] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [583] call dtvSetCpuBankSegment1 + [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [584] call dtvSetCpuBankSegment1 to:gfx_init_plane_charset8::@return gfx_init_plane_charset8::@return: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@8 - [584] return + [585] return to:@return gfx_init_plane_8bppchunky: scope:[gfx_init_plane_8bppchunky] from gfx_init::@7 - [585] phi() - [586] call dtvSetCpuBankSegment1 + [586] phi() + [587] call dtvSetCpuBankSegment1 to:gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@1: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@5 - [587] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky/++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 ) - [587] (byte) gfx_init_plane_8bppchunky::y#6 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::y#1 gfx_init_plane_8bppchunky/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [587] (byte*) gfx_init_plane_8bppchunky::gfxb#5 ← phi( gfx_init_plane_8bppchunky::@5/(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky/((byte*))(word/signed word/dword/signed dword) 16384 ) + [588] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky/++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 ) + [588] (byte) gfx_init_plane_8bppchunky::y#6 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::y#1 gfx_init_plane_8bppchunky/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [588] (byte*) gfx_init_plane_8bppchunky::gfxb#5 ← phi( gfx_init_plane_8bppchunky::@5/(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky/((byte*))(word/signed word/dword/signed dword) 16384 ) to:gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@2: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@3 - [588] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 ← phi( gfx_init_plane_8bppchunky::@1/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::@3/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ) - [588] (word) gfx_init_plane_8bppchunky::x#2 ← phi( gfx_init_plane_8bppchunky::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_8bppchunky::@3/(word) gfx_init_plane_8bppchunky::x#1 ) - [588] (byte*) gfx_init_plane_8bppchunky::gfxb#3 ← phi( gfx_init_plane_8bppchunky::@1/(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::@3/(byte*) gfx_init_plane_8bppchunky::gfxb#1 ) - [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 + [589] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 ← phi( gfx_init_plane_8bppchunky::@1/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::@3/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ) + [589] (word) gfx_init_plane_8bppchunky::x#2 ← phi( gfx_init_plane_8bppchunky::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_8bppchunky::@3/(word) gfx_init_plane_8bppchunky::x#1 ) + [589] (byte*) gfx_init_plane_8bppchunky::gfxb#3 ← phi( gfx_init_plane_8bppchunky::@1/(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::@3/(byte*) gfx_init_plane_8bppchunky::gfxb#1 ) + [590] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 to:gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@4: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@2 - [590] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 - [591] call dtvSetCpuBankSegment1 + [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 + [592] call dtvSetCpuBankSegment1 to:gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@8: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@4 - [592] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 + [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 to:gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@3: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@8 - [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ← phi( gfx_init_plane_8bppchunky::@2/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::@8/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ) - [593] (byte*) gfx_init_plane_8bppchunky::gfxb#4 ← phi( gfx_init_plane_8bppchunky::@2/(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::@8/((byte*))(word/signed word/dword/signed dword) 16384 ) - [594] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 - [595] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 - [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 - [597] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 - [598] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 - [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 + [594] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ← phi( gfx_init_plane_8bppchunky::@2/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::@8/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ) + [594] (byte*) gfx_init_plane_8bppchunky::gfxb#4 ← phi( gfx_init_plane_8bppchunky::@2/(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::@8/((byte*))(word/signed word/dword/signed dword) 16384 ) + [595] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 + [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 + [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 + [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 + [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 + [600] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 to:gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@5: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@3 - [600] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 - [601] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 + [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 + [602] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 to:gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@6: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@5 - [602] phi() - [603] call dtvSetCpuBankSegment1 + [603] phi() + [604] call dtvSetCpuBankSegment1 to:gfx_init_plane_8bppchunky::@return gfx_init_plane_8bppchunky::@return: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@6 - [604] return + [605] return to:@return gfx_init_vic_bitmap: scope:[gfx_init_vic_bitmap] from gfx_init::@6 - [605] phi() - [606] call bitmap_init + [606] phi() + [607] call bitmap_init to:gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@3: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap - [607] phi() - [608] call bitmap_clear + [608] phi() + [609] call bitmap_clear to:gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@1: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@5 - [609] (byte) gfx_init_vic_bitmap::l#2 ← phi( gfx_init_vic_bitmap::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_vic_bitmap::@5/(byte) gfx_init_vic_bitmap::l#1 ) - [610] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) - [611] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) - [612] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) - [613] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) - [614] call bitmap_line + [610] (byte) gfx_init_vic_bitmap::l#2 ← phi( gfx_init_vic_bitmap::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_vic_bitmap::@5/(byte) gfx_init_vic_bitmap::l#1 ) + [611] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) + [612] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) + [613] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) + [614] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) + [615] call bitmap_line to:gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@5: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@1 - [615] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 - [616] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 + [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 + [617] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 to:gfx_init_vic_bitmap::@return gfx_init_vic_bitmap::@return: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@5 - [617] return + [618] return to:@return bitmap_line: scope:[bitmap_line] from gfx_init_vic_bitmap::@1 - [618] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 + [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 to:bitmap_line::@15 bitmap_line::@15: scope:[bitmap_line] from bitmap_line - [619] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 - [620] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 + [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 + [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 to:bitmap_line::@16 bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@15 - [621] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 - [622] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 + [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 + [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 to:bitmap_line::@17 bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@16 - [623] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 - [624] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 - [625] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - [626] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - [627] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - [628] call bitmap_line_ydxi + [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 + [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 + [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + [629] call bitmap_line_ydxi to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@13 bitmap_line::@17 bitmap_line::@20 bitmap_line::@24 bitmap_line::@27 bitmap_line::@3 bitmap_line::@6 - [629] return + [630] return to:@return bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@16 - [630] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 - [631] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 - [632] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - [633] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - [634] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - [635] call bitmap_line_xdyi + [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 + [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 + [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + [636] call bitmap_line_xdyi to:bitmap_line::@return bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 - [636] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 - [637] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 + [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 + [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 to:bitmap_line::@20 bitmap_line::@20: scope:[bitmap_line] from bitmap_line::@2 - [638] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 - [639] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 - [640] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 - [641] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - [642] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - [643] call bitmap_line_ydxd + [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 + [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 + [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 + [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + [644] call bitmap_line_ydxd to:bitmap_line::@return bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@2 - [644] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 - [645] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 - [646] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 - [647] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - [648] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - [649] call bitmap_line_xdyd + [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 + [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 + [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 + [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + [650] call bitmap_line_xdyd to:bitmap_line::@return bitmap_line::@1: scope:[bitmap_line] from bitmap_line - [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 - [651] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 + [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 + [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 to:bitmap_line::@23 bitmap_line::@23: scope:[bitmap_line] from bitmap_line::@1 - [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 - [653] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 + [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 + [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 to:bitmap_line::@24 bitmap_line::@24: scope:[bitmap_line] from bitmap_line::@23 - [654] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 - [655] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 - [656] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - [657] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - [658] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - [659] call bitmap_line_ydxd + [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 + [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 + [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + [660] call bitmap_line_ydxd to:bitmap_line::@return bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@23 - [660] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 - [661] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - [662] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - [663] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - [664] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - [665] call bitmap_line_xdyd + [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 + [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + [666] call bitmap_line_xdyd to:bitmap_line::@return bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@1 - [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 - [667] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 + [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 + [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 to:bitmap_line::@27 bitmap_line::@27: scope:[bitmap_line] from bitmap_line::@9 - [668] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 - [669] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 - [670] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 - [671] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - [672] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - [673] call bitmap_line_ydxi + [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 + [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 + [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 + [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + [674] call bitmap_line_ydxi to:bitmap_line::@return bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@9 - [674] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 - [675] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - [676] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 - [677] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - [678] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - [679] call bitmap_line_xdyi + [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 + [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 + [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + [680] call bitmap_line_xdyi to:bitmap_line::@return bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@13 bitmap_line::@3 - [680] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x1#0 ) - [680] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::xd#0 ) - [680] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 bitmap_line::@3/(byte) bitmap_line_xdyi::y#0 ) - [680] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x#0 ) - [680] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::yd#0 ) - [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [681] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x1#0 ) + [681] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::xd#0 ) + [681] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 bitmap_line::@3/(byte) bitmap_line_xdyi::y#0 ) + [681] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x#0 ) + [681] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::yd#0 ) + [682] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_xdyi::@1 bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2 - [682] (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::e#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) - [682] (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::y#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) - [682] (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#2 ) - [683] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 - [684] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 - [685] call bitmap_plot + [683] (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::e#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) + [683] (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::y#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) + [683] (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#2 ) + [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 + [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 + [686] call bitmap_plot to:bitmap_line_xdyi::@5 bitmap_line_xdyi::@5: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1 - [686] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 - [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 - [688] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 + [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 + [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 + [689] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 to:bitmap_line_xdyi::@3 bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@5 - [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 - [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 + [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 + [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 to:bitmap_line_xdyi::@2 bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 - [691] (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::e#1 ) - [691] (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::y#3 ) - [692] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [693] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 + [692] (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::e#1 ) + [692] (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::y#3 ) + [693] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [694] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 to:bitmap_line_xdyi::@return bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 - [694] return + [695] return to:@return bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1 - [695] (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) - [695] (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) - [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) - [697] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) - [698] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 - [699] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) - [700] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 + [696] (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) + [696] (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) + [697] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) + [698] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) + [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 + [700] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) + [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [701] return + [702] return to:@return bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@17 bitmap_line::@27 - [702] (byte) bitmap_line_ydxi::y1#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y1#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y1#1 ) - [702] (byte) bitmap_line_ydxi::yd#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::yd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::yd#1 ) - [702] (byte) bitmap_line_ydxi::y#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y#1 ) - [702] (byte) bitmap_line_ydxi::x#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::x#0 bitmap_line::@27/(byte) bitmap_line_ydxi::x#1 ) - [702] (byte) bitmap_line_ydxi::xd#2 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::xd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::xd#1 ) - [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [703] (byte) bitmap_line_ydxi::y1#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y1#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y1#1 ) + [703] (byte) bitmap_line_ydxi::yd#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::yd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::yd#1 ) + [703] (byte) bitmap_line_ydxi::y#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y#1 ) + [703] (byte) bitmap_line_ydxi::x#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::x#0 bitmap_line::@27/(byte) bitmap_line_ydxi::x#1 ) + [703] (byte) bitmap_line_ydxi::xd#2 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::xd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::xd#1 ) + [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_ydxi::@1 bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2 - [704] (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) - [704] (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#2 ) - [704] (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::x#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) - [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 - [707] call bitmap_plot + [705] (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) + [705] (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#2 ) + [705] (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::x#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) + [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 + [708] call bitmap_plot to:bitmap_line_ydxi::@5 bitmap_line_ydxi::@5: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1 - [708] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 - [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 - [710] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 + [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 + [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 + [711] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 to:bitmap_line_ydxi::@3 bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@5 - [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 - [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 + [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 + [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 to:bitmap_line_ydxi::@2 bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 - [713] (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::e#1 ) - [713] (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::x#3 ) - [714] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [715] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 + [714] (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::e#1 ) + [714] (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::x#3 ) + [715] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [716] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 to:bitmap_line_ydxi::@return bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 - [716] return + [717] return to:@return bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@10 bitmap_line::@6 - [717] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x1#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x1#0 ) - [717] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::xd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::xd#0 ) - [717] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::y#1 bitmap_line::@6/(byte) bitmap_line_xdyd::y#0 ) - [717] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x#0 ) - [717] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::yd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::yd#0 ) - [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [718] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x1#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x1#0 ) + [718] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::xd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::xd#0 ) + [718] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::y#1 bitmap_line::@6/(byte) bitmap_line_xdyd::y#0 ) + [718] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x#0 ) + [718] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::yd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::yd#0 ) + [719] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_xdyd::@1 bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2 - [719] (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::e#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) - [719] (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::y#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) - [719] (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#2 ) - [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 - [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 - [722] call bitmap_plot + [720] (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::e#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) + [720] (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::y#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) + [720] (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#2 ) + [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 + [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 + [723] call bitmap_plot to:bitmap_line_xdyd::@5 bitmap_line_xdyd::@5: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1 - [723] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 - [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 - [725] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 + [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 + [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 + [726] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 to:bitmap_line_xdyd::@3 bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@5 - [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 - [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 + [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 + [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 to:bitmap_line_xdyd::@2 bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 - [728] (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::e#1 ) - [728] (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::y#3 ) - [729] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [730] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 + [729] (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::e#1 ) + [729] (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::y#3 ) + [730] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [731] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 to:bitmap_line_xdyd::@return bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 - [731] return + [732] return to:@return bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@20 bitmap_line::@24 - [732] (byte) bitmap_line_ydxd::y1#6 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y1#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y1#1 ) - [732] (byte) bitmap_line_ydxd::yd#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::yd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::yd#1 ) - [732] (byte) bitmap_line_ydxd::y#7 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y#1 ) - [732] (byte) bitmap_line_ydxd::x#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::x#0 bitmap_line::@24/(byte) bitmap_line_ydxd::x#1 ) - [732] (byte) bitmap_line_ydxd::xd#2 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::xd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::xd#1 ) - [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [733] (byte) bitmap_line_ydxd::y1#6 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y1#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y1#1 ) + [733] (byte) bitmap_line_ydxd::yd#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::yd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::yd#1 ) + [733] (byte) bitmap_line_ydxd::y#7 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y#1 ) + [733] (byte) bitmap_line_ydxd::x#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::x#0 bitmap_line::@24/(byte) bitmap_line_ydxd::x#1 ) + [733] (byte) bitmap_line_ydxd::xd#2 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::xd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::xd#1 ) + [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_ydxd::@1 bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2 - [734] (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) - [734] (byte) bitmap_line_ydxd::y#2 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y#7 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#3 ) - [734] (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::x#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) - [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 - [737] call bitmap_plot + [735] (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) + [735] (byte) bitmap_line_ydxd::y#2 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y#7 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#3 ) + [735] (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::x#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) + [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 + [738] call bitmap_plot to:bitmap_line_ydxd::@5 bitmap_line_ydxd::@5: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1 - [738] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 - [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 - [740] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 + [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 + [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 + [741] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 to:bitmap_line_ydxd::@3 bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 - [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 - [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 + [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 + [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 to:bitmap_line_ydxd::@2 bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 - [743] (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::e#1 ) - [743] (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::x#3 ) - [744] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [745] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 + [744] (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::e#1 ) + [744] (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::x#3 ) + [745] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [746] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 to:bitmap_line_ydxd::@return bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 - [746] return + [747] return to:@return bitmap_clear: scope:[bitmap_clear] from gfx_init_vic_bitmap::@3 - [747] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) - [748] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [748] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) + [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [749] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [749] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [750] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [750] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [750] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [750] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [751] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [752] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [753] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [754] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [751] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [751] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [755] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [755] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [756] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [757] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [757] return + [758] return to:@return bitmap_init: scope:[bitmap_init] from gfx_init_vic_bitmap - [758] phi() + [759] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [759] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [759] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 - [761] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 - [762] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 - [763] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [764] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [765] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [760] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [760] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 + [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 + [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 + [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [765] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [766] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [766] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [767] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [768] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [767] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [769] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [769] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [769] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [770] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [771] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 - [772] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 - [773] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 - [774] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 - [775] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 - [776] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [777] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [770] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [770] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [771] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 + [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 + [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 + [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 + [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 + [777] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [778] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [779] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [779] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [780] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [781] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [780] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [782] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [782] return + [783] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [783] phi() + [784] phi() to:bitmap_init::@2 gfx_init_charset: scope:[gfx_init_charset] from gfx_init::@5 - [784] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:gfx_init_charset::@1 gfx_init_charset::@1: scope:[gfx_init_charset] from gfx_init_charset gfx_init_charset::@3 - [785] (byte) gfx_init_charset::c#4 ← phi( gfx_init_charset/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@3/(byte) gfx_init_charset::c#1 ) - [785] (byte*) gfx_init_charset::charset#3 ← phi( gfx_init_charset/(const byte*) VIC_CHARSET_ROM#0 gfx_init_charset::@3/(byte*) gfx_init_charset::charset#1 ) - [785] (byte*) gfx_init_charset::chargen#3 ← phi( gfx_init_charset/(const byte*) CHARGEN#0 gfx_init_charset::@3/(byte*) gfx_init_charset::chargen#1 ) + [786] (byte) gfx_init_charset::c#4 ← phi( gfx_init_charset/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@3/(byte) gfx_init_charset::c#1 ) + [786] (byte*) gfx_init_charset::charset#3 ← phi( gfx_init_charset/(const byte*) VIC_CHARSET_ROM#0 gfx_init_charset::@3/(byte*) gfx_init_charset::charset#1 ) + [786] (byte*) gfx_init_charset::chargen#3 ← phi( gfx_init_charset/(const byte*) CHARGEN#0 gfx_init_charset::@3/(byte*) gfx_init_charset::chargen#1 ) to:gfx_init_charset::@2 gfx_init_charset::@2: scope:[gfx_init_charset] from gfx_init_charset::@1 gfx_init_charset::@2 - [786] (byte) gfx_init_charset::l#2 ← phi( gfx_init_charset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@2/(byte) gfx_init_charset::l#1 ) - [786] (byte*) gfx_init_charset::charset#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::charset#3 gfx_init_charset::@2/(byte*) gfx_init_charset::charset#1 ) - [786] (byte*) gfx_init_charset::chargen#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::chargen#3 gfx_init_charset::@2/(byte*) gfx_init_charset::chargen#1 ) - [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) - [788] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 - [789] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 - [790] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 - [791] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 + [787] (byte) gfx_init_charset::l#2 ← phi( gfx_init_charset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@2/(byte) gfx_init_charset::l#1 ) + [787] (byte*) gfx_init_charset::charset#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::charset#3 gfx_init_charset::@2/(byte*) gfx_init_charset::charset#1 ) + [787] (byte*) gfx_init_charset::chargen#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::chargen#3 gfx_init_charset::@2/(byte*) gfx_init_charset::chargen#1 ) + [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) + [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 + [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 + [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 + [792] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 to:gfx_init_charset::@3 gfx_init_charset::@3: scope:[gfx_init_charset] from gfx_init_charset::@2 - [792] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 - [793] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 + [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 + [794] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 to:gfx_init_charset::@4 gfx_init_charset::@4: scope:[gfx_init_charset] from gfx_init_charset::@3 - [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 + [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 to:gfx_init_charset::@return gfx_init_charset::@return: scope:[gfx_init_charset] from gfx_init_charset::@4 - [795] return + [796] return to:@return gfx_init_screen4: scope:[gfx_init_screen4] from gfx_init::@4 - [796] phi() + [797] phi() to:gfx_init_screen4::@1 gfx_init_screen4::@1: scope:[gfx_init_screen4] from gfx_init_screen4 gfx_init_screen4::@3 - [797] (byte) gfx_init_screen4::cy#4 ← phi( gfx_init_screen4/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@3/(byte) gfx_init_screen4::cy#1 ) - [797] (byte*) gfx_init_screen4::ch#3 ← phi( gfx_init_screen4/(const byte*) VIC_SCREEN4#0 gfx_init_screen4::@3/(byte*) gfx_init_screen4::ch#1 ) + [798] (byte) gfx_init_screen4::cy#4 ← phi( gfx_init_screen4/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@3/(byte) gfx_init_screen4::cy#1 ) + [798] (byte*) gfx_init_screen4::ch#3 ← phi( gfx_init_screen4/(const byte*) VIC_SCREEN4#0 gfx_init_screen4::@3/(byte*) gfx_init_screen4::ch#1 ) to:gfx_init_screen4::@2 gfx_init_screen4::@2: scope:[gfx_init_screen4] from gfx_init_screen4::@1 gfx_init_screen4::@2 - [798] (byte) gfx_init_screen4::cx#2 ← phi( gfx_init_screen4::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@2/(byte) gfx_init_screen4::cx#1 ) - [798] (byte*) gfx_init_screen4::ch#2 ← phi( gfx_init_screen4::@1/(byte*) gfx_init_screen4::ch#3 gfx_init_screen4::@2/(byte*) gfx_init_screen4::ch#1 ) - [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [800] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 - [801] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 - [802] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 + [799] (byte) gfx_init_screen4::cx#2 ← phi( gfx_init_screen4::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@2/(byte) gfx_init_screen4::cx#1 ) + [799] (byte*) gfx_init_screen4::ch#2 ← phi( gfx_init_screen4::@1/(byte*) gfx_init_screen4::ch#3 gfx_init_screen4::@2/(byte*) gfx_init_screen4::ch#1 ) + [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 + [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 + [803] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 to:gfx_init_screen4::@3 gfx_init_screen4::@3: scope:[gfx_init_screen4] from gfx_init_screen4::@2 - [803] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 - [804] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 + [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 + [805] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 to:gfx_init_screen4::@return gfx_init_screen4::@return: scope:[gfx_init_screen4] from gfx_init_screen4::@3 - [805] return + [806] return to:@return gfx_init_screen3: scope:[gfx_init_screen3] from gfx_init::@3 - [806] phi() + [807] phi() to:gfx_init_screen3::@1 gfx_init_screen3::@1: scope:[gfx_init_screen3] from gfx_init_screen3 gfx_init_screen3::@3 - [807] (byte*) gfx_init_screen3::ch#3 ← phi( gfx_init_screen3/(const byte*) VIC_SCREEN3#0 gfx_init_screen3::@3/(byte*) gfx_init_screen3::ch#1 ) - [807] (byte) gfx_init_screen3::cy#4 ← phi( gfx_init_screen3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@3/(byte) gfx_init_screen3::cy#1 ) + [808] (byte*) gfx_init_screen3::ch#3 ← phi( gfx_init_screen3/(const byte*) VIC_SCREEN3#0 gfx_init_screen3::@3/(byte*) gfx_init_screen3::ch#1 ) + [808] (byte) gfx_init_screen3::cy#4 ← phi( gfx_init_screen3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@3/(byte) gfx_init_screen3::cy#1 ) to:gfx_init_screen3::@2 gfx_init_screen3::@2: scope:[gfx_init_screen3] from gfx_init_screen3::@1 gfx_init_screen3::@2 - [808] (byte*) gfx_init_screen3::ch#2 ← phi( gfx_init_screen3::@1/(byte*) gfx_init_screen3::ch#3 gfx_init_screen3::@2/(byte*) gfx_init_screen3::ch#1 ) - [808] (byte) gfx_init_screen3::cx#2 ← phi( gfx_init_screen3::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@2/(byte) gfx_init_screen3::cx#1 ) - [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 - [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 - [812] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 - [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 - [814] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 - [815] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 - [816] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 + [809] (byte*) gfx_init_screen3::ch#2 ← phi( gfx_init_screen3::@1/(byte*) gfx_init_screen3::ch#3 gfx_init_screen3::@2/(byte*) gfx_init_screen3::ch#1 ) + [809] (byte) gfx_init_screen3::cx#2 ← phi( gfx_init_screen3::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@2/(byte) gfx_init_screen3::cx#1 ) + [810] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 + [811] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [812] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 + [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 + [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 + [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 + [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 + [817] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 to:gfx_init_screen3::@3 gfx_init_screen3::@3: scope:[gfx_init_screen3] from gfx_init_screen3::@2 - [817] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 - [818] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 + [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 + [819] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 to:gfx_init_screen3::@return gfx_init_screen3::@return: scope:[gfx_init_screen3] from gfx_init_screen3::@3 - [819] return + [820] return to:@return gfx_init_screen2: scope:[gfx_init_screen2] from gfx_init::@2 - [820] phi() + [821] phi() to:gfx_init_screen2::@1 gfx_init_screen2::@1: scope:[gfx_init_screen2] from gfx_init_screen2 gfx_init_screen2::@3 - [821] (byte*) gfx_init_screen2::ch#3 ← phi( gfx_init_screen2/(const byte*) VIC_SCREEN2#0 gfx_init_screen2::@3/(byte*) gfx_init_screen2::ch#1 ) - [821] (byte) gfx_init_screen2::cy#4 ← phi( gfx_init_screen2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@3/(byte) gfx_init_screen2::cy#1 ) + [822] (byte*) gfx_init_screen2::ch#3 ← phi( gfx_init_screen2/(const byte*) VIC_SCREEN2#0 gfx_init_screen2::@3/(byte*) gfx_init_screen2::ch#1 ) + [822] (byte) gfx_init_screen2::cy#4 ← phi( gfx_init_screen2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@3/(byte) gfx_init_screen2::cy#1 ) to:gfx_init_screen2::@2 gfx_init_screen2::@2: scope:[gfx_init_screen2] from gfx_init_screen2::@1 gfx_init_screen2::@2 - [822] (byte*) gfx_init_screen2::ch#2 ← phi( gfx_init_screen2::@1/(byte*) gfx_init_screen2::ch#3 gfx_init_screen2::@2/(byte*) gfx_init_screen2::ch#1 ) - [822] (byte) gfx_init_screen2::cx#2 ← phi( gfx_init_screen2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@2/(byte) gfx_init_screen2::cx#1 ) - [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 - [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 - [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [827] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 - [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 - [829] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 - [830] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 - [831] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 + [823] (byte*) gfx_init_screen2::ch#2 ← phi( gfx_init_screen2::@1/(byte*) gfx_init_screen2::ch#3 gfx_init_screen2::@2/(byte*) gfx_init_screen2::ch#1 ) + [823] (byte) gfx_init_screen2::cx#2 ← phi( gfx_init_screen2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@2/(byte) gfx_init_screen2::cx#1 ) + [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 + [825] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [826] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 + [827] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 + [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 + [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 + [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 + [832] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 to:gfx_init_screen2::@3 gfx_init_screen2::@3: scope:[gfx_init_screen2] from gfx_init_screen2::@2 - [832] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 - [833] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 + [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 + [834] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 to:gfx_init_screen2::@return gfx_init_screen2::@return: scope:[gfx_init_screen2] from gfx_init_screen2::@3 - [834] return + [835] return to:@return gfx_init_screen1: scope:[gfx_init_screen1] from gfx_init::@1 - [835] phi() + [836] phi() to:gfx_init_screen1::@1 gfx_init_screen1::@1: scope:[gfx_init_screen1] from gfx_init_screen1 gfx_init_screen1::@3 - [836] (byte*) gfx_init_screen1::ch#3 ← phi( gfx_init_screen1/(const byte*) VIC_SCREEN1#0 gfx_init_screen1::@3/(byte*) gfx_init_screen1::ch#1 ) - [836] (byte) gfx_init_screen1::cy#4 ← phi( gfx_init_screen1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@3/(byte) gfx_init_screen1::cy#1 ) + [837] (byte*) gfx_init_screen1::ch#3 ← phi( gfx_init_screen1/(const byte*) VIC_SCREEN1#0 gfx_init_screen1::@3/(byte*) gfx_init_screen1::ch#1 ) + [837] (byte) gfx_init_screen1::cy#4 ← phi( gfx_init_screen1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@3/(byte) gfx_init_screen1::cy#1 ) to:gfx_init_screen1::@2 gfx_init_screen1::@2: scope:[gfx_init_screen1] from gfx_init_screen1::@1 gfx_init_screen1::@2 - [837] (byte*) gfx_init_screen1::ch#2 ← phi( gfx_init_screen1::@1/(byte*) gfx_init_screen1::ch#3 gfx_init_screen1::@2/(byte*) gfx_init_screen1::ch#1 ) - [837] (byte) gfx_init_screen1::cx#2 ← phi( gfx_init_screen1::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@2/(byte) gfx_init_screen1::cx#1 ) - [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 - [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 - [841] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 - [842] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 - [843] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 + [838] (byte*) gfx_init_screen1::ch#2 ← phi( gfx_init_screen1::@1/(byte*) gfx_init_screen1::ch#3 gfx_init_screen1::@2/(byte*) gfx_init_screen1::ch#1 ) + [838] (byte) gfx_init_screen1::cx#2 ← phi( gfx_init_screen1::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@2/(byte) gfx_init_screen1::cx#1 ) + [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 + [840] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 + [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 + [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 + [844] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 to:gfx_init_screen1::@3 gfx_init_screen1::@3: scope:[gfx_init_screen1] from gfx_init_screen1::@2 - [844] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 - [845] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 + [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 + [846] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 to:gfx_init_screen1::@return gfx_init_screen1::@return: scope:[gfx_init_screen1] from gfx_init_screen1::@3 - [846] return + [847] return to:@return gfx_init_screen0: scope:[gfx_init_screen0] from gfx_init - [847] phi() + [848] phi() to:gfx_init_screen0::@1 gfx_init_screen0::@1: scope:[gfx_init_screen0] from gfx_init_screen0 gfx_init_screen0::@3 - [848] (byte*) gfx_init_screen0::ch#3 ← phi( gfx_init_screen0/(const byte*) VIC_SCREEN0#0 gfx_init_screen0::@3/(byte*) gfx_init_screen0::ch#1 ) - [848] (byte) gfx_init_screen0::cy#4 ← phi( gfx_init_screen0/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@3/(byte) gfx_init_screen0::cy#1 ) + [849] (byte*) gfx_init_screen0::ch#3 ← phi( gfx_init_screen0/(const byte*) VIC_SCREEN0#0 gfx_init_screen0::@3/(byte*) gfx_init_screen0::ch#1 ) + [849] (byte) gfx_init_screen0::cy#4 ← phi( gfx_init_screen0/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@3/(byte) gfx_init_screen0::cy#1 ) to:gfx_init_screen0::@2 gfx_init_screen0::@2: scope:[gfx_init_screen0] from gfx_init_screen0::@1 gfx_init_screen0::@2 - [849] (byte*) gfx_init_screen0::ch#2 ← phi( gfx_init_screen0::@1/(byte*) gfx_init_screen0::ch#3 gfx_init_screen0::@2/(byte*) gfx_init_screen0::ch#1 ) - [849] (byte) gfx_init_screen0::cx#2 ← phi( gfx_init_screen0::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@2/(byte) gfx_init_screen0::cx#1 ) - [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [853] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 - [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 - [855] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 - [856] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 - [857] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 + [850] (byte*) gfx_init_screen0::ch#2 ← phi( gfx_init_screen0::@1/(byte*) gfx_init_screen0::ch#3 gfx_init_screen0::@2/(byte*) gfx_init_screen0::ch#1 ) + [850] (byte) gfx_init_screen0::cx#2 ← phi( gfx_init_screen0::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@2/(byte) gfx_init_screen0::cx#1 ) + [851] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [852] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [853] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 + [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 + [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 + [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 + [858] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 to:gfx_init_screen0::@3 gfx_init_screen0::@3: scope:[gfx_init_screen0] from gfx_init_screen0::@2 - [858] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 - [859] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 + [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 + [860] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 to:gfx_init_screen0::@return gfx_init_screen0::@return: scope:[gfx_init_screen0] from gfx_init_screen0::@3 - [860] return + [861] return to:@return keyboard_init: scope:[keyboard_init] from main - [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 - [862] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 + [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_init::@return keyboard_init::@return: scope:[keyboard_init] from keyboard_init - [863] return + [864] return to:@return diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log index 06d65254b..35dce694e 100644 --- a/src/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/ref/c64dtv-gfxexplorer.log @@ -5,42 +5,94 @@ CONTROL FLOW GRAPH SSA (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 - to:@3 -@3: scope:[] from @begin + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_FEATURE_DISABLE_TIL_RESET#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 (byte) DTV_LINEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_BORDER_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_HIGHCOLOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_OVERSCAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) DTV_COLORRAM_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BADLINE_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) DTV_CHUNKY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte*) DTV_PALETTE#0 ← ((byte*)) (word/dword/signed dword) 53760 (byte[16]) DTV_PALETTE_DEFAULT#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 54, (byte/word/signed word/dword/signed dword) 190, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 255, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 59, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 154, (byte/signed byte/word/signed word/dword/signed dword) 10 } @@ -56,11 +108,13 @@ CONTROL FLOW GRAPH SSA (byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) 53324 (byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53319 (byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53320 + (byte*) DTV_SPRITE_BANK#0 ← ((byte*)) (word/dword/signed dword) 53325 (byte*) DTV_COLOR_BANK_LO#0 ← ((byte*)) (word/dword/signed dword) 53302 (byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) 53303 (dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) 53309 - to:@4 + (byte*) DTV_GRAPHICS_HICOL_BANK#0 ← ((byte*)) (word/dword/signed dword) 53310 + to:@5 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@6 gfx_init_plane_charset8 gfx_init_plane_charset8::@8 gfx_init_plane_fill gfx_init_plane_fill::@4 gfx_init_plane_horisontal gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal::@8 gfx_init_plane_vertical gfx_init_plane_vertical::@4 (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 ← phi( gfx_init_plane_8bppchunky/(byte) dtvSetCpuBankSegment1::cpuBankIdx#0 gfx_init_plane_8bppchunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_plane_8bppchunky::@6/(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 gfx_init_plane_charset8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#9 gfx_init_plane_charset8::@8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#10 gfx_init_plane_fill/(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 gfx_init_plane_fill::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#12 gfx_init_plane_horisontal/(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 gfx_init_plane_horisontal2/(byte) dtvSetCpuBankSegment1::cpuBankIdx#5 gfx_init_plane_horisontal2::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#6 gfx_init_plane_horisontal::@8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#4 gfx_init_plane_vertical/(byte) dtvSetCpuBankSegment1::cpuBankIdx#7 gfx_init_plane_vertical::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#8 ) (byte*) dtvSetCpuBankSegment1::cpuBank#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 @@ -70,11 +124,75 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_8bppch dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@4: scope:[] from @3 +@5: scope:[] from @4 + (byte*) DTV_BLITTER_SRCA_LO#0 ← ((byte*)) (word/dword/signed dword) 54048 + (byte*) DTV_BLITTER_SRCA_MI#0 ← ((byte*)) (word/dword/signed dword) 54049 + (byte*) DTV_BLITTER_SRCA_HI#0 ← ((byte*)) (word/dword/signed dword) 54050 + (byte*) DTV_BLITTER_SRCA_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54051 + (byte*) DTV_BLITTER_SRCA_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54052 + (byte*) DTV_BLITTER_SRCA_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54053 + (byte*) DTV_BLITTER_SRCA_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54054 + (byte*) DTV_BLITTER_SRCA_STEP#0 ← ((byte*)) (word/dword/signed dword) 54055 + (byte*) DTV_BLITTER_SRCB_LO#0 ← ((byte*)) (word/dword/signed dword) 54056 + (byte*) DTV_BLITTER_SRCB_MI#0 ← ((byte*)) (word/dword/signed dword) 54057 + (byte*) DTV_BLITTER_SRCB_HI#0 ← ((byte*)) (word/dword/signed dword) 54058 + (byte*) DTV_BLITTER_SRCB_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54059 + (byte*) DTV_BLITTER_SRCB_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54060 + (byte*) DTV_BLITTER_SRCB_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54061 + (byte*) DTV_BLITTER_SRCB_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54062 + (byte*) DTV_BLITTER_SRCB_STEP#0 ← ((byte*)) (word/dword/signed dword) 54063 + (byte*) DTV_BLITTER_DEST_LO#0 ← ((byte*)) (word/dword/signed dword) 54064 + (byte*) DTV_BLITTER_DEST_MI#0 ← ((byte*)) (word/dword/signed dword) 54065 + (byte*) DTV_BLITTER_DEST_HI#0 ← ((byte*)) (word/dword/signed dword) 54066 + (byte*) DTV_BLITTER_DEST_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54067 + (byte*) DTV_BLITTER_DEST_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54068 + (byte*) DTV_BLITTER_DEST_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54069 + (byte*) DTV_BLITTER_DEST_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54070 + (byte*) DTV_BLITTER_DEST_STEP#0 ← ((byte*)) (word/dword/signed dword) 54071 + (byte*) DTV_BLITTER_LEN_LO#0 ← ((byte*)) (word/dword/signed dword) 54072 + (byte*) DTV_BLITTER_LEN_HI#0 ← ((byte*)) (word/dword/signed dword) 54073 + (byte*) DTV_BLITTER_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 54074 + (byte) DTV_BLIT_FORCE_START#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_VIC_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_CIA_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_VBLANK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) DTV_BLIT_IRQ_EN#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte*) DTV_BLITTER_TRANSPARANCY#0 ← ((byte*)) (word/dword/signed dword) 54075 + (byte) DTV_BLIT_DISABLE_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_WRITE_TRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_TRANSPARANCY_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) 54078 + (byte) DTV_BLIT_SHIFT0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_SHIFT1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SHIFT2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SHIFT3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) DTV_BLIT_SHIFT4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_SHIFT5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) DTV_BLIT_SHIFT6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) DTV_BLIT_SHIFT7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) DTV_BLIT_AND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_NAND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_NOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_OR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) DTV_BLIT_XOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_XNOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) DTV_BLIT_SUB#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 54079 + (byte) DTV_BLIT_CLEAR_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_STATUS_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 - to:@16 + to:@17 print_str_lines: scope:[print_str_lines] from form_mode::@22 form_mode::@25 (byte*) print_line_cursor#45 ← phi( form_mode::@22/(byte*) print_line_cursor#12 form_mode::@25/(byte*) print_line_cursor#15 ) (byte*) print_char_cursor#47 ← phi( form_mode::@22/(byte*) print_char_cursor#13 form_mode::@25/(byte*) print_char_cursor#16 ) @@ -181,12 +299,12 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#24 return to:@return -@16: scope:[] from @4 - (byte*) print_char_cursor#76 ← phi( @4/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#76 ← phi( @4/(byte*) print_line_cursor#0 ) - (byte*) print_screen#55 ← phi( @4/(byte*) print_screen#0 ) +@17: scope:[] from @5 + (byte*) print_char_cursor#76 ← phi( @5/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#76 ← phi( @5/(byte*) print_line_cursor#0 ) + (byte*) print_screen#55 ← phi( @5/(byte*) print_screen#0 ) (byte[]) print_hextab#0 ← (const string) $69 - to:@23 + to:@24 print_cls: scope:[print_cls] from form_mode::@21 form_mode::@24 (byte*) print_screen#9 ← phi( form_mode::@21/(byte*) print_screen#5 form_mode::@24/(byte*) print_screen#6 ) (byte*) print_cls::sc#0 ← (byte*) print_screen#9 @@ -227,20 +345,78 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#26 return to:@return -@23: scope:[] from @16 - (byte*) print_char_cursor#75 ← phi( @16/(byte*) print_char_cursor#76 ) - (byte*) print_line_cursor#75 ← phi( @16/(byte*) print_line_cursor#76 ) - (byte*) print_screen#53 ← phi( @16/(byte*) print_screen#55 ) +@24: scope:[] from @17 + (byte*) print_char_cursor#75 ← phi( @17/(byte*) print_char_cursor#76 ) + (byte*) print_line_cursor#75 ← phi( @17/(byte*) print_line_cursor#76 ) + (byte*) print_screen#53 ← phi( @17/(byte*) print_screen#55 ) + (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) KEY_4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) KEY_Z#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) KEY_S#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) KEY_E#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) KEY_5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) KEY_R#0 ← (byte/signed byte/word/signed word/dword/signed dword) 17 + (byte) KEY_D#0 ← (byte/signed byte/word/signed word/dword/signed dword) 18 + (byte) KEY_6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 19 + (byte) KEY_C#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 + (byte) KEY_F#0 ← (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) KEY_T#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 + (byte) KEY_X#0 ← (byte/signed byte/word/signed word/dword/signed dword) 23 + (byte) KEY_7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) KEY_Y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 25 + (byte) KEY_G#0 ← (byte/signed byte/word/signed word/dword/signed dword) 26 + (byte) KEY_8#0 ← (byte/signed byte/word/signed word/dword/signed dword) 27 + (byte) KEY_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 28 + (byte) KEY_H#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 + (byte) KEY_U#0 ← (byte/signed byte/word/signed word/dword/signed dword) 30 + (byte) KEY_V#0 ← (byte/signed byte/word/signed word/dword/signed dword) 31 + (byte) KEY_9#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) KEY_I#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 + (byte) KEY_J#0 ← (byte/signed byte/word/signed word/dword/signed dword) 34 + (byte) KEY_0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 35 + (byte) KEY_M#0 ← (byte/signed byte/word/signed word/dword/signed dword) 36 + (byte) KEY_K#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 + (byte) KEY_O#0 ← (byte/signed byte/word/signed word/dword/signed dword) 38 + (byte) KEY_N#0 ← (byte/signed byte/word/signed word/dword/signed dword) 39 + (byte) KEY_PLUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) KEY_P#0 ← (byte/signed byte/word/signed word/dword/signed dword) 41 + (byte) KEY_L#0 ← (byte/signed byte/word/signed word/dword/signed dword) 42 + (byte) KEY_MINUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 43 + (byte) KEY_DOT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 44 + (byte) KEY_COLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 45 + (byte) KEY_AT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 46 + (byte) KEY_COMMA#0 ← (byte/signed byte/word/signed word/dword/signed dword) 47 + (byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 (byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52 + (byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 57 (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58 + (byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 + (byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62 + (byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 63 + (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@27 + to:@28 keyboard_init: scope:[keyboard_init] from main *((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -260,10 +436,10 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3 return to:@return -@27: scope:[] from @23 - (byte*) print_char_cursor#74 ← phi( @23/(byte*) print_char_cursor#75 ) - (byte*) print_line_cursor#74 ← phi( @23/(byte*) print_line_cursor#75 ) - (byte*) print_screen#51 ← phi( @23/(byte*) print_screen#53 ) +@28: scope:[] from @24 + (byte*) print_char_cursor#74 ← phi( @24/(byte*) print_char_cursor#75 ) + (byte*) print_line_cursor#74 ← phi( @24/(byte*) print_line_cursor#75 ) + (byte*) print_screen#51 ← phi( @24/(byte*) print_screen#53 ) (byte[8]) keyboard_events#0 ← { fill( 8, 0) } (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -274,7 +450,7 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } - to:@30 + to:@31 keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3 gfx_mode::@21 (byte) keyboard_events_size#110 ← phi( form_control::@3/(byte) keyboard_events_size#48 gfx_mode::@21/(byte) keyboard_events_size#44 ) (byte) keyboard_event_scan::keycode#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -530,18 +706,18 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get (byte) keyboard_events_size#5 ← (byte) keyboard_events_size#24 return to:@return -@30: scope:[] from @27 - (byte) keyboard_modifiers#106 ← phi( @27/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#122 ← phi( @27/(byte) keyboard_events_size#0 ) - (byte*) print_char_cursor#72 ← phi( @27/(byte*) print_char_cursor#74 ) - (byte*) print_line_cursor#72 ← phi( @27/(byte*) print_line_cursor#74 ) - (byte*) print_screen#49 ← phi( @27/(byte*) print_screen#51 ) +@31: scope:[] from @28 + (byte) keyboard_modifiers#106 ← phi( @28/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#122 ← phi( @28/(byte) keyboard_events_size#0 ) + (byte*) print_char_cursor#72 ← phi( @28/(byte*) print_char_cursor#74 ) + (byte*) print_line_cursor#72 ← phi( @28/(byte*) print_line_cursor#74 ) + (byte*) print_screen#49 ← phi( @28/(byte*) print_screen#51 ) (byte[256]) bitmap_plot_xlo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@39 + to:@40 bitmap_init: scope:[bitmap_init] from gfx_init_vic_bitmap (byte*) bitmap_init::bitmap#2 ← phi( gfx_init_vic_bitmap/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -1085,15 +1261,15 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return -main: scope:[main] from @67 - (byte) form_fields_cnt#72 ← phi( @67/(byte) form_fields_cnt#73 ) - (byte) form_field_idx#55 ← phi( @67/(byte) form_field_idx#36 ) - (byte) keyboard_modifiers#94 ← phi( @67/(byte) keyboard_modifiers#53 ) - (byte) keyboard_events_size#101 ← phi( @67/(byte) keyboard_events_size#53 ) - (signed byte) form_cursor_count#47 ← phi( @67/(signed byte) form_cursor_count#26 ) - (byte*) print_char_cursor#63 ← phi( @67/(byte*) print_char_cursor#46 ) - (byte*) print_line_cursor#63 ← phi( @67/(byte*) print_line_cursor#44 ) - (byte*) print_screen#40 ← phi( @67/(byte*) print_screen#25 ) +main: scope:[main] from @68 + (byte) form_fields_cnt#72 ← phi( @68/(byte) form_fields_cnt#73 ) + (byte) form_field_idx#55 ← phi( @68/(byte) form_field_idx#36 ) + (byte) keyboard_modifiers#94 ← phi( @68/(byte) keyboard_modifiers#53 ) + (byte) keyboard_events_size#101 ← phi( @68/(byte) keyboard_events_size#53 ) + (signed byte) form_cursor_count#47 ← phi( @68/(signed byte) form_cursor_count#26 ) + (byte*) print_char_cursor#63 ← phi( @68/(byte*) print_char_cursor#46 ) + (byte*) print_line_cursor#63 ← phi( @68/(byte*) print_line_cursor#44 ) + (byte*) print_screen#40 ← phi( @68/(byte*) print_screen#25 ) asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -1190,12 +1366,12 @@ main::@return: scope:[main] from main::@1 (byte) form_field_idx#1 ← (byte) form_field_idx#12 return to:@return -@39: scope:[] from @30 - (byte) keyboard_modifiers#101 ← phi( @30/(byte) keyboard_modifiers#106 ) - (byte) keyboard_events_size#113 ← phi( @30/(byte) keyboard_events_size#122 ) - (byte*) print_char_cursor#69 ← phi( @30/(byte*) print_char_cursor#72 ) - (byte*) print_line_cursor#69 ← phi( @30/(byte*) print_line_cursor#72 ) - (byte*) print_screen#46 ← phi( @30/(byte*) print_screen#49 ) +@40: scope:[] from @31 + (byte) keyboard_modifiers#101 ← phi( @31/(byte) keyboard_modifiers#106 ) + (byte) keyboard_events_size#113 ← phi( @31/(byte) keyboard_events_size#122 ) + (byte*) print_char_cursor#69 ← phi( @31/(byte*) print_char_cursor#72 ) + (byte*) print_line_cursor#69 ← phi( @31/(byte*) print_line_cursor#72 ) + (byte*) print_screen#46 ← phi( @31/(byte*) print_screen#49 ) (byte*) VIC_SCREEN0#0 ← ((byte*)) (word/signed word/dword/signed dword) 16384 (byte*) VIC_SCREEN1#0 ← ((byte*)) (word/signed word/dword/signed dword) 17408 (byte*) VIC_SCREEN2#0 ← ((byte*)) (word/signed word/dword/signed dword) 18432 @@ -1211,7 +1387,7 @@ main::@return: scope:[main] from main::@1 (dword) PLANE_BLANK#0 ← (dword/signed dword) 229376 (dword) PLANE_FULL#0 ← (dword/signed dword) 237568 (dword) PLANE_CHARSET8#0 ← (dword/signed dword) 245760 - to:@42 + to:@43 get_plane: scope:[get_plane] from gfx_mode::@46 gfx_mode::@9 (byte) get_plane::idx#2 ← phi( gfx_mode::@46/(byte) get_plane::idx#1 gfx_mode::@9/(byte) get_plane::idx#0 ) (bool~) get_plane::$0 ← (byte) get_plane::idx#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1428,12 +1604,12 @@ get_vic_charset::@return: scope:[get_vic_charset] from get_vic_charset::@1 get_ get_vic_charset::@3: scope:[get_vic_charset] from get_vic_charset::@2 (byte*) get_vic_charset::return#3 ← (byte*) VIC_CHARSET_ROM#0 to:get_vic_charset::@return -@42: scope:[] from @39 - (byte) keyboard_modifiers#95 ← phi( @39/(byte) keyboard_modifiers#101 ) - (byte) keyboard_events_size#102 ← phi( @39/(byte) keyboard_events_size#113 ) - (byte*) print_char_cursor#64 ← phi( @39/(byte*) print_char_cursor#69 ) - (byte*) print_line_cursor#64 ← phi( @39/(byte*) print_line_cursor#69 ) - (byte*) print_screen#41 ← phi( @39/(byte*) print_screen#46 ) +@43: scope:[] from @40 + (byte) keyboard_modifiers#95 ← phi( @40/(byte) keyboard_modifiers#101 ) + (byte) keyboard_events_size#102 ← phi( @40/(byte) keyboard_events_size#113 ) + (byte*) print_char_cursor#64 ← phi( @40/(byte*) print_char_cursor#69 ) + (byte*) print_line_cursor#64 ← phi( @40/(byte*) print_line_cursor#69 ) + (byte*) print_screen#41 ← phi( @40/(byte*) print_screen#46 ) (byte*) FORM_SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) FORM_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 6144 (string~) $1 ← (const string) $70 + (const string) $71 @@ -1485,7 +1661,7 @@ get_vic_charset::@3: scope:[get_vic_charset] from get_vic_charset::@2 (byte[]) preset_sixsfred#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) preset_sixsfred2#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[]) preset_8bpppixelcell#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } - to:@44 + to:@45 apply_preset: scope:[apply_preset] from form_mode::@18 (byte) form_fields_cnt#23 ← phi( form_mode::@18/(byte) form_fields_cnt#37 ) (byte) apply_preset::idx#1 ← phi( form_mode::@18/(byte) apply_preset::idx#0 ) @@ -1722,13 +1898,13 @@ render_preset_name::@45: scope:[render_preset_name] from render_preset_name::@2 render_preset_name::@return: scope:[render_preset_name] from render_preset_name::@45 return to:@return -@44: scope:[] from @42 - (byte) form_fields_cnt#75 ← phi( @42/(byte) form_fields_cnt#0 ) - (byte) keyboard_modifiers#88 ← phi( @42/(byte) keyboard_modifiers#95 ) - (byte) keyboard_events_size#91 ← phi( @42/(byte) keyboard_events_size#102 ) - (byte*) print_char_cursor#62 ← phi( @42/(byte*) print_char_cursor#64 ) - (byte*) print_line_cursor#61 ← phi( @42/(byte*) print_line_cursor#64 ) - (byte*) print_screen#39 ← phi( @42/(byte*) print_screen#41 ) +@45: scope:[] from @43 + (byte) form_fields_cnt#75 ← phi( @43/(byte) form_fields_cnt#0 ) + (byte) keyboard_modifiers#88 ← phi( @43/(byte) keyboard_modifiers#95 ) + (byte) keyboard_events_size#91 ← phi( @43/(byte) keyboard_events_size#102 ) + (byte*) print_char_cursor#62 ← phi( @43/(byte*) print_char_cursor#64 ) + (byte*) print_line_cursor#61 ← phi( @43/(byte*) print_line_cursor#64 ) + (byte*) print_screen#39 ← phi( @43/(byte*) print_screen#41 ) (byte*~) $32 ← (byte[]) form_fields_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*) form_preset#0 ← (byte*~) $32 (byte*~) $33 ← (byte[]) form_fields_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -1801,7 +1977,7 @@ render_preset_name::@return: scope:[render_preset_name] from render_preset_name (byte*) form_vic_bg3_hi#0 ← (byte*~) $66 (byte*~) $67 ← (byte[]) form_fields_val#0 + (byte/signed byte/word/signed word/dword/signed dword) 35 (byte*) form_vic_bg3_lo#0 ← (byte*~) $67 - to:@63 + to:@64 gfx_mode: scope:[gfx_mode] from main::@9 (byte) keyboard_modifiers#139 ← phi( main::@9/(byte) keyboard_modifiers#7 ) (byte) keyboard_events_size#159 ← phi( main::@9/(byte) keyboard_events_size#6 ) @@ -3277,20 +3453,20 @@ form_mode::@33: scope:[form_mode] from form_mode::@32 (byte*) print_line_cursor#50 ← phi( form_mode::@32/(byte*) print_line_cursor#60 ) (byte*) print_screen#30 ← phi( form_mode::@32/(byte*) print_screen#38 ) to:form_mode::@2 -@63: scope:[] from @44 - (byte) form_fields_cnt#74 ← phi( @44/(byte) form_fields_cnt#75 ) - (byte) keyboard_modifiers#77 ← phi( @44/(byte) keyboard_modifiers#88 ) - (byte) keyboard_events_size#77 ← phi( @44/(byte) keyboard_events_size#91 ) - (byte*) print_char_cursor#56 ← phi( @44/(byte*) print_char_cursor#62 ) - (byte*) print_line_cursor#53 ← phi( @44/(byte*) print_line_cursor#61 ) - (byte*) print_screen#33 ← phi( @44/(byte*) print_screen#39 ) +@64: scope:[] from @45 + (byte) form_fields_cnt#74 ← phi( @45/(byte) form_fields_cnt#75 ) + (byte) keyboard_modifiers#77 ← phi( @45/(byte) keyboard_modifiers#88 ) + (byte) keyboard_events_size#77 ← phi( @45/(byte) keyboard_events_size#91 ) + (byte*) print_char_cursor#56 ← phi( @45/(byte*) print_char_cursor#62 ) + (byte*) print_line_cursor#53 ← phi( @45/(byte*) print_line_cursor#61 ) + (byte*) print_screen#33 ← phi( @45/(byte*) print_screen#39 ) (byte[25]) form_line_lo#0 ← { fill( 25, 0) } (byte[25]) form_line_hi#0 ← { fill( 25, 0) } (byte) form_field_idx#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed byte) FORM_CURSOR_BLINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 (signed word/signed byte/signed dword~) $68 ← (signed byte) FORM_CURSOR_BLINK#0 / (byte/signed byte/word/signed word/dword/signed dword) 2 (signed byte) form_cursor_count#4 ← (signed word/signed byte/signed dword~) $68 - to:@67 + to:@68 form_set_screen: scope:[form_set_screen] from form_mode::@26 (byte*) form_set_screen::screen#1 ← phi( form_mode::@26/(byte*) form_set_screen::screen#0 ) (byte*) form_set_screen::line#0 ← (byte*) form_set_screen::screen#1 @@ -3632,25 +3808,25 @@ form_control::@30: scope:[form_control] from form_control::@9 (signed byte) form_cursor_count#25 ← phi( form_control::@9/(signed byte) form_cursor_count#37 ) (byte) form_control::return#5 ← (byte/word/signed word/dword/signed dword) 255 to:form_control::@return -@67: scope:[] from @63 - (byte) form_fields_cnt#73 ← phi( @63/(byte) form_fields_cnt#74 ) - (byte) form_field_idx#36 ← phi( @63/(byte) form_field_idx#4 ) - (byte) keyboard_modifiers#53 ← phi( @63/(byte) keyboard_modifiers#77 ) - (byte) keyboard_events_size#53 ← phi( @63/(byte) keyboard_events_size#77 ) - (signed byte) form_cursor_count#26 ← phi( @63/(signed byte) form_cursor_count#4 ) - (byte*) print_char_cursor#46 ← phi( @63/(byte*) print_char_cursor#56 ) - (byte*) print_line_cursor#44 ← phi( @63/(byte*) print_line_cursor#53 ) - (byte*) print_screen#25 ← phi( @63/(byte*) print_screen#33 ) +@68: scope:[] from @64 + (byte) form_fields_cnt#73 ← phi( @64/(byte) form_fields_cnt#74 ) + (byte) form_field_idx#36 ← phi( @64/(byte) form_field_idx#4 ) + (byte) keyboard_modifiers#53 ← phi( @64/(byte) keyboard_modifiers#77 ) + (byte) keyboard_events_size#53 ← phi( @64/(byte) keyboard_events_size#77 ) + (signed byte) form_cursor_count#26 ← phi( @64/(signed byte) form_cursor_count#4 ) + (byte*) print_char_cursor#46 ← phi( @64/(byte*) print_char_cursor#56 ) + (byte*) print_line_cursor#44 ← phi( @64/(byte*) print_line_cursor#53 ) + (byte*) print_screen#25 ← phi( @64/(byte*) print_screen#33 ) call main - to:@68 -@68: scope:[] from @67 - (byte) form_field_idx#24 ← phi( @67/(byte) form_field_idx#1 ) - (byte) keyboard_modifiers#33 ← phi( @67/(byte) keyboard_modifiers#9 ) - (byte) keyboard_events_size#36 ← phi( @67/(byte) keyboard_events_size#8 ) - (signed byte) form_cursor_count#17 ← phi( @67/(signed byte) form_cursor_count#1 ) - (byte*) print_char_cursor#36 ← phi( @67/(byte*) print_char_cursor#11 ) - (byte*) print_line_cursor#35 ← phi( @67/(byte*) print_line_cursor#10 ) - (byte*) print_screen#18 ← phi( @67/(byte*) print_screen#4 ) + to:@69 +@69: scope:[] from @68 + (byte) form_field_idx#24 ← phi( @68/(byte) form_field_idx#1 ) + (byte) keyboard_modifiers#33 ← phi( @68/(byte) keyboard_modifiers#9 ) + (byte) keyboard_events_size#36 ← phi( @68/(byte) keyboard_events_size#8 ) + (signed byte) form_cursor_count#17 ← phi( @68/(signed byte) form_cursor_count#1 ) + (byte*) print_char_cursor#36 ← phi( @68/(byte*) print_char_cursor#11 ) + (byte*) print_line_cursor#35 ← phi( @68/(byte*) print_line_cursor#10 ) + (byte*) print_screen#18 ← phi( @68/(byte*) print_screen#4 ) (byte*) print_screen#8 ← (byte*) print_screen#18 (byte*) print_line_cursor#18 ← (byte*) print_line_cursor#35 (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#36 @@ -3659,7 +3835,7 @@ form_control::@30: scope:[form_control] from form_control::@9 (byte) keyboard_modifiers#16 ← (byte) keyboard_modifiers#33 (byte) form_field_idx#10 ← (byte) form_field_idx#24 to:@end -@end: scope:[] from @68 +@end: scope:[] from @69 SYMBOL TABLE SSA (byte~) $0 @@ -3765,18 +3941,18 @@ SYMBOL TABLE SSA (const string) $97 = (string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" (const string) $98 = (string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" (const string) $99 = (string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" -(label) @16 -(label) @23 -(label) @27 -(label) @3 -(label) @30 -(label) @39 +(label) @17 +(label) @24 +(label) @28 +(label) @31 (label) @4 -(label) @42 -(label) @44 -(label) @63 -(label) @67 +(label) @40 +(label) @43 +(label) @45 +(label) @5 +(label) @64 (label) @68 +(label) @69 (label) @begin (label) @end (byte*) BGCOL @@ -3789,10 +3965,18 @@ SYMBOL TABLE SSA (byte*) BGCOL3#0 (byte*) BGCOL4 (byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 (byte*) CHARGEN (byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A#0 (byte*) CIA1_PORT_A_DDR @@ -3801,12 +3985,160 @@ SYMBOL TABLE SSA (byte*) CIA1_PORT_B#0 (byte*) CIA1_PORT_B_DDR (byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A#0 (byte*) CIA2_PORT_A_DDR (byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 (byte*) COLS (byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) DTV_BADLINE_OFF +(byte) DTV_BADLINE_OFF#0 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_ALU#0 +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL#0 +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_CONTROL2#0 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LIN_LO#0 +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_LO#0 +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MI#0 +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_HI#0 +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_MOD_LO#0 +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_DEST_STEP#0 +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_HI#0 +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_LEN_LO#0 +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LIN_LO#0 +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_LO#0 +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MI#0 +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_HI#0 +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_MOD_LO#0 +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCA_STEP#0 +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LIN_LO#0 +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_LO#0 +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MI#0 +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_HI#0 +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_MOD_LO#0 +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_SRCB_STEP#0 +(byte*) DTV_BLITTER_TRANSPARANCY +(byte*) DTV_BLITTER_TRANSPARANCY#0 +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_ADD#0 +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_AND#0 +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CIA_IRQ#0 +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_CLEAR_IRQ#0 +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_CONT#0 +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DEST_FWD#0 +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_DISABLE_B#0 +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_FORCE_START#0 +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_IRQ_EN#0 +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NAND#0 +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_NOR#0 +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_OR#0 +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT0#0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT1#0 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT2#0 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT3#0 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT4#0 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT5#0 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT6#0 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SHIFT7#0 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_CONT#0 +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCA_FWD#0 +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_CONT#0 +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_SRCB_FWD#0 +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_BUSY#0 +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_STATUS_IRQ#0 +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_SUB#0 +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_TRANSPARANCY_NONE#0 +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VBLANK#0 +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_VIC_IRQ#0 +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT#0 +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XNOR#0 +(byte) DTV_BLIT_XOR +(byte) DTV_BLIT_XOR#0 (byte) DTV_BORDER_OFF (byte) DTV_BORDER_OFF#0 (byte) DTV_CHUNKY @@ -3823,8 +4155,12 @@ SYMBOL TABLE SSA (byte*) DTV_CONTROL#0 (byte*) DTV_FEATURE (byte*) DTV_FEATURE#0 +(byte) DTV_FEATURE_DISABLE_TIL_RESET +(byte) DTV_FEATURE_DISABLE_TIL_RESET#0 (byte) DTV_FEATURE_ENABLE (byte) DTV_FEATURE_ENABLE#0 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_HICOL_BANK#0 (byte*) DTV_GRAPHICS_VIC_BANK (byte*) DTV_GRAPHICS_VIC_BANK#0 (byte) DTV_HIGHCOLOR @@ -3861,6 +4197,8 @@ SYMBOL TABLE SSA (byte*) DTV_PLANEB_START_MI#0 (byte*) DTV_PLANEB_STEP (byte*) DTV_PLANEB_STEP#0 +(byte*) DTV_SPRITE_BANK +(byte*) DTV_SPRITE_BANK#0 (byte*) FORM_CHARSET (byte*) FORM_CHARSET#0 (byte[]) FORM_COLS @@ -3871,6 +4209,64 @@ SYMBOL TABLE SSA (byte*) FORM_SCREEN#0 (byte[]) FORM_TEXT (byte[]) FORM_TEXT#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte) KEY_0 +(byte) KEY_0#0 +(byte) KEY_1 +(byte) KEY_1#0 +(byte) KEY_2 +(byte) KEY_2#0 +(byte) KEY_3 +(byte) KEY_3#0 +(byte) KEY_4 +(byte) KEY_4#0 +(byte) KEY_5 +(byte) KEY_5#0 +(byte) KEY_6 +(byte) KEY_6#0 +(byte) KEY_7 +(byte) KEY_7#0 +(byte) KEY_8 +(byte) KEY_8#0 +(byte) KEY_9 +(byte) KEY_9#0 +(byte) KEY_A +(byte) KEY_A#0 +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_LEFT#0 +(byte) KEY_ARROW_UP +(byte) KEY_ARROW_UP#0 +(byte) KEY_ASTERISK +(byte) KEY_ASTERISK#0 +(byte) KEY_AT +(byte) KEY_AT#0 +(byte) KEY_B +(byte) KEY_B#0 +(byte) KEY_C +(byte) KEY_C#0 +(byte) KEY_COLON +(byte) KEY_COLON#0 +(byte) KEY_COMMA +(byte) KEY_COMMA#0 (byte) KEY_COMMODORE (byte) KEY_COMMODORE#0 (byte) KEY_CRSR_DOWN @@ -3879,8 +4275,46 @@ SYMBOL TABLE SSA (byte) KEY_CRSR_RIGHT#0 (byte) KEY_CTRL (byte) KEY_CTRL#0 +(byte) KEY_D +(byte) KEY_D#0 +(byte) KEY_DEL +(byte) KEY_DEL#0 +(byte) KEY_DOT +(byte) KEY_DOT#0 +(byte) KEY_E +(byte) KEY_E#0 +(byte) KEY_EQUALS +(byte) KEY_EQUALS#0 +(byte) KEY_F +(byte) KEY_F#0 +(byte) KEY_F1 +(byte) KEY_F1#0 +(byte) KEY_F3 +(byte) KEY_F3#0 +(byte) KEY_F5 +(byte) KEY_F5#0 +(byte) KEY_F7 +(byte) KEY_F7#0 +(byte) KEY_G +(byte) KEY_G#0 +(byte) KEY_H +(byte) KEY_H#0 +(byte) KEY_HOME +(byte) KEY_HOME#0 +(byte) KEY_I +(byte) KEY_I#0 +(byte) KEY_J +(byte) KEY_J#0 +(byte) KEY_K +(byte) KEY_K#0 +(byte) KEY_L +(byte) KEY_L#0 (byte) KEY_LSHIFT (byte) KEY_LSHIFT#0 +(byte) KEY_M +(byte) KEY_M#0 +(byte) KEY_MINUS +(byte) KEY_MINUS#0 (byte) KEY_MODIFIER_COMMODORE (byte) KEY_MODIFIER_COMMODORE#0 (byte) KEY_MODIFIER_CTRL @@ -3891,10 +4325,62 @@ SYMBOL TABLE SSA (byte) KEY_MODIFIER_RSHIFT#0 (byte) KEY_MODIFIER_SHIFT (byte) KEY_MODIFIER_SHIFT#0 +(byte) KEY_N +(byte) KEY_N#0 +(byte) KEY_O +(byte) KEY_O#0 +(byte) KEY_P +(byte) KEY_P#0 +(byte) KEY_PLUS +(byte) KEY_PLUS#0 +(byte) KEY_POUND +(byte) KEY_POUND#0 +(byte) KEY_Q +(byte) KEY_Q#0 +(byte) KEY_R +(byte) KEY_R#0 +(byte) KEY_RETURN +(byte) KEY_RETURN#0 (byte) KEY_RSHIFT (byte) KEY_RSHIFT#0 +(byte) KEY_RUNSTOP +(byte) KEY_RUNSTOP#0 +(byte) KEY_S +(byte) KEY_S#0 +(byte) KEY_SEMICOLON +(byte) KEY_SEMICOLON#0 +(byte) KEY_SLASH +(byte) KEY_SLASH#0 (byte) KEY_SPACE (byte) KEY_SPACE#0 +(byte) KEY_T +(byte) KEY_T#0 +(byte) KEY_U +(byte) KEY_U#0 +(byte) KEY_V +(byte) KEY_V#0 +(byte) KEY_W +(byte) KEY_W#0 +(byte) KEY_X +(byte) KEY_X#0 +(byte) KEY_Y +(byte) KEY_Y#0 +(byte) KEY_Z +(byte) KEY_Z#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (dword) PLANE_8BPP_CHUNKY (dword) PLANE_8BPP_CHUNKY#0 (dword) PLANE_BLANK @@ -3913,16 +4399,50 @@ SYMBOL TABLE SSA (dword) PLANE_VERTICAL2#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 (byte*) PROCPORT_DDR (byte*) PROCPORT_DDR#0 (byte) PROCPORT_DDR_MEMORY_MASK (byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 (byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_CHARROM#0 (byte) PROCPORT_RAM_IO (byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 (byte*) VIC_BITMAP (byte*) VIC_BITMAP#0 (byte) VIC_BMM @@ -3945,6 +4465,8 @@ SYMBOL TABLE SSA (byte*) VIC_MEMORY#0 (byte) VIC_RSEL (byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 (byte*) VIC_SCREEN0 (byte*) VIC_SCREEN0#0 (byte*) VIC_SCREEN1 @@ -3955,6 +4477,10 @@ SYMBOL TABLE SSA (byte*) VIC_SCREEN3#0 (byte*) VIC_SCREEN4 (byte*) VIC_SCREEN4#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) apply_preset((byte) apply_preset::idx) (bool~) apply_preset::$0 (bool~) apply_preset::$1 @@ -5969,6 +6495,8 @@ SYMBOL TABLE SSA (byte) gfx_mode::vic_control2#1 (byte) gfx_mode::vic_control2#2 (byte) gfx_mode::vic_control2#3 +(byte[]) keyboard_char_keycodes +(byte[]) keyboard_char_keycodes#0 (byte()) keyboard_event_get() (bool~) keyboard_event_get::$0 (label) keyboard_event_get::@1 @@ -7770,40 +8298,92 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 Constant (const byte) PROCPORT_RAM_IO#0 = 53 Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 Constant (const byte*) BGCOL1#0 = ((byte*))53281 Constant (const byte*) BGCOL2#0 = ((byte*))53282 Constant (const byte*) BGCOL3#0 = ((byte*))53283 Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 Constant (const byte) VIC_ECM#0 = 64 Constant (const byte) VIC_BMM#0 = 32 Constant (const byte) VIC_DEN#0 = 16 Constant (const byte) VIC_RSEL#0 = 8 Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 Constant (const byte) VIC_MCM#0 = 16 Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) DTV_FEATURE#0 = ((byte*))53311 Constant (const byte) DTV_FEATURE_ENABLE#0 = 1 +Constant (const byte) DTV_FEATURE_DISABLE_TIL_RESET#0 = 2 Constant (const byte*) DTV_CONTROL#0 = ((byte*))53308 Constant (const byte) DTV_LINEAR#0 = 1 Constant (const byte) DTV_BORDER_OFF#0 = 2 Constant (const byte) DTV_HIGHCOLOR#0 = 4 Constant (const byte) DTV_OVERSCAN#0 = 8 Constant (const byte) DTV_COLORRAM_OFF#0 = 16 +Constant (const byte) DTV_BADLINE_OFF#0 = 32 Constant (const byte) DTV_CHUNKY#0 = 64 Constant (const byte*) DTV_PALETTE#0 = ((byte*))53760 Constant (const byte[16]) DTV_PALETTE_DEFAULT#0 = { 0, 15, 54, 190, 88, 219, 134, 255, 41, 38, 59, 5, 7, 223, 154, 10 } @@ -7819,20 +8399,143 @@ Constant (const byte*) DTV_PLANEB_START_HI#0 = ((byte*))53323 Constant (const byte*) DTV_PLANEB_STEP#0 = ((byte*))53324 Constant (const byte*) DTV_PLANEB_MODULO_LO#0 = ((byte*))53319 Constant (const byte*) DTV_PLANEB_MODULO_HI#0 = ((byte*))53320 +Constant (const byte*) DTV_SPRITE_BANK#0 = ((byte*))53325 Constant (const byte*) DTV_COLOR_BANK_LO#0 = ((byte*))53302 Constant (const byte*) DTV_COLOR_BANK_HI#0 = ((byte*))53303 Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = 120832 Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))53309 +Constant (const byte*) DTV_GRAPHICS_HICOL_BANK#0 = ((byte*))53310 Constant (const byte*) dtvSetCpuBankSegment1::cpuBank#0 = ((byte*))255 +Constant (const byte*) DTV_BLITTER_SRCA_LO#0 = ((byte*))54048 +Constant (const byte*) DTV_BLITTER_SRCA_MI#0 = ((byte*))54049 +Constant (const byte*) DTV_BLITTER_SRCA_HI#0 = ((byte*))54050 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_LO#0 = ((byte*))54051 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_HI#0 = ((byte*))54052 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_LO#0 = ((byte*))54053 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_HI#0 = ((byte*))54054 +Constant (const byte*) DTV_BLITTER_SRCA_STEP#0 = ((byte*))54055 +Constant (const byte*) DTV_BLITTER_SRCB_LO#0 = ((byte*))54056 +Constant (const byte*) DTV_BLITTER_SRCB_MI#0 = ((byte*))54057 +Constant (const byte*) DTV_BLITTER_SRCB_HI#0 = ((byte*))54058 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_LO#0 = ((byte*))54059 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_HI#0 = ((byte*))54060 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_LO#0 = ((byte*))54061 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_HI#0 = ((byte*))54062 +Constant (const byte*) DTV_BLITTER_SRCB_STEP#0 = ((byte*))54063 +Constant (const byte*) DTV_BLITTER_DEST_LO#0 = ((byte*))54064 +Constant (const byte*) DTV_BLITTER_DEST_MI#0 = ((byte*))54065 +Constant (const byte*) DTV_BLITTER_DEST_HI#0 = ((byte*))54066 +Constant (const byte*) DTV_BLITTER_DEST_MOD_LO#0 = ((byte*))54067 +Constant (const byte*) DTV_BLITTER_DEST_MOD_HI#0 = ((byte*))54068 +Constant (const byte*) DTV_BLITTER_DEST_LIN_LO#0 = ((byte*))54069 +Constant (const byte*) DTV_BLITTER_DEST_LIN_HI#0 = ((byte*))54070 +Constant (const byte*) DTV_BLITTER_DEST_STEP#0 = ((byte*))54071 +Constant (const byte*) DTV_BLITTER_LEN_LO#0 = ((byte*))54072 +Constant (const byte*) DTV_BLITTER_LEN_HI#0 = ((byte*))54073 +Constant (const byte*) DTV_BLITTER_CONTROL#0 = ((byte*))54074 +Constant (const byte) DTV_BLIT_FORCE_START#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_FWD#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_FWD#0 = 4 +Constant (const byte) DTV_BLIT_DEST_FWD#0 = 8 +Constant (const byte) DTV_BLIT_VIC_IRQ#0 = 16 +Constant (const byte) DTV_BLIT_CIA_IRQ#0 = 32 +Constant (const byte) DTV_BLIT_VBLANK#0 = 64 +Constant (const byte) DTV_BLIT_IRQ_EN#0 = 128 +Constant (const byte*) DTV_BLITTER_TRANSPARANCY#0 = ((byte*))54075 +Constant (const byte) DTV_BLIT_DISABLE_B#0 = 1 +Constant (const byte) DTV_BLIT_WRITE_TRANSPARENT#0 = 2 +Constant (const byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 = 4 +Constant (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 = 0 +Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))54078 +Constant (const byte) DTV_BLIT_SHIFT0#0 = 0 +Constant (const byte) DTV_BLIT_SHIFT1#0 = 1 +Constant (const byte) DTV_BLIT_SHIFT2#0 = 2 +Constant (const byte) DTV_BLIT_SHIFT3#0 = 3 +Constant (const byte) DTV_BLIT_SHIFT4#0 = 4 +Constant (const byte) DTV_BLIT_SHIFT5#0 = 5 +Constant (const byte) DTV_BLIT_SHIFT6#0 = 6 +Constant (const byte) DTV_BLIT_SHIFT7#0 = 7 +Constant (const byte) DTV_BLIT_AND#0 = 0 +Constant (const byte) DTV_BLIT_NAND#0 = 8 +Constant (const byte) DTV_BLIT_NOR#0 = 16 +Constant (const byte) DTV_BLIT_OR#0 = 24 +Constant (const byte) DTV_BLIT_XOR#0 = 32 +Constant (const byte) DTV_BLIT_XNOR#0 = 40 +Constant (const byte) DTV_BLIT_ADD#0 = 48 +Constant (const byte) DTV_BLIT_SUB#0 = 56 +Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))54079 +Constant (const byte) DTV_BLIT_CLEAR_IRQ#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_CONT#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_CONT#0 = 4 +Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8 +Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1 +Constant (const byte) DTV_BLIT_STATUS_IRQ#0 = 2 Constant (const byte*) print_screen#0 = ((byte*))1024 Constant (const byte[]) print_hextab#0 = $69 +Constant (const byte) KEY_DEL#0 = 0 +Constant (const byte) KEY_RETURN#0 = 1 Constant (const byte) KEY_CRSR_RIGHT#0 = 2 +Constant (const byte) KEY_F7#0 = 3 +Constant (const byte) KEY_F1#0 = 4 +Constant (const byte) KEY_F3#0 = 5 +Constant (const byte) KEY_F5#0 = 6 Constant (const byte) KEY_CRSR_DOWN#0 = 7 +Constant (const byte) KEY_3#0 = 8 +Constant (const byte) KEY_W#0 = 9 +Constant (const byte) KEY_A#0 = 10 +Constant (const byte) KEY_4#0 = 11 +Constant (const byte) KEY_Z#0 = 12 +Constant (const byte) KEY_S#0 = 13 +Constant (const byte) KEY_E#0 = 14 Constant (const byte) KEY_LSHIFT#0 = 15 +Constant (const byte) KEY_5#0 = 16 +Constant (const byte) KEY_R#0 = 17 +Constant (const byte) KEY_D#0 = 18 +Constant (const byte) KEY_6#0 = 19 +Constant (const byte) KEY_C#0 = 20 +Constant (const byte) KEY_F#0 = 21 +Constant (const byte) KEY_T#0 = 22 +Constant (const byte) KEY_X#0 = 23 +Constant (const byte) KEY_7#0 = 24 +Constant (const byte) KEY_Y#0 = 25 +Constant (const byte) KEY_G#0 = 26 +Constant (const byte) KEY_8#0 = 27 +Constant (const byte) KEY_B#0 = 28 +Constant (const byte) KEY_H#0 = 29 +Constant (const byte) KEY_U#0 = 30 +Constant (const byte) KEY_V#0 = 31 +Constant (const byte) KEY_9#0 = 32 +Constant (const byte) KEY_I#0 = 33 +Constant (const byte) KEY_J#0 = 34 +Constant (const byte) KEY_0#0 = 35 +Constant (const byte) KEY_M#0 = 36 +Constant (const byte) KEY_K#0 = 37 +Constant (const byte) KEY_O#0 = 38 +Constant (const byte) KEY_N#0 = 39 +Constant (const byte) KEY_PLUS#0 = 40 +Constant (const byte) KEY_P#0 = 41 +Constant (const byte) KEY_L#0 = 42 +Constant (const byte) KEY_MINUS#0 = 43 +Constant (const byte) KEY_DOT#0 = 44 +Constant (const byte) KEY_COLON#0 = 45 +Constant (const byte) KEY_AT#0 = 46 +Constant (const byte) KEY_COMMA#0 = 47 +Constant (const byte) KEY_POUND#0 = 48 +Constant (const byte) KEY_ASTERISK#0 = 49 +Constant (const byte) KEY_SEMICOLON#0 = 50 +Constant (const byte) KEY_HOME#0 = 51 Constant (const byte) KEY_RSHIFT#0 = 52 +Constant (const byte) KEY_EQUALS#0 = 53 +Constant (const byte) KEY_ARROW_UP#0 = 54 +Constant (const byte) KEY_SLASH#0 = 55 +Constant (const byte) KEY_1#0 = 56 +Constant (const byte) KEY_ARROW_LEFT#0 = 57 Constant (const byte) KEY_CTRL#0 = 58 +Constant (const byte) KEY_2#0 = 59 Constant (const byte) KEY_SPACE#0 = 60 Constant (const byte) KEY_COMMODORE#0 = 61 +Constant (const byte) KEY_Q#0 = 62 +Constant (const byte) KEY_RUNSTOP#0 = 63 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) } @@ -7971,6 +8674,7 @@ Constant (const byte) form_control::return#3 = 0 Constant (const byte) form_control::return#4 = 0 Constant (const byte) form_control::return#5 = 255 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 Constant (const byte) keyboard_event_pressed::keycode#0 = KEY_LSHIFT#0 Constant (const byte) keyboard_event_pressed::keycode#1 = KEY_RSHIFT#0 @@ -8298,24 +9002,24 @@ Resolved ranged next value form_mode::i#1 ← ++ form_mode::i#2 to ++ Resolved ranged comparison value if(form_mode::i#1!=rangelast(0,15)) goto form_mode::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16 Resolved ranged next value form_set_screen::y#1 ← ++ form_set_screen::y#2 to ++ Resolved ranged comparison value if(form_set_screen::y#1!=rangelast(0,24)) goto form_set_screen::@1 to (byte/signed byte/word/signed word/dword/signed dword) 25 -Culled Empty Block (label) @3 Culled Empty Block (label) @4 +Culled Empty Block (label) @5 Culled Empty Block (label) print_str_lines::@2 Culled Empty Block (label) print_str_lines::@11 Culled Empty Block (label) print_ln::@2 -Culled Empty Block (label) @16 +Culled Empty Block (label) @17 Culled Empty Block (label) print_cls::@2 -Culled Empty Block (label) @23 -Culled Empty Block (label) @27 +Culled Empty Block (label) @24 +Culled Empty Block (label) @28 Culled Empty Block (label) keyboard_event_scan::@2 Culled Empty Block (label) keyboard_event_scan::@6 Culled Empty Block (label) keyboard_event_scan::@12 Culled Empty Block (label) keyboard_event_get::@1 -Culled Empty Block (label) @30 +Culled Empty Block (label) @31 Culled Empty Block (label) bitmap_init::@6 Culled Empty Block (label) main::@8 Culled Empty Block (label) main::@10 -Culled Empty Block (label) @39 +Culled Empty Block (label) @40 Culled Empty Block (label) get_plane::@1 Culled Empty Block (label) get_plane::@2 Culled Empty Block (label) get_plane::@3 @@ -8337,7 +9041,7 @@ Culled Empty Block (label) get_vic_screen::@4 Culled Empty Block (label) get_vic_screen::@14 Culled Empty Block (label) get_vic_charset::@1 Culled Empty Block (label) get_vic_charset::@5 -Culled Empty Block (label) @42 +Culled Empty Block (label) @43 Culled Empty Block (label) apply_preset::@1 Culled Empty Block (label) apply_preset::@2 Culled Empty Block (label) apply_preset::@3 @@ -8360,7 +9064,7 @@ Culled Empty Block (label) render_preset_name::@8 Culled Empty Block (label) render_preset_name::@9 Culled Empty Block (label) render_preset_name::@10 Culled Empty Block (label) render_preset_name::@11 -Culled Empty Block (label) @44 +Culled Empty Block (label) @45 Culled Empty Block (label) gfx_mode::@12 Culled Empty Block (label) gfx_mode::@34 Culled Empty Block (label) gfx_mode::@17 @@ -8375,13 +9079,13 @@ Culled Empty Block (label) form_mode::@3 Culled Empty Block (label) form_mode::@6 Culled Empty Block (label) form_mode::@9 Culled Empty Block (label) form_mode::@33 -Culled Empty Block (label) @63 +Culled Empty Block (label) @64 Culled Empty Block (label) form_control::@6 Culled Empty Block (label) form_control::@8 Culled Empty Block (label) form_control::@11 Culled Empty Block (label) form_control::@13 Culled Empty Block (label) form_control::@14 -Culled Empty Block (label) @68 +Culled Empty Block (label) @69 Successful SSA optimization Pass2CullEmptyBlocks Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2 Alias (word) bitmap_plot::plotter_y#0 = (word~) bitmap_plot::$3 @@ -8916,7 +9620,7 @@ Added new block during phi lifting gfx_init_screen1::@6(between gfx_init_screen1 Added new block during phi lifting gfx_init_screen0::@5(between gfx_init_screen0::@3 and gfx_init_screen0::@1) Added new block during phi lifting gfx_init_screen0::@6(between gfx_init_screen0::@2 and gfx_init_screen0::@2) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @67 +Adding NOP phi() at start of @68 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@7 Adding NOP phi() at start of main::@2 @@ -8997,20 +9701,20 @@ Calls in [form_control] to form_field_ptr:441 keyboard_event_scan:452 keyboard_e Calls in [print_str_lines] to print_ln:525 Calls in [gfx_init] to gfx_init_screen0:551 gfx_init_screen1:553 gfx_init_screen2:555 gfx_init_screen3:557 gfx_init_screen4:559 gfx_init_charset:561 gfx_init_vic_bitmap:563 gfx_init_plane_8bppchunky:565 gfx_init_plane_charset8:567 gfx_init_plane_horisontal:569 gfx_init_plane_vertical:571 gfx_init_plane_horisontal2:573 gfx_init_plane_vertical2:575 gfx_init_plane_blank:577 gfx_init_plane_full:579 Calls in [gfx_init_plane_full] to gfx_init_plane_fill:582 -Calls in [gfx_init_plane_fill] to dtvSetCpuBankSegment1:590 dtvSetCpuBankSegment1:605 -Calls in [gfx_init_plane_blank] to gfx_init_plane_fill:616 -Calls in [gfx_init_plane_vertical2] to gfx_init_plane_fill:619 -Calls in [gfx_init_plane_horisontal2] to dtvSetCpuBankSegment1:622 dtvSetCpuBankSegment1:635 -Calls in [gfx_init_plane_vertical] to dtvSetCpuBankSegment1:642 dtvSetCpuBankSegment1:653 -Calls in [gfx_init_plane_horisontal] to dtvSetCpuBankSegment1:660 dtvSetCpuBankSegment1:675 -Calls in [gfx_init_plane_charset8] to dtvSetCpuBankSegment1:685 dtvSetCpuBankSegment1:713 -Calls in [gfx_init_plane_8bppchunky] to dtvSetCpuBankSegment1:728 dtvSetCpuBankSegment1:736 dtvSetCpuBankSegment1:749 -Calls in [gfx_init_vic_bitmap] to bitmap_init:760 bitmap_clear:762 bitmap_line:768 -Calls in [bitmap_line] to bitmap_line_ydxi:788 bitmap_line_xdyi:800 bitmap_line_ydxd:813 bitmap_line_xdyd:824 bitmap_line_ydxd:839 bitmap_line_xdyd:850 bitmap_line_ydxi:863 bitmap_line_xdyi:874 -Calls in [bitmap_line_xdyi] to bitmap_plot:885 -Calls in [bitmap_line_ydxi] to bitmap_plot:919 -Calls in [bitmap_line_xdyd] to bitmap_plot:946 -Calls in [bitmap_line_ydxd] to bitmap_plot:973 +Calls in [gfx_init_plane_fill] to dtvSetCpuBankSegment1:590 dtvSetCpuBankSegment1:606 +Calls in [gfx_init_plane_blank] to gfx_init_plane_fill:617 +Calls in [gfx_init_plane_vertical2] to gfx_init_plane_fill:620 +Calls in [gfx_init_plane_horisontal2] to dtvSetCpuBankSegment1:623 dtvSetCpuBankSegment1:636 +Calls in [gfx_init_plane_vertical] to dtvSetCpuBankSegment1:643 dtvSetCpuBankSegment1:654 +Calls in [gfx_init_plane_horisontal] to dtvSetCpuBankSegment1:661 dtvSetCpuBankSegment1:676 +Calls in [gfx_init_plane_charset8] to dtvSetCpuBankSegment1:686 dtvSetCpuBankSegment1:714 +Calls in [gfx_init_plane_8bppchunky] to dtvSetCpuBankSegment1:729 dtvSetCpuBankSegment1:737 dtvSetCpuBankSegment1:750 +Calls in [gfx_init_vic_bitmap] to bitmap_init:761 bitmap_clear:763 bitmap_line:769 +Calls in [bitmap_line] to bitmap_line_ydxi:789 bitmap_line_xdyi:801 bitmap_line_ydxd:814 bitmap_line_xdyd:825 bitmap_line_ydxd:840 bitmap_line_xdyd:851 bitmap_line_ydxi:864 bitmap_line_xdyi:875 +Calls in [bitmap_line_xdyi] to bitmap_plot:886 +Calls in [bitmap_line_ydxi] to bitmap_plot:920 +Calls in [bitmap_line_xdyd] to bitmap_plot:947 +Calls in [bitmap_line_ydxd] to bitmap_plot:974 Created 192 initial phi equivalence classes Coalesced [16] form_cursor_count#66 ← form_cursor_count#16 @@ -9122,193 +9826,193 @@ Coalesced [539] print_cls::sc#3 ← print_cls::sc#0 Coalesced [546] print_cls::sc#4 ← print_cls::sc#1 Coalesced [548] print_screen#1 ← print_set_screen::screen#2 Coalesced [589] dtvSetCpuBankSegment1::cpuBankIdx#15 ← dtvSetCpuBankSegment1::cpuBankIdx#11 -Coalesced [596] gfx_init_plane_fill::gfxb#7 ← gfx_init_plane_fill::gfxb#3 -Coalesced [607] gfx_init_plane_fill::gfxb#5 ← gfx_init_plane_fill::gfxb#1 -Coalesced [608] gfx_init_plane_fill::by#5 ← gfx_init_plane_fill::by#1 -Coalesced (already) [609] gfx_init_plane_fill::gfxb#8 ← gfx_init_plane_fill::gfxb#1 -Coalesced [610] gfx_init_plane_fill::bx#3 ← gfx_init_plane_fill::bx#1 -Coalesced [624] gfx_init_plane_horisontal2::gfxa#6 ← gfx_init_plane_horisontal2::gfxa#3 -Coalesced [637] gfx_init_plane_horisontal2::ay#5 ← gfx_init_plane_horisontal2::ay#1 -Coalesced [638] gfx_init_plane_horisontal2::gfxa#5 ← gfx_init_plane_horisontal2::gfxa#1 -Coalesced (already) [639] gfx_init_plane_horisontal2::gfxa#7 ← gfx_init_plane_horisontal2::gfxa#1 -Coalesced [640] gfx_init_plane_horisontal2::ax#3 ← gfx_init_plane_horisontal2::ax#1 -Coalesced [644] gfx_init_plane_vertical::gfxb#6 ← gfx_init_plane_vertical::gfxb#3 -Coalesced [655] gfx_init_plane_vertical::gfxb#5 ← gfx_init_plane_vertical::gfxb#1 -Coalesced [656] gfx_init_plane_vertical::by#5 ← gfx_init_plane_vertical::by#1 -Coalesced (already) [657] gfx_init_plane_vertical::gfxb#7 ← gfx_init_plane_vertical::gfxb#1 -Coalesced [658] gfx_init_plane_vertical::bx#3 ← gfx_init_plane_vertical::bx#1 -Coalesced [662] gfx_init_plane_horisontal::gfxa#10 ← gfx_init_plane_horisontal::gfxa#6 -Coalesced [668] gfx_init_plane_horisontal::gfxa#13 ← gfx_init_plane_horisontal::gfxa#2 -Coalesced [677] gfx_init_plane_horisontal::ay#8 ← gfx_init_plane_horisontal::ay#1 -Coalesced [678] gfx_init_plane_horisontal::gfxa#9 ← gfx_init_plane_horisontal::gfxa#7 -Coalesced (already) [679] gfx_init_plane_horisontal::gfxa#11 ← gfx_init_plane_horisontal::gfxa#7 -Coalesced [680] gfx_init_plane_horisontal::ax#6 ← gfx_init_plane_horisontal::ax#1 -Coalesced [683] gfx_init_plane_horisontal::gfxa#12 ← gfx_init_plane_horisontal::gfxa#1 -Coalesced [688] gfx_init_plane_charset8::chargen#10 ← gfx_init_plane_charset8::chargen#3 -Coalesced [689] gfx_init_plane_charset8::gfxa#10 ← gfx_init_plane_charset8::gfxa#6 -Coalesced [690] gfx_init_plane_charset8::col#10 ← gfx_init_plane_charset8::col#6 -Coalesced [694] gfx_init_plane_charset8::bits#5 ← gfx_init_plane_charset8::bits#0 -Coalesced [695] gfx_init_plane_charset8::gfxa#12 ← gfx_init_plane_charset8::gfxa#5 -Coalesced [696] gfx_init_plane_charset8::col#12 ← gfx_init_plane_charset8::col#5 -Not coalescing [700] gfx_init_plane_charset8::c#3 ← gfx_init_plane_charset8::col#2 -Coalesced [715] gfx_init_plane_charset8::chargen#9 ← gfx_init_plane_charset8::chargen#1 -Coalesced [716] gfx_init_plane_charset8::gfxa#9 ← gfx_init_plane_charset8::gfxa#1 -Coalesced [717] gfx_init_plane_charset8::col#9 ← gfx_init_plane_charset8::col#1 -Coalesced [718] gfx_init_plane_charset8::ch#9 ← gfx_init_plane_charset8::ch#1 -Coalesced (already) [719] gfx_init_plane_charset8::chargen#11 ← gfx_init_plane_charset8::chargen#1 -Coalesced (already) [720] gfx_init_plane_charset8::gfxa#11 ← gfx_init_plane_charset8::gfxa#1 -Coalesced (already) [721] gfx_init_plane_charset8::col#11 ← gfx_init_plane_charset8::col#1 -Coalesced [722] gfx_init_plane_charset8::cr#7 ← gfx_init_plane_charset8::cr#1 -Coalesced [723] gfx_init_plane_charset8::bits#6 ← gfx_init_plane_charset8::bits#1 -Coalesced (already) [724] gfx_init_plane_charset8::gfxa#13 ← gfx_init_plane_charset8::gfxa#1 -Coalesced (already) [725] gfx_init_plane_charset8::col#13 ← gfx_init_plane_charset8::col#1 -Coalesced [726] gfx_init_plane_charset8::cp#5 ← gfx_init_plane_charset8::cp#1 -Coalesced [730] gfx_init_plane_8bppchunky::gfxb#8 ← gfx_init_plane_8bppchunky::gfxb#5 -Coalesced [731] gfx_init_plane_8bppchunky::gfxbCpuBank#11 ← gfx_init_plane_8bppchunky::gfxbCpuBank#7 -Coalesced [735] dtvSetCpuBankSegment1::cpuBankIdx#14 ← dtvSetCpuBankSegment1::cpuBankIdx#1 -Coalesced [738] gfx_init_plane_8bppchunky::gfxbCpuBank#14 ← gfx_init_plane_8bppchunky::gfxbCpuBank#2 -Coalesced [751] gfx_init_plane_8bppchunky::gfxb#7 ← gfx_init_plane_8bppchunky::gfxb#1 -Coalesced [752] gfx_init_plane_8bppchunky::y#8 ← gfx_init_plane_8bppchunky::y#1 -Coalesced [753] gfx_init_plane_8bppchunky::gfxbCpuBank#10 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 -Coalesced (already) [754] gfx_init_plane_8bppchunky::gfxb#9 ← gfx_init_plane_8bppchunky::gfxb#1 -Coalesced [755] gfx_init_plane_8bppchunky::x#6 ← gfx_init_plane_8bppchunky::x#1 -Coalesced (already) [756] gfx_init_plane_8bppchunky::gfxbCpuBank#12 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 -Coalesced [757] gfx_init_plane_8bppchunky::gfxb#10 ← gfx_init_plane_8bppchunky::gfxb#3 -Coalesced (already) [758] gfx_init_plane_8bppchunky::gfxbCpuBank#13 ← gfx_init_plane_8bppchunky::gfxbCpuBank#4 -Coalesced [772] gfx_init_vic_bitmap::l#4 ← gfx_init_vic_bitmap::l#1 -Coalesced [783] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#0 -Coalesced [784] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#0 -Coalesced [785] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#0 -Coalesced [786] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#0 -Coalesced [787] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#0 -Coalesced [795] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#0 -Coalesced [796] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#0 -Coalesced [797] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#0 -Coalesced [798] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#0 -Coalesced [799] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#0 -Coalesced [808] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 -Coalesced [809] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 -Coalesced [810] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 -Coalesced [811] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 -Coalesced [812] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 -Coalesced [819] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#0 -Coalesced [820] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#0 -Coalesced [821] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#0 -Coalesced [822] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#0 -Coalesced [823] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#0 -Coalesced [834] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 -Coalesced [835] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 -Coalesced [836] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 -Coalesced [837] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 -Coalesced [838] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 -Coalesced [845] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#1 -Coalesced [846] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#1 -Coalesced [847] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#1 -Coalesced [848] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#1 -Coalesced [849] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#1 -Coalesced [858] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#1 -Coalesced [859] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#1 -Coalesced [860] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#1 -Coalesced [861] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#1 -Coalesced [862] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#1 -Coalesced [869] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#1 -Coalesced [870] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#1 -Coalesced [871] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#1 -Coalesced [872] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#1 -Coalesced [873] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#1 -Coalesced [877] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 -Coalesced [878] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 -Coalesced [879] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 -Coalesced [883] bitmap_plot::x#6 ← bitmap_plot::x#0 -Coalesced [884] bitmap_plot::y#6 ← bitmap_plot::y#0 -Coalesced [891] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 -Coalesced [892] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 -Coalesced [897] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 -Coalesced [898] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 -Coalesced [899] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 -Coalesced (already) [900] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 -Coalesced [901] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 -Coalesced [911] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 -Coalesced [912] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 -Coalesced [913] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 -Coalesced [917] bitmap_plot::x#8 ← bitmap_plot::x#2 -Coalesced [918] bitmap_plot::y#8 ← bitmap_plot::y#2 -Coalesced [925] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 -Coalesced [926] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 -Coalesced [931] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 -Coalesced [932] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 -Coalesced [933] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 -Coalesced (already) [934] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 -Coalesced [935] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 -Coalesced [938] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 -Coalesced [939] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 -Coalesced [940] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 -Coalesced [944] bitmap_plot::x#5 ← bitmap_plot::x#1 -Coalesced [945] bitmap_plot::y#5 ← bitmap_plot::y#1 -Coalesced [952] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 -Coalesced [953] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 -Coalesced [958] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 -Coalesced [959] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 -Coalesced [960] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 -Coalesced (already) [961] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 -Coalesced [962] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 -Coalesced [965] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 -Coalesced [966] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 -Coalesced [967] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 -Coalesced [971] bitmap_plot::x#7 ← bitmap_plot::x#3 -Coalesced [972] bitmap_plot::y#7 ← bitmap_plot::y#3 -Coalesced [979] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 -Coalesced [980] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 -Coalesced [985] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 -Coalesced [986] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 -Coalesced [987] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 -Coalesced (already) [988] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 -Coalesced [989] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 -Coalesced [993] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [1002] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [1003] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [1004] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [1005] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [1028] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [1033] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [1034] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [1035] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [1036] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [1037] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [1038] bitmap_init::bits#6 ← bitmap_init::bits#1 -Coalesced [1041] gfx_init_charset::chargen#6 ← gfx_init_charset::chargen#3 -Coalesced [1042] gfx_init_charset::charset#6 ← gfx_init_charset::charset#3 -Coalesced [1053] gfx_init_charset::chargen#5 ← gfx_init_charset::chargen#1 -Coalesced [1054] gfx_init_charset::charset#5 ← gfx_init_charset::charset#1 -Coalesced [1055] gfx_init_charset::c#5 ← gfx_init_charset::c#1 -Coalesced (already) [1056] gfx_init_charset::chargen#7 ← gfx_init_charset::chargen#1 -Coalesced (already) [1057] gfx_init_charset::charset#7 ← gfx_init_charset::charset#1 -Coalesced [1058] gfx_init_charset::l#3 ← gfx_init_charset::l#1 -Coalesced [1061] gfx_init_screen4::ch#6 ← gfx_init_screen4::ch#3 -Coalesced [1070] gfx_init_screen4::ch#5 ← gfx_init_screen4::ch#1 -Coalesced [1071] gfx_init_screen4::cy#5 ← gfx_init_screen4::cy#1 -Coalesced (already) [1072] gfx_init_screen4::ch#7 ← gfx_init_screen4::ch#1 -Coalesced [1073] gfx_init_screen4::cx#3 ← gfx_init_screen4::cx#1 -Coalesced [1076] gfx_init_screen3::ch#6 ← gfx_init_screen3::ch#3 -Coalesced [1089] gfx_init_screen3::cy#5 ← gfx_init_screen3::cy#1 -Coalesced [1090] gfx_init_screen3::ch#5 ← gfx_init_screen3::ch#1 -Coalesced [1091] gfx_init_screen3::cx#3 ← gfx_init_screen3::cx#1 -Coalesced (already) [1092] gfx_init_screen3::ch#7 ← gfx_init_screen3::ch#1 -Coalesced [1095] gfx_init_screen2::ch#6 ← gfx_init_screen2::ch#3 -Coalesced [1109] gfx_init_screen2::cy#5 ← gfx_init_screen2::cy#1 -Coalesced [1110] gfx_init_screen2::ch#5 ← gfx_init_screen2::ch#1 -Coalesced [1111] gfx_init_screen2::cx#3 ← gfx_init_screen2::cx#1 -Coalesced (already) [1112] gfx_init_screen2::ch#7 ← gfx_init_screen2::ch#1 -Coalesced [1115] gfx_init_screen1::ch#6 ← gfx_init_screen1::ch#3 -Coalesced [1126] gfx_init_screen1::cy#5 ← gfx_init_screen1::cy#1 -Coalesced [1127] gfx_init_screen1::ch#5 ← gfx_init_screen1::ch#1 -Coalesced [1128] gfx_init_screen1::cx#3 ← gfx_init_screen1::cx#1 -Coalesced (already) [1129] gfx_init_screen1::ch#7 ← gfx_init_screen1::ch#1 -Coalesced [1132] gfx_init_screen0::ch#6 ← gfx_init_screen0::ch#3 -Coalesced [1145] gfx_init_screen0::cy#5 ← gfx_init_screen0::cy#1 -Coalesced [1146] gfx_init_screen0::ch#5 ← gfx_init_screen0::ch#1 -Coalesced [1147] gfx_init_screen0::cx#3 ← gfx_init_screen0::cx#1 -Coalesced (already) [1148] gfx_init_screen0::ch#7 ← gfx_init_screen0::ch#1 +Coalesced [597] gfx_init_plane_fill::gfxb#7 ← gfx_init_plane_fill::gfxb#3 +Coalesced [608] gfx_init_plane_fill::gfxb#5 ← gfx_init_plane_fill::gfxb#1 +Coalesced [609] gfx_init_plane_fill::by#5 ← gfx_init_plane_fill::by#1 +Coalesced (already) [610] gfx_init_plane_fill::gfxb#8 ← gfx_init_plane_fill::gfxb#1 +Coalesced [611] gfx_init_plane_fill::bx#3 ← gfx_init_plane_fill::bx#1 +Coalesced [625] gfx_init_plane_horisontal2::gfxa#6 ← gfx_init_plane_horisontal2::gfxa#3 +Coalesced [638] gfx_init_plane_horisontal2::ay#5 ← gfx_init_plane_horisontal2::ay#1 +Coalesced [639] gfx_init_plane_horisontal2::gfxa#5 ← gfx_init_plane_horisontal2::gfxa#1 +Coalesced (already) [640] gfx_init_plane_horisontal2::gfxa#7 ← gfx_init_plane_horisontal2::gfxa#1 +Coalesced [641] gfx_init_plane_horisontal2::ax#3 ← gfx_init_plane_horisontal2::ax#1 +Coalesced [645] gfx_init_plane_vertical::gfxb#6 ← gfx_init_plane_vertical::gfxb#3 +Coalesced [656] gfx_init_plane_vertical::gfxb#5 ← gfx_init_plane_vertical::gfxb#1 +Coalesced [657] gfx_init_plane_vertical::by#5 ← gfx_init_plane_vertical::by#1 +Coalesced (already) [658] gfx_init_plane_vertical::gfxb#7 ← gfx_init_plane_vertical::gfxb#1 +Coalesced [659] gfx_init_plane_vertical::bx#3 ← gfx_init_plane_vertical::bx#1 +Coalesced [663] gfx_init_plane_horisontal::gfxa#10 ← gfx_init_plane_horisontal::gfxa#6 +Coalesced [669] gfx_init_plane_horisontal::gfxa#13 ← gfx_init_plane_horisontal::gfxa#2 +Coalesced [678] gfx_init_plane_horisontal::ay#8 ← gfx_init_plane_horisontal::ay#1 +Coalesced [679] gfx_init_plane_horisontal::gfxa#9 ← gfx_init_plane_horisontal::gfxa#7 +Coalesced (already) [680] gfx_init_plane_horisontal::gfxa#11 ← gfx_init_plane_horisontal::gfxa#7 +Coalesced [681] gfx_init_plane_horisontal::ax#6 ← gfx_init_plane_horisontal::ax#1 +Coalesced [684] gfx_init_plane_horisontal::gfxa#12 ← gfx_init_plane_horisontal::gfxa#1 +Coalesced [689] gfx_init_plane_charset8::chargen#10 ← gfx_init_plane_charset8::chargen#3 +Coalesced [690] gfx_init_plane_charset8::gfxa#10 ← gfx_init_plane_charset8::gfxa#6 +Coalesced [691] gfx_init_plane_charset8::col#10 ← gfx_init_plane_charset8::col#6 +Coalesced [695] gfx_init_plane_charset8::bits#5 ← gfx_init_plane_charset8::bits#0 +Coalesced [696] gfx_init_plane_charset8::gfxa#12 ← gfx_init_plane_charset8::gfxa#5 +Coalesced [697] gfx_init_plane_charset8::col#12 ← gfx_init_plane_charset8::col#5 +Not coalescing [701] gfx_init_plane_charset8::c#3 ← gfx_init_plane_charset8::col#2 +Coalesced [716] gfx_init_plane_charset8::chargen#9 ← gfx_init_plane_charset8::chargen#1 +Coalesced [717] gfx_init_plane_charset8::gfxa#9 ← gfx_init_plane_charset8::gfxa#1 +Coalesced [718] gfx_init_plane_charset8::col#9 ← gfx_init_plane_charset8::col#1 +Coalesced [719] gfx_init_plane_charset8::ch#9 ← gfx_init_plane_charset8::ch#1 +Coalesced (already) [720] gfx_init_plane_charset8::chargen#11 ← gfx_init_plane_charset8::chargen#1 +Coalesced (already) [721] gfx_init_plane_charset8::gfxa#11 ← gfx_init_plane_charset8::gfxa#1 +Coalesced (already) [722] gfx_init_plane_charset8::col#11 ← gfx_init_plane_charset8::col#1 +Coalesced [723] gfx_init_plane_charset8::cr#7 ← gfx_init_plane_charset8::cr#1 +Coalesced [724] gfx_init_plane_charset8::bits#6 ← gfx_init_plane_charset8::bits#1 +Coalesced (already) [725] gfx_init_plane_charset8::gfxa#13 ← gfx_init_plane_charset8::gfxa#1 +Coalesced (already) [726] gfx_init_plane_charset8::col#13 ← gfx_init_plane_charset8::col#1 +Coalesced [727] gfx_init_plane_charset8::cp#5 ← gfx_init_plane_charset8::cp#1 +Coalesced [731] gfx_init_plane_8bppchunky::gfxb#8 ← gfx_init_plane_8bppchunky::gfxb#5 +Coalesced [732] gfx_init_plane_8bppchunky::gfxbCpuBank#11 ← gfx_init_plane_8bppchunky::gfxbCpuBank#7 +Coalesced [736] dtvSetCpuBankSegment1::cpuBankIdx#14 ← dtvSetCpuBankSegment1::cpuBankIdx#1 +Coalesced [739] gfx_init_plane_8bppchunky::gfxbCpuBank#14 ← gfx_init_plane_8bppchunky::gfxbCpuBank#2 +Coalesced [752] gfx_init_plane_8bppchunky::gfxb#7 ← gfx_init_plane_8bppchunky::gfxb#1 +Coalesced [753] gfx_init_plane_8bppchunky::y#8 ← gfx_init_plane_8bppchunky::y#1 +Coalesced [754] gfx_init_plane_8bppchunky::gfxbCpuBank#10 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 +Coalesced (already) [755] gfx_init_plane_8bppchunky::gfxb#9 ← gfx_init_plane_8bppchunky::gfxb#1 +Coalesced [756] gfx_init_plane_8bppchunky::x#6 ← gfx_init_plane_8bppchunky::x#1 +Coalesced (already) [757] gfx_init_plane_8bppchunky::gfxbCpuBank#12 ← gfx_init_plane_8bppchunky::gfxbCpuBank#8 +Coalesced [758] gfx_init_plane_8bppchunky::gfxb#10 ← gfx_init_plane_8bppchunky::gfxb#3 +Coalesced (already) [759] gfx_init_plane_8bppchunky::gfxbCpuBank#13 ← gfx_init_plane_8bppchunky::gfxbCpuBank#4 +Coalesced [773] gfx_init_vic_bitmap::l#4 ← gfx_init_vic_bitmap::l#1 +Coalesced [784] bitmap_line_ydxi::xd#7 ← bitmap_line_ydxi::xd#0 +Coalesced [785] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#0 +Coalesced [786] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#0 +Coalesced [787] bitmap_line_ydxi::yd#7 ← bitmap_line_ydxi::yd#0 +Coalesced [788] bitmap_line_ydxi::y1#7 ← bitmap_line_ydxi::y1#0 +Coalesced [796] bitmap_line_xdyi::yd#8 ← bitmap_line_xdyi::yd#0 +Coalesced [797] bitmap_line_xdyi::x#9 ← bitmap_line_xdyi::x#0 +Coalesced [798] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#0 +Coalesced [799] bitmap_line_xdyi::xd#8 ← bitmap_line_xdyi::xd#0 +Coalesced [800] bitmap_line_xdyi::x1#8 ← bitmap_line_xdyi::x1#0 +Coalesced [809] bitmap_line_ydxd::xd#7 ← bitmap_line_ydxd::xd#0 +Coalesced [810] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#0 +Coalesced [811] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#0 +Coalesced [812] bitmap_line_ydxd::yd#7 ← bitmap_line_ydxd::yd#0 +Coalesced [813] bitmap_line_ydxd::y1#7 ← bitmap_line_ydxd::y1#0 +Coalesced [820] bitmap_line_xdyd::yd#8 ← bitmap_line_xdyd::yd#0 +Coalesced [821] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#0 +Coalesced [822] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#0 +Coalesced [823] bitmap_line_xdyd::xd#8 ← bitmap_line_xdyd::xd#0 +Coalesced [824] bitmap_line_xdyd::x1#8 ← bitmap_line_xdyd::x1#0 +Coalesced [835] bitmap_line_ydxd::xd#8 ← bitmap_line_ydxd::xd#1 +Coalesced [836] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#1 +Coalesced [837] bitmap_line_ydxd::y#10 ← bitmap_line_ydxd::y#1 +Coalesced [838] bitmap_line_ydxd::yd#8 ← bitmap_line_ydxd::yd#1 +Coalesced [839] bitmap_line_ydxd::y1#8 ← bitmap_line_ydxd::y1#1 +Coalesced [846] bitmap_line_xdyd::yd#7 ← bitmap_line_xdyd::yd#1 +Coalesced [847] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#1 +Coalesced [848] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#1 +Coalesced [849] bitmap_line_xdyd::xd#7 ← bitmap_line_xdyd::xd#1 +Coalesced [850] bitmap_line_xdyd::x1#7 ← bitmap_line_xdyd::x1#1 +Coalesced [859] bitmap_line_ydxi::xd#8 ← bitmap_line_ydxi::xd#1 +Coalesced [860] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#1 +Coalesced [861] bitmap_line_ydxi::y#9 ← bitmap_line_ydxi::y#1 +Coalesced [862] bitmap_line_ydxi::yd#8 ← bitmap_line_ydxi::yd#1 +Coalesced [863] bitmap_line_ydxi::y1#8 ← bitmap_line_ydxi::y1#1 +Coalesced [870] bitmap_line_xdyi::yd#7 ← bitmap_line_xdyi::yd#1 +Coalesced [871] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#1 +Coalesced [872] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#1 +Coalesced [873] bitmap_line_xdyi::xd#7 ← bitmap_line_xdyi::xd#1 +Coalesced [874] bitmap_line_xdyi::x1#7 ← bitmap_line_xdyi::x1#1 +Coalesced [878] bitmap_line_xdyi::x#10 ← bitmap_line_xdyi::x#6 +Coalesced [879] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#5 +Coalesced [880] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#0 +Coalesced [884] bitmap_plot::x#6 ← bitmap_plot::x#0 +Coalesced [885] bitmap_plot::y#6 ← bitmap_plot::y#0 +Coalesced [892] bitmap_line_xdyi::y#12 ← bitmap_line_xdyi::y#2 +Coalesced [893] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#2 +Coalesced [898] bitmap_line_xdyi::x#11 ← bitmap_line_xdyi::x#2 +Coalesced [899] bitmap_line_xdyi::y#11 ← bitmap_line_xdyi::y#6 +Coalesced [900] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#6 +Coalesced (already) [901] bitmap_line_xdyi::y#13 ← bitmap_line_xdyi::y#3 +Coalesced [902] bitmap_line_xdyi::e#10 ← bitmap_line_xdyi::e#1 +Coalesced [912] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#5 +Coalesced [913] bitmap_line_ydxi::y#10 ← bitmap_line_ydxi::y#6 +Coalesced [914] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 +Coalesced [918] bitmap_plot::x#8 ← bitmap_plot::x#2 +Coalesced [919] bitmap_plot::y#8 ← bitmap_plot::y#2 +Coalesced [926] bitmap_line_ydxi::x#12 ← bitmap_line_ydxi::x#2 +Coalesced [927] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 +Coalesced [932] bitmap_line_ydxi::x#11 ← bitmap_line_ydxi::x#6 +Coalesced [933] bitmap_line_ydxi::y#11 ← bitmap_line_ydxi::y#2 +Coalesced [934] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 +Coalesced (already) [935] bitmap_line_ydxi::x#13 ← bitmap_line_ydxi::x#3 +Coalesced [936] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 +Coalesced [939] bitmap_line_xdyd::x#10 ← bitmap_line_xdyd::x#6 +Coalesced [940] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#5 +Coalesced [941] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#0 +Coalesced [945] bitmap_plot::x#5 ← bitmap_plot::x#1 +Coalesced [946] bitmap_plot::y#5 ← bitmap_plot::y#1 +Coalesced [953] bitmap_line_xdyd::y#12 ← bitmap_line_xdyd::y#2 +Coalesced [954] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#2 +Coalesced [959] bitmap_line_xdyd::x#11 ← bitmap_line_xdyd::x#2 +Coalesced [960] bitmap_line_xdyd::y#11 ← bitmap_line_xdyd::y#6 +Coalesced [961] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#6 +Coalesced (already) [962] bitmap_line_xdyd::y#13 ← bitmap_line_xdyd::y#3 +Coalesced [963] bitmap_line_xdyd::e#10 ← bitmap_line_xdyd::e#1 +Coalesced [966] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#5 +Coalesced [967] bitmap_line_ydxd::y#11 ← bitmap_line_ydxd::y#7 +Coalesced [968] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 +Coalesced [972] bitmap_plot::x#7 ← bitmap_plot::x#3 +Coalesced [973] bitmap_plot::y#7 ← bitmap_plot::y#3 +Coalesced [980] bitmap_line_ydxd::x#12 ← bitmap_line_ydxd::x#2 +Coalesced [981] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 +Coalesced [986] bitmap_line_ydxd::x#11 ← bitmap_line_ydxd::x#6 +Coalesced [987] bitmap_line_ydxd::y#12 ← bitmap_line_ydxd::y#3 +Coalesced [988] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 +Coalesced (already) [989] bitmap_line_ydxd::x#13 ← bitmap_line_ydxd::x#3 +Coalesced [990] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 +Coalesced [994] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [1003] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [1004] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [1005] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [1006] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [1029] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [1034] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [1035] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [1036] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [1037] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [1038] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [1039] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [1042] gfx_init_charset::chargen#6 ← gfx_init_charset::chargen#3 +Coalesced [1043] gfx_init_charset::charset#6 ← gfx_init_charset::charset#3 +Coalesced [1054] gfx_init_charset::chargen#5 ← gfx_init_charset::chargen#1 +Coalesced [1055] gfx_init_charset::charset#5 ← gfx_init_charset::charset#1 +Coalesced [1056] gfx_init_charset::c#5 ← gfx_init_charset::c#1 +Coalesced (already) [1057] gfx_init_charset::chargen#7 ← gfx_init_charset::chargen#1 +Coalesced (already) [1058] gfx_init_charset::charset#7 ← gfx_init_charset::charset#1 +Coalesced [1059] gfx_init_charset::l#3 ← gfx_init_charset::l#1 +Coalesced [1062] gfx_init_screen4::ch#6 ← gfx_init_screen4::ch#3 +Coalesced [1071] gfx_init_screen4::ch#5 ← gfx_init_screen4::ch#1 +Coalesced [1072] gfx_init_screen4::cy#5 ← gfx_init_screen4::cy#1 +Coalesced (already) [1073] gfx_init_screen4::ch#7 ← gfx_init_screen4::ch#1 +Coalesced [1074] gfx_init_screen4::cx#3 ← gfx_init_screen4::cx#1 +Coalesced [1077] gfx_init_screen3::ch#6 ← gfx_init_screen3::ch#3 +Coalesced [1090] gfx_init_screen3::cy#5 ← gfx_init_screen3::cy#1 +Coalesced [1091] gfx_init_screen3::ch#5 ← gfx_init_screen3::ch#1 +Coalesced [1092] gfx_init_screen3::cx#3 ← gfx_init_screen3::cx#1 +Coalesced (already) [1093] gfx_init_screen3::ch#7 ← gfx_init_screen3::ch#1 +Coalesced [1096] gfx_init_screen2::ch#6 ← gfx_init_screen2::ch#3 +Coalesced [1110] gfx_init_screen2::cy#5 ← gfx_init_screen2::cy#1 +Coalesced [1111] gfx_init_screen2::ch#5 ← gfx_init_screen2::ch#1 +Coalesced [1112] gfx_init_screen2::cx#3 ← gfx_init_screen2::cx#1 +Coalesced (already) [1113] gfx_init_screen2::ch#7 ← gfx_init_screen2::ch#1 +Coalesced [1116] gfx_init_screen1::ch#6 ← gfx_init_screen1::ch#3 +Coalesced [1127] gfx_init_screen1::cy#5 ← gfx_init_screen1::cy#1 +Coalesced [1128] gfx_init_screen1::ch#5 ← gfx_init_screen1::ch#1 +Coalesced [1129] gfx_init_screen1::cx#3 ← gfx_init_screen1::cx#1 +Coalesced (already) [1130] gfx_init_screen1::ch#7 ← gfx_init_screen1::ch#1 +Coalesced [1133] gfx_init_screen0::ch#6 ← gfx_init_screen0::ch#3 +Coalesced [1146] gfx_init_screen0::cy#5 ← gfx_init_screen0::cy#1 +Coalesced [1147] gfx_init_screen0::ch#5 ← gfx_init_screen0::ch#1 +Coalesced [1148] gfx_init_screen0::cx#3 ← gfx_init_screen0::cx#1 +Coalesced (already) [1149] gfx_init_screen0::ch#7 ← gfx_init_screen0::ch#1 Coalesced down to 120 phi equivalence classes Culled Empty Block (label) gfx_mode::@61 Culled Empty Block (label) gfx_mode::@62 @@ -9385,7 +10089,7 @@ Culled Empty Block (label) gfx_init_screen1::@6 Culled Empty Block (label) gfx_init_screen0::@5 Culled Empty Block (label) gfx_init_screen0::@6 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @67 +Adding NOP phi() at start of @68 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@7 Adding NOP phi() at start of main::@2 @@ -9463,14 +10167,14 @@ Adding NOP phi() at start of gfx_init_screen0 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@67 -@67: scope:[] from @begin + to:@68 +@68: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @67 +@end: scope:[] from @68 [3] phi() -main: scope:[main] from @67 +main: scope:[main] from @68 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -10421,740 +11125,741 @@ gfx_init_plane_fill: scope:[gfx_init_plane_fill] from gfx_init_plane_blank gfx_ [488] call dtvSetCpuBankSegment1 to:gfx_init_plane_fill::@5 gfx_init_plane_fill::@5: scope:[gfx_init_plane_fill] from gfx_init_plane_fill - [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 - [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 - [491] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 - [492] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 + [489] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 + [490] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 + [491] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 + [492] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 + [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 to:gfx_init_plane_fill::@1 gfx_init_plane_fill::@1: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@3 gfx_init_plane_fill::@5 - [493] (byte) gfx_init_plane_fill::by#4 ← phi( gfx_init_plane_fill::@3/(byte) gfx_init_plane_fill::by#1 gfx_init_plane_fill::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [493] (byte*) gfx_init_plane_fill::gfxb#3 ← phi( gfx_init_plane_fill::@3/(byte*) gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::@5/(byte*~) gfx_init_plane_fill::gfxb#6 ) + [494] (byte) gfx_init_plane_fill::by#4 ← phi( gfx_init_plane_fill::@3/(byte) gfx_init_plane_fill::by#1 gfx_init_plane_fill::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [494] (byte*) gfx_init_plane_fill::gfxb#3 ← phi( gfx_init_plane_fill::@3/(byte*) gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::@5/(byte*~) gfx_init_plane_fill::gfxb#6 ) to:gfx_init_plane_fill::@2 gfx_init_plane_fill::@2: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 - [494] (byte) gfx_init_plane_fill::bx#2 ← phi( gfx_init_plane_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_fill::@2/(byte) gfx_init_plane_fill::bx#1 ) - [494] (byte*) gfx_init_plane_fill::gfxb#2 ← phi( gfx_init_plane_fill::@1/(byte*) gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::@2/(byte*) gfx_init_plane_fill::gfxb#1 ) - [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 - [496] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 - [497] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 - [498] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 + [495] (byte) gfx_init_plane_fill::bx#2 ← phi( gfx_init_plane_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_fill::@2/(byte) gfx_init_plane_fill::bx#1 ) + [495] (byte*) gfx_init_plane_fill::gfxb#2 ← phi( gfx_init_plane_fill::@1/(byte*) gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::@2/(byte*) gfx_init_plane_fill::gfxb#1 ) + [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 + [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 + [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 + [499] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 to:gfx_init_plane_fill::@3 gfx_init_plane_fill::@3: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@2 - [499] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 - [500] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 + [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 + [501] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 to:gfx_init_plane_fill::@4 gfx_init_plane_fill::@4: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@3 - [501] phi() - [502] call dtvSetCpuBankSegment1 + [502] phi() + [503] call dtvSetCpuBankSegment1 to:gfx_init_plane_fill::@return gfx_init_plane_fill::@return: scope:[gfx_init_plane_fill] from gfx_init_plane_fill::@4 - [503] return + [504] return to:@return dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@6 gfx_init_plane_charset8 gfx_init_plane_charset8::@8 gfx_init_plane_fill gfx_init_plane_fill::@4 gfx_init_plane_horisontal gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal::@8 gfx_init_plane_vertical gfx_init_plane_vertical::@4 - [504] (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 ← phi( gfx_init_plane_8bppchunky/((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 gfx_init_plane_8bppchunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_plane_8bppchunky::@6/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_charset8/(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfx_init_plane_charset8::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_fill/(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 gfx_init_plane_fill::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal/(const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 gfx_init_plane_horisontal2/(const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfx_init_plane_horisontal2::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_vertical/(const byte) gfx_init_plane_vertical::gfxbCpuBank#0 gfx_init_plane_vertical::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 ) - [505] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 + [505] (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 ← phi( gfx_init_plane_8bppchunky/((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 gfx_init_plane_8bppchunky::@4/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_plane_8bppchunky::@6/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_charset8/(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfx_init_plane_charset8::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_fill/(byte) dtvSetCpuBankSegment1::cpuBankIdx#11 gfx_init_plane_fill::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal/(const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 gfx_init_plane_horisontal2/(const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 gfx_init_plane_horisontal2::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_horisontal::@8/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 gfx_init_plane_vertical/(const byte) gfx_init_plane_vertical::gfxbCpuBank#0 gfx_init_plane_vertical::@4/((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 ) + [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 asm { .byte$32,$dd lda$ff .byte$32,$00 } to:dtvSetCpuBankSegment1::@return dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 - [507] return + [508] return to:@return gfx_init_plane_blank: scope:[gfx_init_plane_blank] from gfx_init::@13 - [508] phi() - [509] call gfx_init_plane_fill + [509] phi() + [510] call gfx_init_plane_fill to:gfx_init_plane_blank::@return gfx_init_plane_blank::@return: scope:[gfx_init_plane_blank] from gfx_init_plane_blank - [510] return + [511] return to:@return gfx_init_plane_vertical2: scope:[gfx_init_plane_vertical2] from gfx_init::@12 - [511] phi() - [512] call gfx_init_plane_fill + [512] phi() + [513] call gfx_init_plane_fill to:gfx_init_plane_vertical2::@return gfx_init_plane_vertical2::@return: scope:[gfx_init_plane_vertical2] from gfx_init_plane_vertical2 - [513] return + [514] return to:@return gfx_init_plane_horisontal2: scope:[gfx_init_plane_horisontal2] from gfx_init::@11 - [514] phi() - [515] call dtvSetCpuBankSegment1 + [515] phi() + [516] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@1: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@3 - [516] (byte*) gfx_init_plane_horisontal2::gfxa#3 ← phi( gfx_init_plane_horisontal2::@3/(byte*) gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_horisontal2/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 ) - [516] (byte) gfx_init_plane_horisontal2::ay#4 ← phi( gfx_init_plane_horisontal2::@3/(byte) gfx_init_plane_horisontal2::ay#1 gfx_init_plane_horisontal2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [517] (byte*) gfx_init_plane_horisontal2::gfxa#3 ← phi( gfx_init_plane_horisontal2::@3/(byte*) gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_horisontal2/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 ) + [517] (byte) gfx_init_plane_horisontal2::ay#4 ← phi( gfx_init_plane_horisontal2::@3/(byte) gfx_init_plane_horisontal2::ay#1 gfx_init_plane_horisontal2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) to:gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@2: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 - [517] (byte) gfx_init_plane_horisontal2::ax#2 ← phi( gfx_init_plane_horisontal2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal2::@2/(byte) gfx_init_plane_horisontal2::ax#1 ) - [517] (byte*) gfx_init_plane_horisontal2::gfxa#2 ← phi( gfx_init_plane_horisontal2::@1/(byte*) gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::@2/(byte*) gfx_init_plane_horisontal2::gfxa#1 ) - [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 - [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) - [521] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 - [522] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 - [523] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 + [518] (byte) gfx_init_plane_horisontal2::ax#2 ← phi( gfx_init_plane_horisontal2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal2::@2/(byte) gfx_init_plane_horisontal2::ax#1 ) + [518] (byte*) gfx_init_plane_horisontal2::gfxa#2 ← phi( gfx_init_plane_horisontal2::@1/(byte*) gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::@2/(byte*) gfx_init_plane_horisontal2::gfxa#1 ) + [519] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [520] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 + [521] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) + [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 + [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 + [524] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 to:gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@3: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@2 - [524] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 - [525] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 + [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 + [526] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 to:gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@4: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@3 - [526] phi() - [527] call dtvSetCpuBankSegment1 + [527] phi() + [528] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal2::@return gfx_init_plane_horisontal2::@return: scope:[gfx_init_plane_horisontal2] from gfx_init_plane_horisontal2::@4 - [528] return + [529] return to:@return gfx_init_plane_vertical: scope:[gfx_init_plane_vertical] from gfx_init::@10 - [529] phi() - [530] call dtvSetCpuBankSegment1 + [530] phi() + [531] call dtvSetCpuBankSegment1 to:gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@1: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical gfx_init_plane_vertical::@3 - [531] (byte) gfx_init_plane_vertical::by#4 ← phi( gfx_init_plane_vertical::@3/(byte) gfx_init_plane_vertical::by#1 gfx_init_plane_vertical/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [531] (byte*) gfx_init_plane_vertical::gfxb#3 ← phi( gfx_init_plane_vertical::@3/(byte*) gfx_init_plane_vertical::gfxb#1 gfx_init_plane_vertical/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 ) + [532] (byte) gfx_init_plane_vertical::by#4 ← phi( gfx_init_plane_vertical::@3/(byte) gfx_init_plane_vertical::by#1 gfx_init_plane_vertical/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [532] (byte*) gfx_init_plane_vertical::gfxb#3 ← phi( gfx_init_plane_vertical::@3/(byte*) gfx_init_plane_vertical::gfxb#1 gfx_init_plane_vertical/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 ) to:gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@2: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 - [532] (byte) gfx_init_plane_vertical::bx#2 ← phi( gfx_init_plane_vertical::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_vertical::@2/(byte) gfx_init_plane_vertical::bx#1 ) - [532] (byte*) gfx_init_plane_vertical::gfxb#2 ← phi( gfx_init_plane_vertical::@1/(byte*) gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::@2/(byte*) gfx_init_plane_vertical::gfxb#1 ) - [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 - [534] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 - [535] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 - [536] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 + [533] (byte) gfx_init_plane_vertical::bx#2 ← phi( gfx_init_plane_vertical::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_vertical::@2/(byte) gfx_init_plane_vertical::bx#1 ) + [533] (byte*) gfx_init_plane_vertical::gfxb#2 ← phi( gfx_init_plane_vertical::@1/(byte*) gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::@2/(byte*) gfx_init_plane_vertical::gfxb#1 ) + [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 + [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 + [537] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 to:gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@3: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@2 - [537] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 - [538] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 + [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 + [539] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 to:gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@4: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@3 - [539] phi() - [540] call dtvSetCpuBankSegment1 + [540] phi() + [541] call dtvSetCpuBankSegment1 to:gfx_init_plane_vertical::@return gfx_init_plane_vertical::@return: scope:[gfx_init_plane_vertical] from gfx_init_plane_vertical::@4 - [541] return + [542] return to:@return gfx_init_plane_horisontal: scope:[gfx_init_plane_horisontal] from gfx_init::@9 - [542] phi() - [543] call dtvSetCpuBankSegment1 + [543] phi() + [544] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@1: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal gfx_init_plane_horisontal::@7 - [544] (byte*) gfx_init_plane_horisontal::gfxa#6 ← phi( gfx_init_plane_horisontal::@7/(byte*) gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 ) - [544] (byte) gfx_init_plane_horisontal::ay#4 ← phi( gfx_init_plane_horisontal::@7/(byte) gfx_init_plane_horisontal::ay#1 gfx_init_plane_horisontal/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [545] (byte*) gfx_init_plane_horisontal::gfxa#6 ← phi( gfx_init_plane_horisontal::@7/(byte*) gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 ) + [545] (byte) gfx_init_plane_horisontal::ay#4 ← phi( gfx_init_plane_horisontal::@7/(byte) gfx_init_plane_horisontal::ay#1 gfx_init_plane_horisontal/(byte/signed byte/word/signed word/dword/signed dword) 0 ) to:gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@2: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@4 - [545] (byte) gfx_init_plane_horisontal::ax#2 ← phi( gfx_init_plane_horisontal::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal::@4/(byte) gfx_init_plane_horisontal::ax#1 ) - [545] (byte*) gfx_init_plane_horisontal::gfxa#3 ← phi( gfx_init_plane_horisontal::@1/(byte*) gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::@4/(byte*) gfx_init_plane_horisontal::gfxa#7 ) - [546] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 - [547] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 + [546] (byte) gfx_init_plane_horisontal::ax#2 ← phi( gfx_init_plane_horisontal::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_horisontal::@4/(byte) gfx_init_plane_horisontal::ax#1 ) + [546] (byte*) gfx_init_plane_horisontal::gfxa#3 ← phi( gfx_init_plane_horisontal::@1/(byte*) gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::@4/(byte*) gfx_init_plane_horisontal::gfxa#7 ) + [547] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 + [548] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 to:gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@5: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@2 - [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 - [549] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 + [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 + [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 to:gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@4: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 - [550] (byte*) gfx_init_plane_horisontal::gfxa#7 ← phi( gfx_init_plane_horisontal::@3/(byte*) gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::@5/(byte*) gfx_init_plane_horisontal::gfxa#2 ) - [551] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 - [552] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 + [551] (byte*) gfx_init_plane_horisontal::gfxa#7 ← phi( gfx_init_plane_horisontal::@3/(byte*) gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::@5/(byte*) gfx_init_plane_horisontal::gfxa#2 ) + [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 + [553] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 to:gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@7: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@4 - [553] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 - [554] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 + [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 + [555] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 to:gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@8: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@7 - [555] phi() - [556] call dtvSetCpuBankSegment1 + [556] phi() + [557] call dtvSetCpuBankSegment1 to:gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@return: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@8 - [557] return + [558] return to:@return gfx_init_plane_horisontal::@3: scope:[gfx_init_plane_horisontal] from gfx_init_plane_horisontal::@2 - [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [559] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 + [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 to:gfx_init_plane_horisontal::@4 gfx_init_plane_charset8: scope:[gfx_init_plane_charset8] from gfx_init::@8 - [560] phi() - [561] call dtvSetCpuBankSegment1 + [561] phi() + [562] call dtvSetCpuBankSegment1 to:gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@9: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8 - [562] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 + [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 to:gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@1: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@9 - [563] (byte) gfx_init_plane_charset8::ch#8 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::ch#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [563] (byte) gfx_init_plane_charset8::col#6 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [563] (byte*) gfx_init_plane_charset8::gfxa#6 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::@9/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 ) - [563] (byte*) gfx_init_plane_charset8::chargen#3 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::@9/(const byte*) CHARGEN#0 ) + [564] (byte) gfx_init_plane_charset8::ch#8 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::ch#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [564] (byte) gfx_init_plane_charset8::col#6 ← phi( gfx_init_plane_charset8::@7/(byte) gfx_init_plane_charset8::col#1 gfx_init_plane_charset8::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [564] (byte*) gfx_init_plane_charset8::gfxa#6 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::gfxa#1 gfx_init_plane_charset8::@9/((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 ) + [564] (byte*) gfx_init_plane_charset8::chargen#3 ← phi( gfx_init_plane_charset8::@7/(byte*) gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::@9/(const byte*) CHARGEN#0 ) to:gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@2: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@6 - [564] (byte) gfx_init_plane_charset8::cr#6 ← phi( gfx_init_plane_charset8::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::cr#1 ) - [564] (byte) gfx_init_plane_charset8::col#5 ← phi( gfx_init_plane_charset8::@1/(byte) gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::col#1 ) - [564] (byte*) gfx_init_plane_charset8::gfxa#5 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::gfxa#1 ) - [564] (byte*) gfx_init_plane_charset8::chargen#2 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::chargen#1 ) - [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) - [566] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 + [565] (byte) gfx_init_plane_charset8::cr#6 ← phi( gfx_init_plane_charset8::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::cr#1 ) + [565] (byte) gfx_init_plane_charset8::col#5 ← phi( gfx_init_plane_charset8::@1/(byte) gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::@6/(byte) gfx_init_plane_charset8::col#1 ) + [565] (byte*) gfx_init_plane_charset8::gfxa#5 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::gfxa#1 ) + [565] (byte*) gfx_init_plane_charset8::chargen#2 ← phi( gfx_init_plane_charset8::@1/(byte*) gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::@6/(byte*) gfx_init_plane_charset8::chargen#1 ) + [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) + [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 to:gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@3: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@4 - [567] (byte) gfx_init_plane_charset8::cp#2 ← phi( gfx_init_plane_charset8::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::cp#1 ) - [567] (byte) gfx_init_plane_charset8::col#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::col#1 ) - [567] (byte*) gfx_init_plane_charset8::gfxa#2 ← phi( gfx_init_plane_charset8::@2/(byte*) gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::@4/(byte*) gfx_init_plane_charset8::gfxa#1 ) - [567] (byte) gfx_init_plane_charset8::bits#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::bits#1 ) - [568] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 - [569] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 + [568] (byte) gfx_init_plane_charset8::cp#2 ← phi( gfx_init_plane_charset8::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::cp#1 ) + [568] (byte) gfx_init_plane_charset8::col#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::col#1 ) + [568] (byte*) gfx_init_plane_charset8::gfxa#2 ← phi( gfx_init_plane_charset8::@2/(byte*) gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::@4/(byte*) gfx_init_plane_charset8::gfxa#1 ) + [568] (byte) gfx_init_plane_charset8::bits#2 ← phi( gfx_init_plane_charset8::@2/(byte) gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::@4/(byte) gfx_init_plane_charset8::bits#1 ) + [569] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 + [570] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 to:gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@5: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@3 - [570] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 + [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 to:gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@4: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 - [571] (byte) gfx_init_plane_charset8::c#2 ← phi( gfx_init_plane_charset8::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@5/(byte~) gfx_init_plane_charset8::c#3 ) - [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 - [573] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 - [574] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [575] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 - [576] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 - [577] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 + [572] (byte) gfx_init_plane_charset8::c#2 ← phi( gfx_init_plane_charset8::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_charset8::@5/(byte~) gfx_init_plane_charset8::c#3 ) + [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 + [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 + [575] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 + [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 + [578] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 to:gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@6: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@4 - [578] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 - [579] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 + [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 + [580] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 to:gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@7: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@6 - [580] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 - [581] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 + [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 + [582] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 to:gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@8: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@7 - [582] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 - [583] call dtvSetCpuBankSegment1 + [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 + [584] call dtvSetCpuBankSegment1 to:gfx_init_plane_charset8::@return gfx_init_plane_charset8::@return: scope:[gfx_init_plane_charset8] from gfx_init_plane_charset8::@8 - [584] return + [585] return to:@return gfx_init_plane_8bppchunky: scope:[gfx_init_plane_8bppchunky] from gfx_init::@7 - [585] phi() - [586] call dtvSetCpuBankSegment1 + [586] phi() + [587] call dtvSetCpuBankSegment1 to:gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@1: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@5 - [587] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky/++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 ) - [587] (byte) gfx_init_plane_8bppchunky::y#6 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::y#1 gfx_init_plane_8bppchunky/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [587] (byte*) gfx_init_plane_8bppchunky::gfxb#5 ← phi( gfx_init_plane_8bppchunky::@5/(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky/((byte*))(word/signed word/dword/signed dword) 16384 ) + [588] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky/++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 ) + [588] (byte) gfx_init_plane_8bppchunky::y#6 ← phi( gfx_init_plane_8bppchunky::@5/(byte) gfx_init_plane_8bppchunky::y#1 gfx_init_plane_8bppchunky/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [588] (byte*) gfx_init_plane_8bppchunky::gfxb#5 ← phi( gfx_init_plane_8bppchunky::@5/(byte*) gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky/((byte*))(word/signed word/dword/signed dword) 16384 ) to:gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@2: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@3 - [588] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 ← phi( gfx_init_plane_8bppchunky::@1/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::@3/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ) - [588] (word) gfx_init_plane_8bppchunky::x#2 ← phi( gfx_init_plane_8bppchunky::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_8bppchunky::@3/(word) gfx_init_plane_8bppchunky::x#1 ) - [588] (byte*) gfx_init_plane_8bppchunky::gfxb#3 ← phi( gfx_init_plane_8bppchunky::@1/(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::@3/(byte*) gfx_init_plane_8bppchunky::gfxb#1 ) - [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 + [589] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 ← phi( gfx_init_plane_8bppchunky::@1/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::@3/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ) + [589] (word) gfx_init_plane_8bppchunky::x#2 ← phi( gfx_init_plane_8bppchunky::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_plane_8bppchunky::@3/(word) gfx_init_plane_8bppchunky::x#1 ) + [589] (byte*) gfx_init_plane_8bppchunky::gfxb#3 ← phi( gfx_init_plane_8bppchunky::@1/(byte*) gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::@3/(byte*) gfx_init_plane_8bppchunky::gfxb#1 ) + [590] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 to:gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@4: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@2 - [590] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 - [591] call dtvSetCpuBankSegment1 + [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 + [592] call dtvSetCpuBankSegment1 to:gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@8: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@4 - [592] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 + [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 to:gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@3: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@8 - [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ← phi( gfx_init_plane_8bppchunky::@2/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::@8/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ) - [593] (byte*) gfx_init_plane_8bppchunky::gfxb#4 ← phi( gfx_init_plane_8bppchunky::@2/(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::@8/((byte*))(word/signed word/dword/signed dword) 16384 ) - [594] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 - [595] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 - [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 - [597] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 - [598] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 - [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 + [594] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 ← phi( gfx_init_plane_8bppchunky::@2/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::@8/(byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ) + [594] (byte*) gfx_init_plane_8bppchunky::gfxb#4 ← phi( gfx_init_plane_8bppchunky::@2/(byte*) gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::@8/((byte*))(word/signed word/dword/signed dword) 16384 ) + [595] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 + [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 + [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 + [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 + [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 + [600] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 to:gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@5: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@3 - [600] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 - [601] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 + [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 + [602] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 to:gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@6: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@5 - [602] phi() - [603] call dtvSetCpuBankSegment1 + [603] phi() + [604] call dtvSetCpuBankSegment1 to:gfx_init_plane_8bppchunky::@return gfx_init_plane_8bppchunky::@return: scope:[gfx_init_plane_8bppchunky] from gfx_init_plane_8bppchunky::@6 - [604] return + [605] return to:@return gfx_init_vic_bitmap: scope:[gfx_init_vic_bitmap] from gfx_init::@6 - [605] phi() - [606] call bitmap_init + [606] phi() + [607] call bitmap_init to:gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@3: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap - [607] phi() - [608] call bitmap_clear + [608] phi() + [609] call bitmap_clear to:gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@1: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@5 - [609] (byte) gfx_init_vic_bitmap::l#2 ← phi( gfx_init_vic_bitmap::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_vic_bitmap::@5/(byte) gfx_init_vic_bitmap::l#1 ) - [610] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) - [611] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) - [612] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) - [613] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) - [614] call bitmap_line + [610] (byte) gfx_init_vic_bitmap::l#2 ← phi( gfx_init_vic_bitmap::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_vic_bitmap::@5/(byte) gfx_init_vic_bitmap::l#1 ) + [611] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) + [612] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) + [613] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) + [614] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) + [615] call bitmap_line to:gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@5: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@1 - [615] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 - [616] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 + [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 + [617] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 to:gfx_init_vic_bitmap::@return gfx_init_vic_bitmap::@return: scope:[gfx_init_vic_bitmap] from gfx_init_vic_bitmap::@5 - [617] return + [618] return to:@return bitmap_line: scope:[bitmap_line] from gfx_init_vic_bitmap::@1 - [618] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 + [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 to:bitmap_line::@15 bitmap_line::@15: scope:[bitmap_line] from bitmap_line - [619] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 - [620] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 + [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 + [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 to:bitmap_line::@16 bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@15 - [621] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 - [622] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 + [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 + [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 to:bitmap_line::@17 bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@16 - [623] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 - [624] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 - [625] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 - [626] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 - [627] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 - [628] call bitmap_line_ydxi + [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 + [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 + [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + [629] call bitmap_line_ydxi to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@13 bitmap_line::@17 bitmap_line::@20 bitmap_line::@24 bitmap_line::@27 bitmap_line::@3 bitmap_line::@6 - [629] return + [630] return to:@return bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@16 - [630] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 - [631] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 - [632] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 - [633] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 - [634] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 - [635] call bitmap_line_xdyi + [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 + [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 + [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + [636] call bitmap_line_xdyi to:bitmap_line::@return bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 - [636] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 - [637] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 + [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 + [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 to:bitmap_line::@20 bitmap_line::@20: scope:[bitmap_line] from bitmap_line::@2 - [638] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 - [639] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 - [640] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 - [641] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 - [642] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 - [643] call bitmap_line_ydxd + [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 + [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 + [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 + [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + [644] call bitmap_line_ydxd to:bitmap_line::@return bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@2 - [644] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 - [645] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 - [646] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 - [647] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 - [648] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 - [649] call bitmap_line_xdyd + [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 + [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 + [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 + [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + [650] call bitmap_line_xdyd to:bitmap_line::@return bitmap_line::@1: scope:[bitmap_line] from bitmap_line - [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 - [651] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 + [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 + [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 to:bitmap_line::@23 bitmap_line::@23: scope:[bitmap_line] from bitmap_line::@1 - [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 - [653] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 + [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 + [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 to:bitmap_line::@24 bitmap_line::@24: scope:[bitmap_line] from bitmap_line::@23 - [654] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 - [655] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 - [656] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 - [657] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 - [658] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 - [659] call bitmap_line_ydxd + [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 + [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 + [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + [660] call bitmap_line_ydxd to:bitmap_line::@return bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@23 - [660] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 - [661] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 - [662] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 - [663] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 - [664] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 - [665] call bitmap_line_xdyd + [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 + [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + [666] call bitmap_line_xdyd to:bitmap_line::@return bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@1 - [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 - [667] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 + [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 + [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 to:bitmap_line::@27 bitmap_line::@27: scope:[bitmap_line] from bitmap_line::@9 - [668] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 - [669] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 - [670] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 - [671] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 - [672] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 - [673] call bitmap_line_ydxi + [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 + [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 + [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 + [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + [674] call bitmap_line_ydxi to:bitmap_line::@return bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@9 - [674] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 - [675] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 - [676] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 - [677] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 - [678] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 - [679] call bitmap_line_xdyi + [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 + [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 + [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + [680] call bitmap_line_xdyi to:bitmap_line::@return bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@13 bitmap_line::@3 - [680] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x1#0 ) - [680] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::xd#0 ) - [680] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 bitmap_line::@3/(byte) bitmap_line_xdyi::y#0 ) - [680] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x#0 ) - [680] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::yd#0 ) - [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [681] (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x1#0 ) + [681] (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::xd#0 ) + [681] (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 bitmap_line::@3/(byte) bitmap_line_xdyi::y#0 ) + [681] (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 bitmap_line::@3/(byte) bitmap_line_xdyi::x#0 ) + [681] (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 bitmap_line::@3/(byte) bitmap_line_xdyi::yd#0 ) + [682] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_xdyi::@1 bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2 - [682] (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::e#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) - [682] (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::y#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) - [682] (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#2 ) - [683] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 - [684] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 - [685] call bitmap_plot + [683] (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::e#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) + [683] (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::y#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) + [683] (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#2 ) + [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 + [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 + [686] call bitmap_plot to:bitmap_line_xdyi::@5 bitmap_line_xdyi::@5: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1 - [686] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 - [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 - [688] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 + [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 + [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 + [689] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 to:bitmap_line_xdyi::@3 bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@5 - [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 - [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 + [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 + [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 to:bitmap_line_xdyi::@2 bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 - [691] (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::e#1 ) - [691] (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::y#3 ) - [692] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [693] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 + [692] (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::e#1 ) + [692] (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@5/(byte) bitmap_line_xdyi::y#3 ) + [693] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [694] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 to:bitmap_line_xdyi::@return bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 - [694] return + [695] return to:@return bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1 - [695] (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) - [695] (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) - [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) - [697] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) - [698] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 - [699] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) - [700] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 + [696] (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) + [696] (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) + [697] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) + [698] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) + [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 + [700] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) + [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot - [701] return + [702] return to:@return bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@17 bitmap_line::@27 - [702] (byte) bitmap_line_ydxi::y1#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y1#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y1#1 ) - [702] (byte) bitmap_line_ydxi::yd#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::yd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::yd#1 ) - [702] (byte) bitmap_line_ydxi::y#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y#1 ) - [702] (byte) bitmap_line_ydxi::x#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::x#0 bitmap_line::@27/(byte) bitmap_line_ydxi::x#1 ) - [702] (byte) bitmap_line_ydxi::xd#2 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::xd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::xd#1 ) - [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [703] (byte) bitmap_line_ydxi::y1#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y1#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y1#1 ) + [703] (byte) bitmap_line_ydxi::yd#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::yd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::yd#1 ) + [703] (byte) bitmap_line_ydxi::y#6 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::y#0 bitmap_line::@27/(byte) bitmap_line_ydxi::y#1 ) + [703] (byte) bitmap_line_ydxi::x#5 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::x#0 bitmap_line::@27/(byte) bitmap_line_ydxi::x#1 ) + [703] (byte) bitmap_line_ydxi::xd#2 ← phi( bitmap_line::@17/(byte) bitmap_line_ydxi::xd#0 bitmap_line::@27/(byte) bitmap_line_ydxi::xd#1 ) + [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_ydxi::@1 bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2 - [704] (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) - [704] (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#2 ) - [704] (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::x#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) - [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 - [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 - [707] call bitmap_plot + [705] (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) + [705] (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#2 ) + [705] (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::x#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) + [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 + [708] call bitmap_plot to:bitmap_line_ydxi::@5 bitmap_line_ydxi::@5: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1 - [708] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 - [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 - [710] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 + [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 + [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 + [711] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 to:bitmap_line_ydxi::@3 bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@5 - [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 - [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 + [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 + [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 to:bitmap_line_ydxi::@2 bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 - [713] (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::e#1 ) - [713] (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::x#3 ) - [714] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [715] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 + [714] (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::e#1 ) + [714] (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@5/(byte) bitmap_line_ydxi::x#3 ) + [715] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [716] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 to:bitmap_line_ydxi::@return bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 - [716] return + [717] return to:@return bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@10 bitmap_line::@6 - [717] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x1#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x1#0 ) - [717] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::xd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::xd#0 ) - [717] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::y#1 bitmap_line::@6/(byte) bitmap_line_xdyd::y#0 ) - [717] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x#0 ) - [717] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::yd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::yd#0 ) - [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [718] (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x1#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x1#0 ) + [718] (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::xd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::xd#0 ) + [718] (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::y#1 bitmap_line::@6/(byte) bitmap_line_xdyd::y#0 ) + [718] (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::x#1 bitmap_line::@6/(byte) bitmap_line_xdyd::x#0 ) + [718] (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@10/(byte) bitmap_line_xdyd::yd#1 bitmap_line::@6/(byte) bitmap_line_xdyd::yd#0 ) + [719] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_xdyd::@1 bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2 - [719] (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::e#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) - [719] (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::y#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) - [719] (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#2 ) - [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 - [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 - [722] call bitmap_plot + [720] (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::e#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) + [720] (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::y#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) + [720] (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#2 ) + [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 + [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 + [723] call bitmap_plot to:bitmap_line_xdyd::@5 bitmap_line_xdyd::@5: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1 - [723] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 - [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 - [725] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 + [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 + [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 + [726] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 to:bitmap_line_xdyd::@3 bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@5 - [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 - [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 + [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 + [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 to:bitmap_line_xdyd::@2 bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 - [728] (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::e#1 ) - [728] (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::y#3 ) - [729] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [730] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 + [729] (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::e#1 ) + [729] (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@5/(byte) bitmap_line_xdyd::y#3 ) + [730] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [731] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 to:bitmap_line_xdyd::@return bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 - [731] return + [732] return to:@return bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@20 bitmap_line::@24 - [732] (byte) bitmap_line_ydxd::y1#6 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y1#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y1#1 ) - [732] (byte) bitmap_line_ydxd::yd#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::yd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::yd#1 ) - [732] (byte) bitmap_line_ydxd::y#7 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y#1 ) - [732] (byte) bitmap_line_ydxd::x#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::x#0 bitmap_line::@24/(byte) bitmap_line_ydxd::x#1 ) - [732] (byte) bitmap_line_ydxd::xd#2 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::xd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::xd#1 ) - [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [733] (byte) bitmap_line_ydxd::y1#6 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y1#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y1#1 ) + [733] (byte) bitmap_line_ydxd::yd#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::yd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::yd#1 ) + [733] (byte) bitmap_line_ydxd::y#7 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::y#0 bitmap_line::@24/(byte) bitmap_line_ydxd::y#1 ) + [733] (byte) bitmap_line_ydxd::x#5 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::x#0 bitmap_line::@24/(byte) bitmap_line_ydxd::x#1 ) + [733] (byte) bitmap_line_ydxd::xd#2 ← phi( bitmap_line::@20/(byte) bitmap_line_ydxd::xd#0 bitmap_line::@24/(byte) bitmap_line_ydxd::xd#1 ) + [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 to:bitmap_line_ydxd::@1 bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2 - [734] (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) - [734] (byte) bitmap_line_ydxd::y#2 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y#7 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#3 ) - [734] (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::x#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) - [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 - [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 - [737] call bitmap_plot + [735] (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) + [735] (byte) bitmap_line_ydxd::y#2 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y#7 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#3 ) + [735] (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::x#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) + [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 + [738] call bitmap_plot to:bitmap_line_ydxd::@5 bitmap_line_ydxd::@5: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1 - [738] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 - [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 - [740] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 + [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 + [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 + [741] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 to:bitmap_line_ydxd::@3 bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 - [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 - [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 + [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 + [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 to:bitmap_line_ydxd::@2 bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 - [743] (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::e#1 ) - [743] (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::x#3 ) - [744] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 - [745] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 + [744] (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::e#1 ) + [744] (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@5/(byte) bitmap_line_ydxd::x#3 ) + [745] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 + [746] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 to:bitmap_line_ydxd::@return bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 - [746] return + [747] return to:@return bitmap_clear: scope:[bitmap_clear] from gfx_init_vic_bitmap::@3 - [747] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) - [748] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [748] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) + [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [749] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [749] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [750] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [750] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [750] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [750] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [751] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [752] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [753] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [754] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [751] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [751] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [755] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [755] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [756] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [757] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [757] return + [758] return to:@return bitmap_init: scope:[bitmap_init] from gfx_init_vic_bitmap - [758] phi() + [759] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [759] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [759] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 - [761] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 - [762] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 - [763] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [764] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [765] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [760] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [760] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 + [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 + [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 + [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [765] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [766] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [766] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [767] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [768] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [767] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [769] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [769] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [769] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [770] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [771] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 - [772] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 - [773] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 - [774] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 - [775] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 - [776] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [777] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [770] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [770] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [771] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 + [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 + [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 + [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 + [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 + [777] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [778] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [779] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [779] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [780] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [781] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [780] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [782] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [782] return + [783] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [783] phi() + [784] phi() to:bitmap_init::@2 gfx_init_charset: scope:[gfx_init_charset] from gfx_init::@5 - [784] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 + [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 to:gfx_init_charset::@1 gfx_init_charset::@1: scope:[gfx_init_charset] from gfx_init_charset gfx_init_charset::@3 - [785] (byte) gfx_init_charset::c#4 ← phi( gfx_init_charset/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@3/(byte) gfx_init_charset::c#1 ) - [785] (byte*) gfx_init_charset::charset#3 ← phi( gfx_init_charset/(const byte*) VIC_CHARSET_ROM#0 gfx_init_charset::@3/(byte*) gfx_init_charset::charset#1 ) - [785] (byte*) gfx_init_charset::chargen#3 ← phi( gfx_init_charset/(const byte*) CHARGEN#0 gfx_init_charset::@3/(byte*) gfx_init_charset::chargen#1 ) + [786] (byte) gfx_init_charset::c#4 ← phi( gfx_init_charset/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@3/(byte) gfx_init_charset::c#1 ) + [786] (byte*) gfx_init_charset::charset#3 ← phi( gfx_init_charset/(const byte*) VIC_CHARSET_ROM#0 gfx_init_charset::@3/(byte*) gfx_init_charset::charset#1 ) + [786] (byte*) gfx_init_charset::chargen#3 ← phi( gfx_init_charset/(const byte*) CHARGEN#0 gfx_init_charset::@3/(byte*) gfx_init_charset::chargen#1 ) to:gfx_init_charset::@2 gfx_init_charset::@2: scope:[gfx_init_charset] from gfx_init_charset::@1 gfx_init_charset::@2 - [786] (byte) gfx_init_charset::l#2 ← phi( gfx_init_charset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@2/(byte) gfx_init_charset::l#1 ) - [786] (byte*) gfx_init_charset::charset#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::charset#3 gfx_init_charset::@2/(byte*) gfx_init_charset::charset#1 ) - [786] (byte*) gfx_init_charset::chargen#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::chargen#3 gfx_init_charset::@2/(byte*) gfx_init_charset::chargen#1 ) - [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) - [788] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 - [789] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 - [790] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 - [791] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 + [787] (byte) gfx_init_charset::l#2 ← phi( gfx_init_charset::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_charset::@2/(byte) gfx_init_charset::l#1 ) + [787] (byte*) gfx_init_charset::charset#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::charset#3 gfx_init_charset::@2/(byte*) gfx_init_charset::charset#1 ) + [787] (byte*) gfx_init_charset::chargen#2 ← phi( gfx_init_charset::@1/(byte*) gfx_init_charset::chargen#3 gfx_init_charset::@2/(byte*) gfx_init_charset::chargen#1 ) + [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) + [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 + [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 + [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 + [792] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 to:gfx_init_charset::@3 gfx_init_charset::@3: scope:[gfx_init_charset] from gfx_init_charset::@2 - [792] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 - [793] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 + [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 + [794] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 to:gfx_init_charset::@4 gfx_init_charset::@4: scope:[gfx_init_charset] from gfx_init_charset::@3 - [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 + [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 to:gfx_init_charset::@return gfx_init_charset::@return: scope:[gfx_init_charset] from gfx_init_charset::@4 - [795] return + [796] return to:@return gfx_init_screen4: scope:[gfx_init_screen4] from gfx_init::@4 - [796] phi() + [797] phi() to:gfx_init_screen4::@1 gfx_init_screen4::@1: scope:[gfx_init_screen4] from gfx_init_screen4 gfx_init_screen4::@3 - [797] (byte) gfx_init_screen4::cy#4 ← phi( gfx_init_screen4/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@3/(byte) gfx_init_screen4::cy#1 ) - [797] (byte*) gfx_init_screen4::ch#3 ← phi( gfx_init_screen4/(const byte*) VIC_SCREEN4#0 gfx_init_screen4::@3/(byte*) gfx_init_screen4::ch#1 ) + [798] (byte) gfx_init_screen4::cy#4 ← phi( gfx_init_screen4/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@3/(byte) gfx_init_screen4::cy#1 ) + [798] (byte*) gfx_init_screen4::ch#3 ← phi( gfx_init_screen4/(const byte*) VIC_SCREEN4#0 gfx_init_screen4::@3/(byte*) gfx_init_screen4::ch#1 ) to:gfx_init_screen4::@2 gfx_init_screen4::@2: scope:[gfx_init_screen4] from gfx_init_screen4::@1 gfx_init_screen4::@2 - [798] (byte) gfx_init_screen4::cx#2 ← phi( gfx_init_screen4::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@2/(byte) gfx_init_screen4::cx#1 ) - [798] (byte*) gfx_init_screen4::ch#2 ← phi( gfx_init_screen4::@1/(byte*) gfx_init_screen4::ch#3 gfx_init_screen4::@2/(byte*) gfx_init_screen4::ch#1 ) - [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [800] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 - [801] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 - [802] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 + [799] (byte) gfx_init_screen4::cx#2 ← phi( gfx_init_screen4::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen4::@2/(byte) gfx_init_screen4::cx#1 ) + [799] (byte*) gfx_init_screen4::ch#2 ← phi( gfx_init_screen4::@1/(byte*) gfx_init_screen4::ch#3 gfx_init_screen4::@2/(byte*) gfx_init_screen4::ch#1 ) + [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 + [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 + [803] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 to:gfx_init_screen4::@3 gfx_init_screen4::@3: scope:[gfx_init_screen4] from gfx_init_screen4::@2 - [803] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 - [804] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 + [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 + [805] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 to:gfx_init_screen4::@return gfx_init_screen4::@return: scope:[gfx_init_screen4] from gfx_init_screen4::@3 - [805] return + [806] return to:@return gfx_init_screen3: scope:[gfx_init_screen3] from gfx_init::@3 - [806] phi() + [807] phi() to:gfx_init_screen3::@1 gfx_init_screen3::@1: scope:[gfx_init_screen3] from gfx_init_screen3 gfx_init_screen3::@3 - [807] (byte*) gfx_init_screen3::ch#3 ← phi( gfx_init_screen3/(const byte*) VIC_SCREEN3#0 gfx_init_screen3::@3/(byte*) gfx_init_screen3::ch#1 ) - [807] (byte) gfx_init_screen3::cy#4 ← phi( gfx_init_screen3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@3/(byte) gfx_init_screen3::cy#1 ) + [808] (byte*) gfx_init_screen3::ch#3 ← phi( gfx_init_screen3/(const byte*) VIC_SCREEN3#0 gfx_init_screen3::@3/(byte*) gfx_init_screen3::ch#1 ) + [808] (byte) gfx_init_screen3::cy#4 ← phi( gfx_init_screen3/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@3/(byte) gfx_init_screen3::cy#1 ) to:gfx_init_screen3::@2 gfx_init_screen3::@2: scope:[gfx_init_screen3] from gfx_init_screen3::@1 gfx_init_screen3::@2 - [808] (byte*) gfx_init_screen3::ch#2 ← phi( gfx_init_screen3::@1/(byte*) gfx_init_screen3::ch#3 gfx_init_screen3::@2/(byte*) gfx_init_screen3::ch#1 ) - [808] (byte) gfx_init_screen3::cx#2 ← phi( gfx_init_screen3::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@2/(byte) gfx_init_screen3::cx#1 ) - [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 - [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 - [812] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 - [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 - [814] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 - [815] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 - [816] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 + [809] (byte*) gfx_init_screen3::ch#2 ← phi( gfx_init_screen3::@1/(byte*) gfx_init_screen3::ch#3 gfx_init_screen3::@2/(byte*) gfx_init_screen3::ch#1 ) + [809] (byte) gfx_init_screen3::cx#2 ← phi( gfx_init_screen3::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen3::@2/(byte) gfx_init_screen3::cx#1 ) + [810] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 + [811] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [812] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 + [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 + [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 + [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 + [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 + [817] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 to:gfx_init_screen3::@3 gfx_init_screen3::@3: scope:[gfx_init_screen3] from gfx_init_screen3::@2 - [817] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 - [818] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 + [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 + [819] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 to:gfx_init_screen3::@return gfx_init_screen3::@return: scope:[gfx_init_screen3] from gfx_init_screen3::@3 - [819] return + [820] return to:@return gfx_init_screen2: scope:[gfx_init_screen2] from gfx_init::@2 - [820] phi() + [821] phi() to:gfx_init_screen2::@1 gfx_init_screen2::@1: scope:[gfx_init_screen2] from gfx_init_screen2 gfx_init_screen2::@3 - [821] (byte*) gfx_init_screen2::ch#3 ← phi( gfx_init_screen2/(const byte*) VIC_SCREEN2#0 gfx_init_screen2::@3/(byte*) gfx_init_screen2::ch#1 ) - [821] (byte) gfx_init_screen2::cy#4 ← phi( gfx_init_screen2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@3/(byte) gfx_init_screen2::cy#1 ) + [822] (byte*) gfx_init_screen2::ch#3 ← phi( gfx_init_screen2/(const byte*) VIC_SCREEN2#0 gfx_init_screen2::@3/(byte*) gfx_init_screen2::ch#1 ) + [822] (byte) gfx_init_screen2::cy#4 ← phi( gfx_init_screen2/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@3/(byte) gfx_init_screen2::cy#1 ) to:gfx_init_screen2::@2 gfx_init_screen2::@2: scope:[gfx_init_screen2] from gfx_init_screen2::@1 gfx_init_screen2::@2 - [822] (byte*) gfx_init_screen2::ch#2 ← phi( gfx_init_screen2::@1/(byte*) gfx_init_screen2::ch#3 gfx_init_screen2::@2/(byte*) gfx_init_screen2::ch#1 ) - [822] (byte) gfx_init_screen2::cx#2 ← phi( gfx_init_screen2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@2/(byte) gfx_init_screen2::cx#1 ) - [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 - [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 - [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [827] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 - [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 - [829] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 - [830] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 - [831] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 + [823] (byte*) gfx_init_screen2::ch#2 ← phi( gfx_init_screen2::@1/(byte*) gfx_init_screen2::ch#3 gfx_init_screen2::@2/(byte*) gfx_init_screen2::ch#1 ) + [823] (byte) gfx_init_screen2::cx#2 ← phi( gfx_init_screen2::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen2::@2/(byte) gfx_init_screen2::cx#1 ) + [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 + [825] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [826] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 + [827] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 + [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 + [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 + [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 + [832] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 to:gfx_init_screen2::@3 gfx_init_screen2::@3: scope:[gfx_init_screen2] from gfx_init_screen2::@2 - [832] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 - [833] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 + [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 + [834] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 to:gfx_init_screen2::@return gfx_init_screen2::@return: scope:[gfx_init_screen2] from gfx_init_screen2::@3 - [834] return + [835] return to:@return gfx_init_screen1: scope:[gfx_init_screen1] from gfx_init::@1 - [835] phi() + [836] phi() to:gfx_init_screen1::@1 gfx_init_screen1::@1: scope:[gfx_init_screen1] from gfx_init_screen1 gfx_init_screen1::@3 - [836] (byte*) gfx_init_screen1::ch#3 ← phi( gfx_init_screen1/(const byte*) VIC_SCREEN1#0 gfx_init_screen1::@3/(byte*) gfx_init_screen1::ch#1 ) - [836] (byte) gfx_init_screen1::cy#4 ← phi( gfx_init_screen1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@3/(byte) gfx_init_screen1::cy#1 ) + [837] (byte*) gfx_init_screen1::ch#3 ← phi( gfx_init_screen1/(const byte*) VIC_SCREEN1#0 gfx_init_screen1::@3/(byte*) gfx_init_screen1::ch#1 ) + [837] (byte) gfx_init_screen1::cy#4 ← phi( gfx_init_screen1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@3/(byte) gfx_init_screen1::cy#1 ) to:gfx_init_screen1::@2 gfx_init_screen1::@2: scope:[gfx_init_screen1] from gfx_init_screen1::@1 gfx_init_screen1::@2 - [837] (byte*) gfx_init_screen1::ch#2 ← phi( gfx_init_screen1::@1/(byte*) gfx_init_screen1::ch#3 gfx_init_screen1::@2/(byte*) gfx_init_screen1::ch#1 ) - [837] (byte) gfx_init_screen1::cx#2 ← phi( gfx_init_screen1::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@2/(byte) gfx_init_screen1::cx#1 ) - [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 - [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 - [841] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 - [842] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 - [843] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 + [838] (byte*) gfx_init_screen1::ch#2 ← phi( gfx_init_screen1::@1/(byte*) gfx_init_screen1::ch#3 gfx_init_screen1::@2/(byte*) gfx_init_screen1::ch#1 ) + [838] (byte) gfx_init_screen1::cx#2 ← phi( gfx_init_screen1::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen1::@2/(byte) gfx_init_screen1::cx#1 ) + [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 + [840] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 + [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 + [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 + [844] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 to:gfx_init_screen1::@3 gfx_init_screen1::@3: scope:[gfx_init_screen1] from gfx_init_screen1::@2 - [844] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 - [845] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 + [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 + [846] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 to:gfx_init_screen1::@return gfx_init_screen1::@return: scope:[gfx_init_screen1] from gfx_init_screen1::@3 - [846] return + [847] return to:@return gfx_init_screen0: scope:[gfx_init_screen0] from gfx_init - [847] phi() + [848] phi() to:gfx_init_screen0::@1 gfx_init_screen0::@1: scope:[gfx_init_screen0] from gfx_init_screen0 gfx_init_screen0::@3 - [848] (byte*) gfx_init_screen0::ch#3 ← phi( gfx_init_screen0/(const byte*) VIC_SCREEN0#0 gfx_init_screen0::@3/(byte*) gfx_init_screen0::ch#1 ) - [848] (byte) gfx_init_screen0::cy#4 ← phi( gfx_init_screen0/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@3/(byte) gfx_init_screen0::cy#1 ) + [849] (byte*) gfx_init_screen0::ch#3 ← phi( gfx_init_screen0/(const byte*) VIC_SCREEN0#0 gfx_init_screen0::@3/(byte*) gfx_init_screen0::ch#1 ) + [849] (byte) gfx_init_screen0::cy#4 ← phi( gfx_init_screen0/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@3/(byte) gfx_init_screen0::cy#1 ) to:gfx_init_screen0::@2 gfx_init_screen0::@2: scope:[gfx_init_screen0] from gfx_init_screen0::@1 gfx_init_screen0::@2 - [849] (byte*) gfx_init_screen0::ch#2 ← phi( gfx_init_screen0::@1/(byte*) gfx_init_screen0::ch#3 gfx_init_screen0::@2/(byte*) gfx_init_screen0::ch#1 ) - [849] (byte) gfx_init_screen0::cx#2 ← phi( gfx_init_screen0::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@2/(byte) gfx_init_screen0::cx#1 ) - [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [853] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 - [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 - [855] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 - [856] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 - [857] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 + [850] (byte*) gfx_init_screen0::ch#2 ← phi( gfx_init_screen0::@1/(byte*) gfx_init_screen0::ch#3 gfx_init_screen0::@2/(byte*) gfx_init_screen0::ch#1 ) + [850] (byte) gfx_init_screen0::cx#2 ← phi( gfx_init_screen0::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 gfx_init_screen0::@2/(byte) gfx_init_screen0::cx#1 ) + [851] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [852] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [853] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 + [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 + [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 + [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 + [858] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 to:gfx_init_screen0::@3 gfx_init_screen0::@3: scope:[gfx_init_screen0] from gfx_init_screen0::@2 - [858] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 - [859] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 + [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 + [860] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 to:gfx_init_screen0::@return gfx_init_screen0::@return: scope:[gfx_init_screen0] from gfx_init_screen0::@3 - [860] return + [861] return to:@return keyboard_init: scope:[keyboard_init] from main - [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 - [862] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 + [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:keyboard_init::@return keyboard_init::@return: scope:[keyboard_init] from keyboard_init - [863] return + [864] return to:@return @@ -11164,15 +11869,93 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL2 (byte*) BGCOL3 (byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN (byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (byte) DTV_CHUNKY (byte) DTV_COLORRAM_OFF @@ -11181,7 +11964,9 @@ VARIABLE REGISTER WEIGHTS (byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (byte*) DTV_FEATURE +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE +(byte*) DTV_GRAPHICS_HICOL_BANK (byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (byte) DTV_LINEAR @@ -11200,23 +11985,98 @@ VARIABLE REGISTER WEIGHTS (byte*) DTV_PLANEB_START_LO (byte*) DTV_PLANEB_START_MI (byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK (byte*) FORM_CHARSET (byte[]) FORM_COLS (signed byte) FORM_CURSOR_BLINK (byte*) FORM_SCREEN (byte[]) FORM_TEXT +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA (byte) KEY_COMMODORE (byte) KEY_CRSR_DOWN (byte) KEY_CRSR_RIGHT (byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L (byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS (byte) KEY_MODIFIER_COMMODORE (byte) KEY_MODIFIER_CTRL (byte) KEY_MODIFIER_LSHIFT (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN (byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (dword) PLANE_8BPP_CHUNKY (dword) PLANE_BLANK (dword) PLANE_CHARSET8 @@ -11226,11 +12086,28 @@ VARIABLE REGISTER WEIGHTS (dword) PLANE_VERTICAL (dword) PLANE_VERTICAL2 (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte*) VIC_BITMAP (byte) VIC_BMM (byte*) VIC_CHARSET_ROM @@ -11242,11 +12119,14 @@ VARIABLE REGISTER WEIGHTS (byte) VIC_MCM (byte*) VIC_MEMORY (byte) VIC_RSEL +(byte) VIC_RST8 (byte*) VIC_SCREEN0 (byte*) VIC_SCREEN1 (byte*) VIC_SCREEN2 (byte*) VIC_SCREEN3 (byte*) VIC_SCREEN4 +(byte) WHITE +(byte) YELLOW (void()) apply_preset((byte) apply_preset::idx) (byte) apply_preset::i (byte) apply_preset::i#1 1501.5 @@ -11687,16 +12567,17 @@ VARIABLE REGISTER WEIGHTS (byte) gfx_init_plane_fill::by#1 16.5 (byte) gfx_init_plane_fill::by#4 3.6666666666666665 (byte) gfx_init_plane_fill::fill -(byte) gfx_init_plane_fill::fill#6 5.611111111111111 +(byte) gfx_init_plane_fill::fill#6 5.315789473684211 (byte*) gfx_init_plane_fill::gfxb (byte*) gfx_init_plane_fill::gfxb#1 42.599999999999994 (byte*) gfx_init_plane_fill::gfxb#2 157.0 (byte*) gfx_init_plane_fill::gfxb#3 24.0 (byte*~) gfx_init_plane_fill::gfxb#6 4.0 (byte) gfx_init_plane_fill::gfxbCpuBank -(byte) gfx_init_plane_fill::gfxbCpuBank#0 4.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#0 2.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#1 20.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 0.6666666666666666 +(dword) gfx_init_plane_fill::plane_addr#3 0.5714285714285714 (void()) gfx_init_plane_full() (void()) gfx_init_plane_horisontal() (byte~) gfx_init_plane_horisontal::$5 202.0 @@ -11912,6 +12793,7 @@ VARIABLE REGISTER WEIGHTS (byte) gfx_mode::vic_control#5 2.0 (byte) gfx_mode::vic_control2 (byte) gfx_mode::vic_control2#2 2.0 +(byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (byte) keyboard_event_get::return (byte) keyboard_event_get::return#1 4.0 @@ -12265,6 +13147,7 @@ Added variable print_cls::$0 to zero page equivalence class [ print_cls::$0 ] Added variable gfx_init_plane_fill::$0 to zero page equivalence class [ gfx_init_plane_fill::$0 ] Added variable gfx_init_plane_fill::$1 to zero page equivalence class [ gfx_init_plane_fill::$1 ] Added variable gfx_init_plane_fill::gfxbCpuBank#0 to zero page equivalence class [ gfx_init_plane_fill::gfxbCpuBank#0 ] +Added variable gfx_init_plane_fill::gfxbCpuBank#1 to zero page equivalence class [ gfx_init_plane_fill::gfxbCpuBank#1 ] Added variable gfx_init_plane_fill::$4 to zero page equivalence class [ gfx_init_plane_fill::$4 ] Added variable gfx_init_plane_fill::$5 to zero page equivalence class [ gfx_init_plane_fill::$5 ] Added variable gfx_init_plane_fill::$6 to zero page equivalence class [ gfx_init_plane_fill::$6 ] @@ -12533,6 +13416,7 @@ Complete equivalence classes [ gfx_init_plane_fill::$0 ] [ gfx_init_plane_fill::$1 ] [ gfx_init_plane_fill::gfxbCpuBank#0 ] +[ gfx_init_plane_fill::gfxbCpuBank#1 ] [ gfx_init_plane_fill::$4 ] [ gfx_init_plane_fill::$5 ] [ gfx_init_plane_fill::$6 ] @@ -12800,55 +13684,56 @@ Allocated zp ZP_WORD:290 [ print_cls::$0 ] Allocated zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] Allocated zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] Allocated zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] -Allocated zp ZP_WORD:299 [ gfx_init_plane_fill::$4 ] -Allocated zp ZP_WORD:301 [ gfx_init_plane_fill::$5 ] -Allocated zp ZP_WORD:303 [ gfx_init_plane_fill::$6 ] -Allocated zp ZP_BYTE:305 [ gfx_init_plane_horisontal2::$5 ] -Allocated zp ZP_BYTE:306 [ gfx_init_plane_horisontal2::row#0 ] -Allocated zp ZP_BYTE:307 [ gfx_init_plane_horisontal::$5 ] -Allocated zp ZP_BYTE:308 [ gfx_init_plane_charset8::$5 ] -Allocated zp ZP_WORD:309 [ gfx_init_plane_8bppchunky::$6 ] -Allocated zp ZP_BYTE:311 [ gfx_init_plane_8bppchunky::c#0 ] -Allocated zp ZP_BYTE:312 [ bitmap_line::x0#0 ] -Allocated zp ZP_BYTE:313 [ bitmap_line::x1#0 ] -Allocated zp ZP_BYTE:314 [ bitmap_line::y0#0 ] -Allocated zp ZP_BYTE:315 [ bitmap_line::y1#0 ] -Allocated zp ZP_BYTE:316 [ bitmap_line::xd#1 ] -Allocated zp ZP_BYTE:317 [ bitmap_line::yd#1 ] -Allocated zp ZP_BYTE:318 [ bitmap_line::yd#0 ] -Allocated zp ZP_BYTE:319 [ bitmap_line::xd#0 ] -Allocated zp ZP_BYTE:320 [ bitmap_line::yd#3 ] -Allocated zp ZP_BYTE:321 [ bitmap_line::yd#10 ] -Allocated zp ZP_BYTE:322 [ bitmap_line_xdyi::$6 ] -Allocated zp ZP_WORD:323 [ bitmap_plot::plotter_x#0 ] -Allocated zp ZP_WORD:325 [ bitmap_plot::plotter_y#0 ] -Allocated zp ZP_WORD:327 [ bitmap_plot::$0 ] -Allocated zp ZP_BYTE:329 [ bitmap_plot::$1 ] -Allocated zp ZP_BYTE:330 [ bitmap_line_ydxi::$6 ] -Allocated zp ZP_BYTE:331 [ bitmap_line_xdyd::$6 ] -Allocated zp ZP_BYTE:332 [ bitmap_line_ydxd::$6 ] -Allocated zp ZP_WORD:333 [ bitmap_clear::$3 ] -Allocated zp ZP_BYTE:335 [ bitmap_init::$0 ] -Allocated zp ZP_BYTE:336 [ bitmap_init::$6 ] -Allocated zp ZP_BYTE:337 [ bitmap_init::$7 ] -Allocated zp ZP_BYTE:338 [ bitmap_init::$8 ] -Allocated zp ZP_BYTE:339 [ bitmap_init::$9 ] -Allocated zp ZP_BYTE:340 [ bitmap_init::$10 ] -Allocated zp ZP_BYTE:341 [ gfx_init_screen3::$0 ] -Allocated zp ZP_BYTE:342 [ gfx_init_screen3::$1 ] -Allocated zp ZP_BYTE:343 [ gfx_init_screen3::$2 ] -Allocated zp ZP_BYTE:344 [ gfx_init_screen3::$3 ] -Allocated zp ZP_BYTE:345 [ gfx_init_screen2::$0 ] -Allocated zp ZP_BYTE:346 [ gfx_init_screen2::col#0 ] -Allocated zp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] -Allocated zp ZP_BYTE:348 [ gfx_init_screen2::$3 ] -Allocated zp ZP_BYTE:349 [ gfx_init_screen2::$4 ] -Allocated zp ZP_BYTE:350 [ gfx_init_screen1::$0 ] -Allocated zp ZP_BYTE:351 [ gfx_init_screen1::$1 ] -Allocated zp ZP_BYTE:352 [ gfx_init_screen0::$0 ] -Allocated zp ZP_BYTE:353 [ gfx_init_screen0::$1 ] -Allocated zp ZP_BYTE:354 [ gfx_init_screen0::$2 ] -Allocated zp ZP_BYTE:355 [ gfx_init_screen0::$3 ] +Allocated zp ZP_BYTE:299 [ gfx_init_plane_fill::gfxbCpuBank#1 ] +Allocated zp ZP_WORD:300 [ gfx_init_plane_fill::$4 ] +Allocated zp ZP_WORD:302 [ gfx_init_plane_fill::$5 ] +Allocated zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] +Allocated zp ZP_BYTE:306 [ gfx_init_plane_horisontal2::$5 ] +Allocated zp ZP_BYTE:307 [ gfx_init_plane_horisontal2::row#0 ] +Allocated zp ZP_BYTE:308 [ gfx_init_plane_horisontal::$5 ] +Allocated zp ZP_BYTE:309 [ gfx_init_plane_charset8::$5 ] +Allocated zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] +Allocated zp ZP_BYTE:312 [ gfx_init_plane_8bppchunky::c#0 ] +Allocated zp ZP_BYTE:313 [ bitmap_line::x0#0 ] +Allocated zp ZP_BYTE:314 [ bitmap_line::x1#0 ] +Allocated zp ZP_BYTE:315 [ bitmap_line::y0#0 ] +Allocated zp ZP_BYTE:316 [ bitmap_line::y1#0 ] +Allocated zp ZP_BYTE:317 [ bitmap_line::xd#1 ] +Allocated zp ZP_BYTE:318 [ bitmap_line::yd#1 ] +Allocated zp ZP_BYTE:319 [ bitmap_line::yd#0 ] +Allocated zp ZP_BYTE:320 [ bitmap_line::xd#0 ] +Allocated zp ZP_BYTE:321 [ bitmap_line::yd#3 ] +Allocated zp ZP_BYTE:322 [ bitmap_line::yd#10 ] +Allocated zp ZP_BYTE:323 [ bitmap_line_xdyi::$6 ] +Allocated zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 ] +Allocated zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] +Allocated zp ZP_WORD:328 [ bitmap_plot::$0 ] +Allocated zp ZP_BYTE:330 [ bitmap_plot::$1 ] +Allocated zp ZP_BYTE:331 [ bitmap_line_ydxi::$6 ] +Allocated zp ZP_BYTE:332 [ bitmap_line_xdyd::$6 ] +Allocated zp ZP_BYTE:333 [ bitmap_line_ydxd::$6 ] +Allocated zp ZP_WORD:334 [ bitmap_clear::$3 ] +Allocated zp ZP_BYTE:336 [ bitmap_init::$0 ] +Allocated zp ZP_BYTE:337 [ bitmap_init::$6 ] +Allocated zp ZP_BYTE:338 [ bitmap_init::$7 ] +Allocated zp ZP_BYTE:339 [ bitmap_init::$8 ] +Allocated zp ZP_BYTE:340 [ bitmap_init::$9 ] +Allocated zp ZP_BYTE:341 [ bitmap_init::$10 ] +Allocated zp ZP_BYTE:342 [ gfx_init_screen3::$0 ] +Allocated zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] +Allocated zp ZP_BYTE:344 [ gfx_init_screen3::$2 ] +Allocated zp ZP_BYTE:345 [ gfx_init_screen3::$3 ] +Allocated zp ZP_BYTE:346 [ gfx_init_screen2::$0 ] +Allocated zp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] +Allocated zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] +Allocated zp ZP_BYTE:349 [ gfx_init_screen2::$3 ] +Allocated zp ZP_BYTE:350 [ gfx_init_screen2::$4 ] +Allocated zp ZP_BYTE:351 [ gfx_init_screen1::$0 ] +Allocated zp ZP_BYTE:352 [ gfx_init_screen1::$1 ] +Allocated zp ZP_BYTE:353 [ gfx_init_screen0::$0 ] +Allocated zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] +Allocated zp ZP_BYTE:355 [ gfx_init_screen0::$2 ] +Allocated zp ZP_BYTE:356 [ gfx_init_screen0::$3 ] INITIAL ASM //SEG0 Basic Upstart @@ -12985,15 +13870,15 @@ INITIAL ASM .label form_field_idx = $20 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @67 [phi:@begin->@67] -b67_from_bbegin: - jmp b67 -//SEG4 @67 -b67: +//SEG3 [1] phi from @begin to @68 [phi:@begin->@68] +b68_from_bbegin: + jmp b68 +//SEG4 @68 +b68: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @67 to @end [phi:@67->@end] -bend_from_b67: +//SEG6 [3] phi from @68 to @end [phi:@68->@end] +bend_from_b68: jmp bend //SEG7 @end bend: @@ -16027,7 +16912,7 @@ print_set_screen: { //SEG892 gfx_init gfx_init: { //SEG893 [450] call gfx_init_screen0 - //SEG894 [847] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG894 [848] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] gfx_init_screen0_from_gfx_init: jsr gfx_init_screen0 //SEG895 [451] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] @@ -16036,7 +16921,7 @@ gfx_init: { //SEG896 gfx_init::@1 b1: //SEG897 [452] call gfx_init_screen1 - //SEG898 [835] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] + //SEG898 [836] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] gfx_init_screen1_from_b1: jsr gfx_init_screen1 //SEG899 [453] phi from gfx_init::@1 to gfx_init::@2 [phi:gfx_init::@1->gfx_init::@2] @@ -16045,7 +16930,7 @@ gfx_init: { //SEG900 gfx_init::@2 b2: //SEG901 [454] call gfx_init_screen2 - //SEG902 [820] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] + //SEG902 [821] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] gfx_init_screen2_from_b2: jsr gfx_init_screen2 //SEG903 [455] phi from gfx_init::@2 to gfx_init::@3 [phi:gfx_init::@2->gfx_init::@3] @@ -16054,7 +16939,7 @@ gfx_init: { //SEG904 gfx_init::@3 b3: //SEG905 [456] call gfx_init_screen3 - //SEG906 [806] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] + //SEG906 [807] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] gfx_init_screen3_from_b3: jsr gfx_init_screen3 //SEG907 [457] phi from gfx_init::@3 to gfx_init::@4 [phi:gfx_init::@3->gfx_init::@4] @@ -16063,7 +16948,7 @@ gfx_init: { //SEG908 gfx_init::@4 b4: //SEG909 [458] call gfx_init_screen4 - //SEG910 [796] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] + //SEG910 [797] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] gfx_init_screen4_from_b4: jsr gfx_init_screen4 //SEG911 [459] phi from gfx_init::@4 to gfx_init::@5 [phi:gfx_init::@4->gfx_init::@5] @@ -16079,7 +16964,7 @@ gfx_init: { //SEG915 gfx_init::@6 b6: //SEG916 [462] call gfx_init_vic_bitmap - //SEG917 [605] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] + //SEG917 [606] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] gfx_init_vic_bitmap_from_b6: jsr gfx_init_vic_bitmap //SEG918 [463] phi from gfx_init::@6 to gfx_init::@7 [phi:gfx_init::@6->gfx_init::@7] @@ -16088,7 +16973,7 @@ gfx_init: { //SEG919 gfx_init::@7 b7: //SEG920 [464] call gfx_init_plane_8bppchunky - //SEG921 [585] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] + //SEG921 [586] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] gfx_init_plane_8bppchunky_from_b7: jsr gfx_init_plane_8bppchunky //SEG922 [465] phi from gfx_init::@7 to gfx_init::@8 [phi:gfx_init::@7->gfx_init::@8] @@ -16097,7 +16982,7 @@ gfx_init: { //SEG923 gfx_init::@8 b8: //SEG924 [466] call gfx_init_plane_charset8 - //SEG925 [560] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] + //SEG925 [561] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] gfx_init_plane_charset8_from_b8: jsr gfx_init_plane_charset8 //SEG926 [467] phi from gfx_init::@8 to gfx_init::@9 [phi:gfx_init::@8->gfx_init::@9] @@ -16106,7 +16991,7 @@ gfx_init: { //SEG927 gfx_init::@9 b9: //SEG928 [468] call gfx_init_plane_horisontal - //SEG929 [542] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] + //SEG929 [543] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] gfx_init_plane_horisontal_from_b9: jsr gfx_init_plane_horisontal //SEG930 [469] phi from gfx_init::@9 to gfx_init::@10 [phi:gfx_init::@9->gfx_init::@10] @@ -16115,7 +17000,7 @@ gfx_init: { //SEG931 gfx_init::@10 b10: //SEG932 [470] call gfx_init_plane_vertical - //SEG933 [529] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] + //SEG933 [530] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] gfx_init_plane_vertical_from_b10: jsr gfx_init_plane_vertical //SEG934 [471] phi from gfx_init::@10 to gfx_init::@11 [phi:gfx_init::@10->gfx_init::@11] @@ -16124,7 +17009,7 @@ gfx_init: { //SEG935 gfx_init::@11 b11: //SEG936 [472] call gfx_init_plane_horisontal2 - //SEG937 [514] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] + //SEG937 [515] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] gfx_init_plane_horisontal2_from_b11: jsr gfx_init_plane_horisontal2 //SEG938 [473] phi from gfx_init::@11 to gfx_init::@12 [phi:gfx_init::@11->gfx_init::@12] @@ -16133,7 +17018,7 @@ gfx_init: { //SEG939 gfx_init::@12 b12: //SEG940 [474] call gfx_init_plane_vertical2 - //SEG941 [511] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] + //SEG941 [512] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] gfx_init_plane_vertical2_from_b12: jsr gfx_init_plane_vertical2 //SEG942 [475] phi from gfx_init::@12 to gfx_init::@13 [phi:gfx_init::@12->gfx_init::@13] @@ -16142,7 +17027,7 @@ gfx_init: { //SEG943 gfx_init::@13 b13: //SEG944 [476] call gfx_init_plane_blank - //SEG945 [508] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] + //SEG945 [509] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] gfx_init_plane_blank_from_b13: jsr gfx_init_plane_blank //SEG946 [477] phi from gfx_init::@13 to gfx_init::@14 [phi:gfx_init::@13->gfx_init::@14] @@ -16188,10 +17073,11 @@ gfx_init_plane_full: { gfx_init_plane_fill: { .label _0 = $124 .label _1 = $128 - .label _4 = $12b - .label _5 = $12d - .label _6 = $12f + .label _4 = $12c + .label _5 = $12e + .label _6 = $130 .label gfxbCpuBank = $12a + .label gfxbCpuBank_1 = $12b .label gfxb = $40 .label bx = $42 .label by = $3f @@ -16226,26 +17112,30 @@ gfx_init_plane_fill: { lda gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx //SEG964 [488] call dtvSetCpuBankSegment1 - //SEG965 [504] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] + //SEG965 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_fill: - //SEG966 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy + //SEG966 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b5 //SEG967 gfx_init_plane_fill::@5 b5: - //SEG968 [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 -- vwuz1=_lo_vduz2 + //SEG968 [489] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuz1=_inc_vbuz2 + ldy gfxbCpuBank + iny + sty gfxbCpuBank_1 + //SEG969 [490] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 -- vwuz1=_lo_vduz2 lda plane_addr sta _4 lda plane_addr+1 sta _4+1 - //SEG969 [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz2_band_vwuc1 + //SEG970 [491] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz2_band_vwuc1 lda _4 and #<$3fff sta _5 lda _4+1 and #>$3fff sta _5+1 - //SEG970 [491] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 -- vwuz1=vwuc1_plus_vwuz2 + //SEG971 [492] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 -- vwuz1=vwuc1_plus_vwuz2 lda _5 clc adc #<$4000 @@ -16253,107 +17143,107 @@ gfx_init_plane_fill: { lda _5+1 adc #>$4000 sta _6+1 - //SEG971 [492] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 -- pbuz1=pbuz2 + //SEG972 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 -- pbuz1=pbuz2 lda _6 sta gfxb lda _6+1 sta gfxb+1 - //SEG972 [493] phi from gfx_init_plane_fill::@5 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1] + //SEG973 [494] phi from gfx_init_plane_fill::@5 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1] b1_from_b5: - //SEG973 [493] phi (byte) gfx_init_plane_fill::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#0] -- vbuz1=vbuc1 + //SEG974 [494] phi (byte) gfx_init_plane_fill::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG974 [493] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*~) gfx_init_plane_fill::gfxb#6 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#1] -- register_copy + //SEG975 [494] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*~) gfx_init_plane_fill::gfxb#6 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#1] -- register_copy jmp b1 - //SEG975 [493] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1] + //SEG976 [494] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1] b1_from_b3: - //SEG976 [493] phi (byte) gfx_init_plane_fill::by#4 = (byte) gfx_init_plane_fill::by#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#0] -- register_copy - //SEG977 [493] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#1] -- register_copy + //SEG977 [494] phi (byte) gfx_init_plane_fill::by#4 = (byte) gfx_init_plane_fill::by#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#0] -- register_copy + //SEG978 [494] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#1] -- register_copy jmp b1 - //SEG978 gfx_init_plane_fill::@1 + //SEG979 gfx_init_plane_fill::@1 b1: - //SEG979 [494] phi from gfx_init_plane_fill::@1 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2] + //SEG980 [495] phi from gfx_init_plane_fill::@1 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2] b2_from_b1: - //SEG980 [494] phi (byte) gfx_init_plane_fill::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#0] -- vbuz1=vbuc1 + //SEG981 [495] phi (byte) gfx_init_plane_fill::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#0] -- vbuz1=vbuc1 lda #0 sta bx - //SEG981 [494] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#3 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#1] -- register_copy + //SEG982 [495] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#3 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#1] -- register_copy jmp b2 - //SEG982 [494] phi from gfx_init_plane_fill::@2 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2] + //SEG983 [495] phi from gfx_init_plane_fill::@2 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2] b2_from_b2: - //SEG983 [494] phi (byte) gfx_init_plane_fill::bx#2 = (byte) gfx_init_plane_fill::bx#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#0] -- register_copy - //SEG984 [494] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#1] -- register_copy + //SEG984 [495] phi (byte) gfx_init_plane_fill::bx#2 = (byte) gfx_init_plane_fill::bx#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#0] -- register_copy + //SEG985 [495] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#1] -- register_copy jmp b2 - //SEG985 gfx_init_plane_fill::@2 + //SEG986 gfx_init_plane_fill::@2 b2: - //SEG986 [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 + //SEG987 [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 lda fill ldy #0 sta (gfxb),y - //SEG987 [496] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG988 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG988 [497] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuz1=_inc_vbuz1 + //SEG989 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuz1=_inc_vbuz1 inc bx - //SEG989 [498] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG990 [499] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 -- vbuz1_neq_vbuc1_then_la1 lda bx cmp #$28 bne b2_from_b2 jmp b3 - //SEG990 gfx_init_plane_fill::@3 + //SEG991 gfx_init_plane_fill::@3 b3: - //SEG991 [499] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 + //SEG992 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG992 [500] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG993 [501] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b1_from_b3 - //SEG993 [501] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@4 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@4] + //SEG994 [502] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@4 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@4] b4_from_b3: jmp b4 - //SEG994 gfx_init_plane_fill::@4 + //SEG995 gfx_init_plane_fill::@4 b4: - //SEG995 [502] call dtvSetCpuBankSegment1 - //SEG996 [504] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] + //SEG996 [503] call dtvSetCpuBankSegment1 + //SEG997 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG997 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG998 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp breturn - //SEG998 gfx_init_plane_fill::@return + //SEG999 gfx_init_plane_fill::@return breturn: - //SEG999 [503] return + //SEG1000 [504] return rts } -//SEG1000 dtvSetCpuBankSegment1 +//SEG1001 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1: { .label cpuBank = $ff .label cpuBankIdx = $43 - //SEG1001 [505] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuz1 + //SEG1002 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuz1 lda cpuBankIdx sta cpuBank - //SEG1002 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG1003 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG1003 dtvSetCpuBankSegment1::@return + //SEG1004 dtvSetCpuBankSegment1::@return breturn: - //SEG1004 [507] return + //SEG1005 [508] return rts } -//SEG1005 gfx_init_plane_blank +//SEG1006 gfx_init_plane_blank gfx_init_plane_blank: { - //SEG1006 [509] call gfx_init_plane_fill - //SEG1007 [483] phi from gfx_init_plane_blank to gfx_init_plane_fill [phi:gfx_init_plane_blank->gfx_init_plane_fill] + //SEG1007 [510] call gfx_init_plane_fill + //SEG1008 [483] phi from gfx_init_plane_blank to gfx_init_plane_fill [phi:gfx_init_plane_blank->gfx_init_plane_fill] gfx_init_plane_fill_from_gfx_init_plane_blank: - //SEG1008 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG1009 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #0 sta gfx_init_plane_fill.fill - //SEG1009 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_BLANK#0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG1010 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_BLANK#0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_BLANK @@ -16364,20 +17254,20 @@ gfx_init_plane_blank: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1010 gfx_init_plane_blank::@return + //SEG1011 gfx_init_plane_blank::@return breturn: - //SEG1011 [510] return + //SEG1012 [511] return rts } -//SEG1012 gfx_init_plane_vertical2 +//SEG1013 gfx_init_plane_vertical2 gfx_init_plane_vertical2: { - //SEG1013 [512] call gfx_init_plane_fill - //SEG1014 [483] phi from gfx_init_plane_vertical2 to gfx_init_plane_fill [phi:gfx_init_plane_vertical2->gfx_init_plane_fill] + //SEG1014 [513] call gfx_init_plane_fill + //SEG1015 [483] phi from gfx_init_plane_vertical2 to gfx_init_plane_fill [phi:gfx_init_plane_vertical2->gfx_init_plane_fill] gfx_init_plane_fill_from_gfx_init_plane_vertical2: - //SEG1015 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 27 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG1016 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 27 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #$1b sta gfx_init_plane_fill.fill - //SEG1016 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_VERTICAL2#0 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG1017 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_VERTICAL2#0 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_VERTICAL2 @@ -16388,319 +17278,319 @@ gfx_init_plane_vertical2: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1017 gfx_init_plane_vertical2::@return + //SEG1018 gfx_init_plane_vertical2::@return breturn: - //SEG1018 [513] return + //SEG1019 [514] return rts } -//SEG1019 gfx_init_plane_horisontal2 +//SEG1020 gfx_init_plane_horisontal2 gfx_init_plane_horisontal2: { .const gfxbCpuBank = PLANE_HORISONTAL2/$4000 - .label _5 = $131 - .label row = $132 + .label _5 = $132 + .label row = $133 .label gfxa = $45 .label ax = $47 .label ay = $44 - //SEG1020 [515] call dtvSetCpuBankSegment1 - //SEG1021 [504] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] + //SEG1021 [516] call dtvSetCpuBankSegment1 + //SEG1022 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal2: - //SEG1022 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1023 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 - //SEG1023 [516] phi from gfx_init_plane_horisontal2 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1] + //SEG1024 [517] phi from gfx_init_plane_horisontal2 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1] b1_from_gfx_init_plane_horisontal2: - //SEG1024 [516] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#0] -- pbuz1=pbuc1 + //SEG1025 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#0] -- pbuz1=pbuc1 lda #<$4000+(PLANE_HORISONTAL2&$3fff) sta gfxa lda #>$4000+(PLANE_HORISONTAL2&$3fff) sta gfxa+1 - //SEG1025 [516] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#1] -- vbuz1=vbuc1 + //SEG1026 [517] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b1 - //SEG1026 [516] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1] + //SEG1027 [517] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1] b1_from_b3: - //SEG1027 [516] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#0] -- register_copy - //SEG1028 [516] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte) gfx_init_plane_horisontal2::ay#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#1] -- register_copy + //SEG1028 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#0] -- register_copy + //SEG1029 [517] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte) gfx_init_plane_horisontal2::ay#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#1] -- register_copy jmp b1 - //SEG1029 gfx_init_plane_horisontal2::@1 + //SEG1030 gfx_init_plane_horisontal2::@1 b1: - //SEG1030 [517] phi from gfx_init_plane_horisontal2::@1 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2] + //SEG1031 [518] phi from gfx_init_plane_horisontal2::@1 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2] b2_from_b1: - //SEG1031 [517] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#0] -- vbuz1=vbuc1 + //SEG1032 [518] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#0] -- vbuz1=vbuc1 lda #0 sta ax - //SEG1032 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#3 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#1] -- register_copy + //SEG1033 [518] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#3 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#1] -- register_copy jmp b2 - //SEG1033 [517] phi from gfx_init_plane_horisontal2::@2 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2] + //SEG1034 [518] phi from gfx_init_plane_horisontal2::@2 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2] b2_from_b2: - //SEG1034 [517] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte) gfx_init_plane_horisontal2::ax#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#0] -- register_copy - //SEG1035 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#1] -- register_copy + //SEG1035 [518] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte) gfx_init_plane_horisontal2::ax#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#0] -- register_copy + //SEG1036 [518] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#1] -- register_copy jmp b2 - //SEG1036 gfx_init_plane_horisontal2::@2 + //SEG1037 gfx_init_plane_horisontal2::@2 b2: - //SEG1037 [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1038 [519] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda ay lsr sta _5 - //SEG1038 [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 + //SEG1039 [520] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and _5 sta row - //SEG1039 [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG1040 [521] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy row lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG1040 [521] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1041 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1041 [522] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuz1=_inc_vbuz1 + //SEG1042 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //SEG1042 [523] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1043 [524] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 -- vbuz1_neq_vbuc1_then_la1 lda ax cmp #$28 bne b2_from_b2 jmp b3 - //SEG1043 gfx_init_plane_horisontal2::@3 + //SEG1044 gfx_init_plane_horisontal2::@3 b3: - //SEG1044 [524] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1045 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG1045 [525] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1046 [526] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b1_from_b3 - //SEG1046 [526] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@4 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@4] + //SEG1047 [527] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@4 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@4] b4_from_b3: jmp b4 - //SEG1047 gfx_init_plane_horisontal2::@4 + //SEG1048 gfx_init_plane_horisontal2::@4 b4: - //SEG1048 [527] call dtvSetCpuBankSegment1 - //SEG1049 [504] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] + //SEG1049 [528] call dtvSetCpuBankSegment1 + //SEG1050 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1050 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1051 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1051 gfx_init_plane_horisontal2::@return + //SEG1052 gfx_init_plane_horisontal2::@return breturn: - //SEG1052 [528] return + //SEG1053 [529] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG1053 gfx_init_plane_vertical +//SEG1054 gfx_init_plane_vertical gfx_init_plane_vertical: { .const gfxbCpuBank = PLANE_VERTICAL/$4000 .label gfxb = $49 .label bx = $4b .label by = $48 - //SEG1054 [530] call dtvSetCpuBankSegment1 - //SEG1055 [504] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] + //SEG1055 [531] call dtvSetCpuBankSegment1 + //SEG1056 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_vertical: - //SEG1056 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1057 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 - //SEG1057 [531] phi from gfx_init_plane_vertical to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1] + //SEG1058 [532] phi from gfx_init_plane_vertical to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1] b1_from_gfx_init_plane_vertical: - //SEG1058 [531] phi (byte) gfx_init_plane_vertical::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#0] -- vbuz1=vbuc1 + //SEG1059 [532] phi (byte) gfx_init_plane_vertical::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG1059 [531] phi (byte*) gfx_init_plane_vertical::gfxb#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#1] -- pbuz1=pbuc1 + //SEG1060 [532] phi (byte*) gfx_init_plane_vertical::gfxb#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#1] -- pbuz1=pbuc1 lda #<$4000+(PLANE_VERTICAL&$3fff) sta gfxb lda #>$4000+(PLANE_VERTICAL&$3fff) sta gfxb+1 jmp b1 - //SEG1060 [531] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1] + //SEG1061 [532] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1] b1_from_b3: - //SEG1061 [531] phi (byte) gfx_init_plane_vertical::by#4 = (byte) gfx_init_plane_vertical::by#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#0] -- register_copy - //SEG1062 [531] phi (byte*) gfx_init_plane_vertical::gfxb#3 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#1] -- register_copy + //SEG1062 [532] phi (byte) gfx_init_plane_vertical::by#4 = (byte) gfx_init_plane_vertical::by#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#0] -- register_copy + //SEG1063 [532] phi (byte*) gfx_init_plane_vertical::gfxb#3 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#1] -- register_copy jmp b1 - //SEG1063 gfx_init_plane_vertical::@1 + //SEG1064 gfx_init_plane_vertical::@1 b1: - //SEG1064 [532] phi from gfx_init_plane_vertical::@1 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2] + //SEG1065 [533] phi from gfx_init_plane_vertical::@1 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2] b2_from_b1: - //SEG1065 [532] phi (byte) gfx_init_plane_vertical::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#0] -- vbuz1=vbuc1 + //SEG1066 [533] phi (byte) gfx_init_plane_vertical::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#0] -- vbuz1=vbuc1 lda #0 sta bx - //SEG1066 [532] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#3 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#1] -- register_copy + //SEG1067 [533] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#3 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#1] -- register_copy jmp b2 - //SEG1067 [532] phi from gfx_init_plane_vertical::@2 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2] + //SEG1068 [533] phi from gfx_init_plane_vertical::@2 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2] b2_from_b2: - //SEG1068 [532] phi (byte) gfx_init_plane_vertical::bx#2 = (byte) gfx_init_plane_vertical::bx#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#0] -- register_copy - //SEG1069 [532] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#1] -- register_copy + //SEG1069 [533] phi (byte) gfx_init_plane_vertical::bx#2 = (byte) gfx_init_plane_vertical::bx#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#0] -- register_copy + //SEG1070 [533] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#1] -- register_copy jmp b2 - //SEG1070 gfx_init_plane_vertical::@2 + //SEG1071 gfx_init_plane_vertical::@2 b2: - //SEG1071 [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG1072 [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 lda #$f ldy #0 sta (gfxb),y - //SEG1072 [534] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG1073 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1073 [535] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuz1=_inc_vbuz1 + //SEG1074 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuz1=_inc_vbuz1 inc bx - //SEG1074 [536] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1075 [537] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 -- vbuz1_neq_vbuc1_then_la1 lda bx cmp #$28 bne b2_from_b2 jmp b3 - //SEG1075 gfx_init_plane_vertical::@3 + //SEG1076 gfx_init_plane_vertical::@3 b3: - //SEG1076 [537] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 + //SEG1077 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG1077 [538] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1078 [539] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b1_from_b3 - //SEG1078 [539] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@4 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@4] + //SEG1079 [540] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@4 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@4] b4_from_b3: jmp b4 - //SEG1079 gfx_init_plane_vertical::@4 + //SEG1080 gfx_init_plane_vertical::@4 b4: - //SEG1080 [540] call dtvSetCpuBankSegment1 - //SEG1081 [504] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] + //SEG1081 [541] call dtvSetCpuBankSegment1 + //SEG1082 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1082 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1083 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1083 gfx_init_plane_vertical::@return + //SEG1084 gfx_init_plane_vertical::@return breturn: - //SEG1084 [541] return + //SEG1085 [542] return rts } -//SEG1085 gfx_init_plane_horisontal +//SEG1086 gfx_init_plane_horisontal gfx_init_plane_horisontal: { .const gfxbCpuBank = PLANE_HORISONTAL/$4000 - .label _5 = $133 + .label _5 = $134 .label gfxa = $4d .label ax = $4f .label ay = $4c - //SEG1086 [543] call dtvSetCpuBankSegment1 - //SEG1087 [504] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] + //SEG1087 [544] call dtvSetCpuBankSegment1 + //SEG1088 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal: - //SEG1088 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1089 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 - //SEG1089 [544] phi from gfx_init_plane_horisontal to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1] + //SEG1090 [545] phi from gfx_init_plane_horisontal to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1] b1_from_gfx_init_plane_horisontal: - //SEG1090 [544] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#0] -- pbuz1=pbuc1 + //SEG1091 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#0] -- pbuz1=pbuc1 lda #<$4000+(PLANE_HORISONTAL&$3fff) sta gfxa lda #>$4000+(PLANE_HORISONTAL&$3fff) sta gfxa+1 - //SEG1091 [544] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#1] -- vbuz1=vbuc1 + //SEG1092 [545] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b1 - //SEG1092 [544] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1] + //SEG1093 [545] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1] b1_from_b7: - //SEG1093 [544] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#0] -- register_copy - //SEG1094 [544] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte) gfx_init_plane_horisontal::ay#1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#1] -- register_copy + //SEG1094 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#0] -- register_copy + //SEG1095 [545] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte) gfx_init_plane_horisontal::ay#1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#1] -- register_copy jmp b1 - //SEG1095 gfx_init_plane_horisontal::@1 + //SEG1096 gfx_init_plane_horisontal::@1 b1: - //SEG1096 [545] phi from gfx_init_plane_horisontal::@1 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2] + //SEG1097 [546] phi from gfx_init_plane_horisontal::@1 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2] b2_from_b1: - //SEG1097 [545] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#0] -- vbuz1=vbuc1 + //SEG1098 [546] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#0] -- vbuz1=vbuc1 lda #0 sta ax - //SEG1098 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#6 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#1] -- register_copy + //SEG1099 [546] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#6 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#1] -- register_copy jmp b2 - //SEG1099 [545] phi from gfx_init_plane_horisontal::@4 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2] + //SEG1100 [546] phi from gfx_init_plane_horisontal::@4 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2] b2_from_b4: - //SEG1100 [545] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#1 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#0] -- register_copy - //SEG1101 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#1] -- register_copy + //SEG1101 [546] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#1 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#0] -- register_copy + //SEG1102 [546] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#1] -- register_copy jmp b2 - //SEG1102 gfx_init_plane_horisontal::@2 + //SEG1103 gfx_init_plane_horisontal::@2 b2: - //SEG1103 [546] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_band_vbuc1 + //SEG1104 [547] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_band_vbuc1 lda #4 and ay sta _5 - //SEG1104 [547] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 -- vbuz1_eq_0_then_la1 + //SEG1105 [548] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 -- vbuz1_eq_0_then_la1 lda _5 cmp #0 beq b3 jmp b5 - //SEG1105 gfx_init_plane_horisontal::@5 + //SEG1106 gfx_init_plane_horisontal::@5 b5: - //SEG1106 [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG1107 [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 lda #$ff ldy #0 sta (gfxa),y - //SEG1107 [549] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1108 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1108 [550] phi from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 to gfx_init_plane_horisontal::@4 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4] + //SEG1109 [551] phi from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 to gfx_init_plane_horisontal::@4 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4] b4_from_b3: b4_from_b5: - //SEG1109 [550] phi (byte*) gfx_init_plane_horisontal::gfxa#7 = (byte*) gfx_init_plane_horisontal::gfxa#1 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4#0] -- register_copy + //SEG1110 [551] phi (byte*) gfx_init_plane_horisontal::gfxa#7 = (byte*) gfx_init_plane_horisontal::gfxa#1 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4#0] -- register_copy jmp b4 - //SEG1110 gfx_init_plane_horisontal::@4 + //SEG1111 gfx_init_plane_horisontal::@4 b4: - //SEG1111 [551] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuz1=_inc_vbuz1 + //SEG1112 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuz1=_inc_vbuz1 inc ax - //SEG1112 [552] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1113 [553] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 -- vbuz1_neq_vbuc1_then_la1 lda ax cmp #$28 bne b2_from_b4 jmp b7 - //SEG1113 gfx_init_plane_horisontal::@7 + //SEG1114 gfx_init_plane_horisontal::@7 b7: - //SEG1114 [553] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1115 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG1115 [554] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1116 [555] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b1_from_b7 - //SEG1116 [555] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@8 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@8] + //SEG1117 [556] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@8 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@8] b8_from_b7: jmp b8 - //SEG1117 gfx_init_plane_horisontal::@8 + //SEG1118 gfx_init_plane_horisontal::@8 b8: - //SEG1118 [556] call dtvSetCpuBankSegment1 - //SEG1119 [504] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] + //SEG1119 [557] call dtvSetCpuBankSegment1 + //SEG1120 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG1120 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1121 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1121 gfx_init_plane_horisontal::@return + //SEG1122 gfx_init_plane_horisontal::@return breturn: - //SEG1122 [557] return + //SEG1123 [558] return rts - //SEG1123 gfx_init_plane_horisontal::@3 + //SEG1124 gfx_init_plane_horisontal::@3 b3: - //SEG1124 [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1125 [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (gfxa),y - //SEG1125 [559] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1126 [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: jmp b4_from_b3 } -//SEG1126 gfx_init_plane_charset8 +//SEG1127 gfx_init_plane_charset8 gfx_init_plane_charset8: { .const gfxbCpuBank = PLANE_CHARSET8/$4000 - .label _5 = $134 + .label _5 = $135 .label bits = $54 .label chargen = $51 .label gfxa = $55 @@ -16709,230 +17599,230 @@ gfx_init_plane_charset8: { .label cr = $53 .label ch = $50 .label c = $59 - //SEG1127 [561] call dtvSetCpuBankSegment1 - //SEG1128 [504] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG1128 [562] call dtvSetCpuBankSegment1 + //SEG1129 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_charset8: - //SEG1129 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1130 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp b9 - //SEG1130 gfx_init_plane_charset8::@9 + //SEG1131 gfx_init_plane_charset8::@9 b9: - //SEG1131 [562] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG1132 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG1132 [563] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] + //SEG1133 [564] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] b1_from_b9: - //SEG1133 [563] phi (byte) gfx_init_plane_charset8::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#0] -- vbuz1=vbuc1 + //SEG1134 [564] phi (byte) gfx_init_plane_charset8::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#0] -- vbuz1=vbuc1 lda #0 sta ch - //SEG1134 [563] phi (byte) gfx_init_plane_charset8::col#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#1] -- vbuz1=vbuc1 + //SEG1135 [564] phi (byte) gfx_init_plane_charset8::col#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#1] -- vbuz1=vbuc1 lda #0 sta col - //SEG1135 [563] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 + //SEG1136 [564] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 lda #<$4000+(PLANE_CHARSET8&$3fff) sta gfxa lda #>$4000+(PLANE_CHARSET8&$3fff) sta gfxa+1 - //SEG1136 [563] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 + //SEG1137 [564] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG1137 [563] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] + //SEG1138 [564] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] b1_from_b7: - //SEG1138 [563] phi (byte) gfx_init_plane_charset8::ch#8 = (byte) gfx_init_plane_charset8::ch#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#0] -- register_copy - //SEG1139 [563] phi (byte) gfx_init_plane_charset8::col#6 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#1] -- register_copy - //SEG1140 [563] phi (byte*) gfx_init_plane_charset8::gfxa#6 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#2] -- register_copy - //SEG1141 [563] phi (byte*) gfx_init_plane_charset8::chargen#3 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#3] -- register_copy + //SEG1139 [564] phi (byte) gfx_init_plane_charset8::ch#8 = (byte) gfx_init_plane_charset8::ch#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#0] -- register_copy + //SEG1140 [564] phi (byte) gfx_init_plane_charset8::col#6 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#1] -- register_copy + //SEG1141 [564] phi (byte*) gfx_init_plane_charset8::gfxa#6 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#2] -- register_copy + //SEG1142 [564] phi (byte*) gfx_init_plane_charset8::chargen#3 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#3] -- register_copy jmp b1 - //SEG1142 gfx_init_plane_charset8::@1 + //SEG1143 gfx_init_plane_charset8::@1 b1: - //SEG1143 [564] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] + //SEG1144 [565] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] b2_from_b1: - //SEG1144 [564] phi (byte) gfx_init_plane_charset8::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#0] -- vbuz1=vbuc1 + //SEG1145 [565] phi (byte) gfx_init_plane_charset8::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#0] -- vbuz1=vbuc1 lda #0 sta cr - //SEG1145 [564] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#1] -- register_copy - //SEG1146 [564] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#2] -- register_copy - //SEG1147 [564] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#3 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#3] -- register_copy + //SEG1146 [565] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#1] -- register_copy + //SEG1147 [565] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#2] -- register_copy + //SEG1148 [565] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#3 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#3] -- register_copy jmp b2 - //SEG1148 [564] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] + //SEG1149 [565] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] b2_from_b6: - //SEG1149 [564] phi (byte) gfx_init_plane_charset8::cr#6 = (byte) gfx_init_plane_charset8::cr#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#0] -- register_copy - //SEG1150 [564] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#1] -- register_copy - //SEG1151 [564] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#2] -- register_copy - //SEG1152 [564] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#3] -- register_copy + //SEG1150 [565] phi (byte) gfx_init_plane_charset8::cr#6 = (byte) gfx_init_plane_charset8::cr#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#0] -- register_copy + //SEG1151 [565] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#1] -- register_copy + //SEG1152 [565] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#2] -- register_copy + //SEG1153 [565] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#3] -- register_copy jmp b2 - //SEG1153 gfx_init_plane_charset8::@2 + //SEG1154 gfx_init_plane_charset8::@2 b2: - //SEG1154 [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG1155 [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG1155 [566] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1156 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1156 [567] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] + //SEG1157 [568] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] b3_from_b2: - //SEG1157 [567] phi (byte) gfx_init_plane_charset8::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#0] -- vbuz1=vbuc1 + //SEG1158 [568] phi (byte) gfx_init_plane_charset8::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#0] -- vbuz1=vbuc1 lda #0 sta cp - //SEG1158 [567] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#1] -- register_copy - //SEG1159 [567] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#2] -- register_copy - //SEG1160 [567] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#3] -- register_copy + //SEG1159 [568] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#1] -- register_copy + //SEG1160 [568] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#2] -- register_copy + //SEG1161 [568] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#3] -- register_copy jmp b3 - //SEG1161 [567] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] + //SEG1162 [568] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] b3_from_b4: - //SEG1162 [567] phi (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#0] -- register_copy - //SEG1163 [567] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#1] -- register_copy - //SEG1164 [567] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#2] -- register_copy - //SEG1165 [567] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#3] -- register_copy + //SEG1163 [568] phi (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#0] -- register_copy + //SEG1164 [568] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#1] -- register_copy + //SEG1165 [568] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#2] -- register_copy + //SEG1166 [568] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#3] -- register_copy jmp b3 - //SEG1166 gfx_init_plane_charset8::@3 + //SEG1167 gfx_init_plane_charset8::@3 b3: - //SEG1167 [568] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG1168 [569] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and bits sta _5 - //SEG1168 [569] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuz1_eq_0_then_la1 + //SEG1169 [570] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuz1_eq_0_then_la1 lda _5 cmp #0 beq b4_from_b3 jmp b5 - //SEG1169 gfx_init_plane_charset8::@5 + //SEG1170 gfx_init_plane_charset8::@5 b5: - //SEG1170 [570] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuz1=vbuz2 + //SEG1171 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuz1=vbuz2 lda col sta c - //SEG1171 [571] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] + //SEG1172 [572] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] b4_from_b5: - //SEG1172 [571] phi (byte) gfx_init_plane_charset8::c#2 = (byte~) gfx_init_plane_charset8::c#3 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4#0] -- register_copy + //SEG1173 [572] phi (byte) gfx_init_plane_charset8::c#2 = (byte~) gfx_init_plane_charset8::c#3 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4#0] -- register_copy jmp b4 - //SEG1173 [571] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] + //SEG1174 [572] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] b4_from_b3: - //SEG1174 [571] phi (byte) gfx_init_plane_charset8::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4#0] -- vbuz1=vbuc1 + //SEG1175 [572] phi (byte) gfx_init_plane_charset8::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4#0] -- vbuz1=vbuc1 lda #0 sta c jmp b4 - //SEG1175 gfx_init_plane_charset8::@4 + //SEG1176 gfx_init_plane_charset8::@4 b4: - //SEG1176 [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuz2 + //SEG1177 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (gfxa),y - //SEG1177 [573] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1178 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1178 [574] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG1179 [575] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG1179 [575] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG1180 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1180 [576] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuz1=_inc_vbuz1 + //SEG1181 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuz1=_inc_vbuz1 inc cp - //SEG1181 [577] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG1182 [578] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 -- vbuz1_neq_vbuc1_then_la1 lda cp cmp #8 bne b3_from_b4 jmp b6 - //SEG1182 gfx_init_plane_charset8::@6 + //SEG1183 gfx_init_plane_charset8::@6 b6: - //SEG1183 [578] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG1184 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG1184 [579] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1185 [580] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1 lda cr cmp #8 bne b2_from_b6 jmp b7 - //SEG1185 gfx_init_plane_charset8::@7 + //SEG1186 gfx_init_plane_charset8::@7 b7: - //SEG1186 [580] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG1187 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG1187 [581] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 -- vbuz1_neq_0_then_la1 + //SEG1188 [582] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 -- vbuz1_neq_0_then_la1 lda ch cmp #0 bne b1_from_b7 jmp b8 - //SEG1188 gfx_init_plane_charset8::@8 + //SEG1189 gfx_init_plane_charset8::@8 b8: - //SEG1189 [582] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1190 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1190 [583] call dtvSetCpuBankSegment1 - //SEG1191 [504] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG1191 [584] call dtvSetCpuBankSegment1 + //SEG1192 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG1192 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1193 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1193 gfx_init_plane_charset8::@return + //SEG1194 gfx_init_plane_charset8::@return breturn: - //SEG1194 [584] return + //SEG1195 [585] return rts } -//SEG1195 gfx_init_plane_8bppchunky +//SEG1196 gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky: { - .label _6 = $135 - .label c = $137 + .label _6 = $136 + .label c = $138 .label gfxb = $5e .label x = $5b .label gfxbCpuBank = $5d .label y = $5a - //SEG1196 [586] call dtvSetCpuBankSegment1 - //SEG1197 [504] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] + //SEG1197 [587] call dtvSetCpuBankSegment1 + //SEG1198 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_8bppchunky: - //SEG1198 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1199 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #PLANE_8BPP_CHUNKY/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 - //SEG1199 [587] phi from gfx_init_plane_8bppchunky to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1] + //SEG1200 [588] phi from gfx_init_plane_8bppchunky to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1] b1_from_gfx_init_plane_8bppchunky: - //SEG1200 [587] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = ++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#0] -- vbuz1=vbuc1 + //SEG1201 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = ++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#0] -- vbuz1=vbuc1 lda #PLANE_8BPP_CHUNKY/$4000+1 sta gfxbCpuBank - //SEG1201 [587] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#1] -- vbuz1=vbuc1 + //SEG1202 [588] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG1202 [587] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#2] -- pbuz1=pbuc1 + //SEG1203 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b1 - //SEG1203 [587] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1] + //SEG1204 [588] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1] b1_from_b5: - //SEG1204 [587] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#0] -- register_copy - //SEG1205 [587] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte) gfx_init_plane_8bppchunky::y#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#1] -- register_copy - //SEG1206 [587] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#2] -- register_copy + //SEG1205 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#0] -- register_copy + //SEG1206 [588] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte) gfx_init_plane_8bppchunky::y#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#1] -- register_copy + //SEG1207 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#2] -- register_copy jmp b1 - //SEG1207 gfx_init_plane_8bppchunky::@1 + //SEG1208 gfx_init_plane_8bppchunky::@1 b1: - //SEG1208 [588] phi from gfx_init_plane_8bppchunky::@1 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2] + //SEG1209 [589] phi from gfx_init_plane_8bppchunky::@1 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2] b2_from_b1: - //SEG1209 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#0] -- register_copy - //SEG1210 [588] phi (word) gfx_init_plane_8bppchunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#1] -- vwuz1=vbuc1 + //SEG1210 [589] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#0] -- register_copy + //SEG1211 [589] phi (word) gfx_init_plane_8bppchunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#1] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 - //SEG1211 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#5 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#2] -- register_copy + //SEG1212 [589] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#5 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#2] -- register_copy jmp b2 - //SEG1212 [588] phi from gfx_init_plane_8bppchunky::@3 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2] + //SEG1213 [589] phi from gfx_init_plane_8bppchunky::@3 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2] b2_from_b3: - //SEG1213 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#0] -- register_copy - //SEG1214 [588] phi (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#1] -- register_copy - //SEG1215 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#2] -- register_copy + //SEG1214 [589] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#0] -- register_copy + //SEG1215 [589] phi (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#1] -- register_copy + //SEG1216 [589] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#2] -- register_copy jmp b2 - //SEG1216 gfx_init_plane_8bppchunky::@2 + //SEG1217 gfx_init_plane_8bppchunky::@2 b2: - //SEG1217 [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 -- pbuz1_neq_vwuc1_then_la1 + //SEG1218 [590] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b3_from_b2 @@ -16940,38 +17830,38 @@ gfx_init_plane_8bppchunky: { cmp #<$8000 bne b3_from_b2 jmp b4 - //SEG1218 gfx_init_plane_8bppchunky::@4 + //SEG1219 gfx_init_plane_8bppchunky::@4 b4: - //SEG1219 [590] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=vbuz2 + //SEG1220 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=vbuz2 lda gfxbCpuBank sta dtvSetCpuBankSegment1.cpuBankIdx - //SEG1220 [591] call dtvSetCpuBankSegment1 - //SEG1221 [504] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] + //SEG1221 [592] call dtvSetCpuBankSegment1 + //SEG1222 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1222 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG1223 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b8 - //SEG1223 gfx_init_plane_8bppchunky::@8 + //SEG1224 gfx_init_plane_8bppchunky::@8 b8: - //SEG1224 [592] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 + //SEG1225 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuz1=_inc_vbuz1 inc gfxbCpuBank - //SEG1225 [593] phi from gfx_init_plane_8bppchunky::@8 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3] + //SEG1226 [594] phi from gfx_init_plane_8bppchunky::@8 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3] b3_from_b8: - //SEG1226 [593] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#0] -- register_copy - //SEG1227 [593] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#1] -- pbuz1=pbuc1 + //SEG1227 [594] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#0] -- register_copy + //SEG1228 [594] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b3 - //SEG1228 [593] phi from gfx_init_plane_8bppchunky::@2 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3] + //SEG1229 [594] phi from gfx_init_plane_8bppchunky::@2 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3] b3_from_b2: - //SEG1229 [593] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#0] -- register_copy - //SEG1230 [593] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = (byte*) gfx_init_plane_8bppchunky::gfxb#3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#1] -- register_copy + //SEG1230 [594] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#0] -- register_copy + //SEG1231 [594] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = (byte*) gfx_init_plane_8bppchunky::gfxb#3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#1] -- register_copy jmp b3 - //SEG1231 gfx_init_plane_8bppchunky::@3 + //SEG1232 gfx_init_plane_8bppchunky::@3 b3: - //SEG1232 [594] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG1233 [595] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -16979,24 +17869,24 @@ gfx_init_plane_8bppchunky: { lda #0 adc x+1 sta _6+1 - //SEG1233 [595] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuz1=_byte_vwuz2 + //SEG1234 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuz1=_byte_vwuz2 lda _6 sta c - //SEG1234 [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuz2 + //SEG1235 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuz2 lda c ldy #0 sta (gfxb),y - //SEG1235 [597] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG1236 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1236 [598] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG1237 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG1237 [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 -- vwuz1_neq_vwuc1_then_la1 + //SEG1238 [600] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b2_from_b3 @@ -17004,505 +17894,505 @@ gfx_init_plane_8bppchunky: { cmp #<$140 bne b2_from_b3 jmp b5 - //SEG1238 gfx_init_plane_8bppchunky::@5 + //SEG1239 gfx_init_plane_8bppchunky::@5 b5: - //SEG1239 [600] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG1240 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1240 [601] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1241 [602] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$c8 bne b1_from_b5 - //SEG1241 [602] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@6 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@6] + //SEG1242 [603] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@6 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@6] b6_from_b5: jmp b6 - //SEG1242 gfx_init_plane_8bppchunky::@6 + //SEG1243 gfx_init_plane_8bppchunky::@6 b6: - //SEG1243 [603] call dtvSetCpuBankSegment1 - //SEG1244 [504] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] + //SEG1244 [604] call dtvSetCpuBankSegment1 + //SEG1245 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //SEG1245 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 + //SEG1246 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1#0] -- vbuz1=vbuc1 lda #$4000/$4000 sta dtvSetCpuBankSegment1.cpuBankIdx jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1246 gfx_init_plane_8bppchunky::@return + //SEG1247 gfx_init_plane_8bppchunky::@return breturn: - //SEG1247 [604] return + //SEG1248 [605] return rts } -//SEG1248 gfx_init_vic_bitmap +//SEG1249 gfx_init_vic_bitmap gfx_init_vic_bitmap: { .const lines_cnt = 9 .label l = $60 - //SEG1249 [606] call bitmap_init - //SEG1250 [758] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] + //SEG1250 [607] call bitmap_init + //SEG1251 [759] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] bitmap_init_from_gfx_init_vic_bitmap: jsr bitmap_init - //SEG1251 [607] phi from gfx_init_vic_bitmap to gfx_init_vic_bitmap::@3 [phi:gfx_init_vic_bitmap->gfx_init_vic_bitmap::@3] + //SEG1252 [608] phi from gfx_init_vic_bitmap to gfx_init_vic_bitmap::@3 [phi:gfx_init_vic_bitmap->gfx_init_vic_bitmap::@3] b3_from_gfx_init_vic_bitmap: jmp b3 - //SEG1252 gfx_init_vic_bitmap::@3 + //SEG1253 gfx_init_vic_bitmap::@3 b3: - //SEG1253 [608] call bitmap_clear + //SEG1254 [609] call bitmap_clear jsr bitmap_clear - //SEG1254 [609] phi from gfx_init_vic_bitmap::@3 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1] + //SEG1255 [610] phi from gfx_init_vic_bitmap::@3 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1] b1_from_b3: - //SEG1255 [609] phi (byte) gfx_init_vic_bitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1#0] -- vbuz1=vbuc1 + //SEG1256 [610] phi (byte) gfx_init_vic_bitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1#0] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG1256 [609] phi from gfx_init_vic_bitmap::@5 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1] + //SEG1257 [610] phi from gfx_init_vic_bitmap::@5 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1] b1_from_b5: - //SEG1257 [609] phi (byte) gfx_init_vic_bitmap::l#2 = (byte) gfx_init_vic_bitmap::l#1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1#0] -- register_copy + //SEG1258 [610] phi (byte) gfx_init_vic_bitmap::l#2 = (byte) gfx_init_vic_bitmap::l#1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1#0] -- register_copy jmp b1 - //SEG1258 gfx_init_vic_bitmap::@1 + //SEG1259 gfx_init_vic_bitmap::@1 b1: - //SEG1259 [610] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1260 [611] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG1260 [611] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1261 [612] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x+1,y sta bitmap_line.x1 - //SEG1261 [612] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1262 [613] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y,y sta bitmap_line.y0 - //SEG1262 [613] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1263 [614] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y+1,y sta bitmap_line.y1 - //SEG1263 [614] call bitmap_line + //SEG1264 [615] call bitmap_line jsr bitmap_line jmp b5 - //SEG1264 gfx_init_vic_bitmap::@5 + //SEG1265 gfx_init_vic_bitmap::@5 b5: - //SEG1265 [615] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1266 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG1266 [616] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG1267 [617] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b1_from_b5 jmp breturn - //SEG1267 gfx_init_vic_bitmap::@return + //SEG1268 gfx_init_vic_bitmap::@return breturn: - //SEG1268 [617] return + //SEG1269 [618] return rts lines_x: .byte 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80 lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } -//SEG1269 bitmap_line +//SEG1270 bitmap_line bitmap_line: { - .label xd = $13f - .label xd_1 = $13c - .label yd = $13e - .label yd_1 = $13d - .label yd_3 = $140 - .label x0 = $138 - .label x1 = $139 - .label y0 = $13a - .label y1 = $13b - .label yd_10 = $141 - //SEG1270 [618] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + .label xd = $140 + .label xd_1 = $13d + .label yd = $13f + .label yd_1 = $13e + .label yd_3 = $141 + .label x0 = $139 + .label x1 = $13a + .label y0 = $13b + .label y1 = $13c + .label yd_10 = $142 + //SEG1271 [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 lda x0 cmp x1 bcc b1 jmp b15 - //SEG1271 bitmap_line::@15 + //SEG1272 bitmap_line::@15 b15: - //SEG1272 [619] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1273 [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 lda x0 sec sbc x1 sta xd_1 - //SEG1273 [620] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuz2_then_la1 + //SEG1274 [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuz2_then_la1 lda y0 cmp y1 bcc b2 jmp b16 - //SEG1274 bitmap_line::@16 + //SEG1275 bitmap_line::@16 b16: - //SEG1275 [621] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1276 [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 lda y0 sec sbc y1 sta yd_1 - //SEG1276 [622] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1277 [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 lda yd_1 cmp xd_1 bcc b3 jmp b17 - //SEG1277 bitmap_line::@17 + //SEG1278 bitmap_line::@17 b17: - //SEG1278 [623] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1279 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y - //SEG1279 [624] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1280 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxi.x - //SEG1280 [625] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1281 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y1 - //SEG1281 [626] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG1282 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_ydxi.yd - //SEG1282 [627] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1283 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxi.xd - //SEG1283 [628] call bitmap_line_ydxi - //SEG1284 [702] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1284 [629] call bitmap_line_ydxi + //SEG1285 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //SEG1285 [702] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG1286 [702] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG1287 [702] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG1288 [702] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG1289 [702] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG1286 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1287 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1288 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1289 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1290 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi jmp breturn - //SEG1290 bitmap_line::@return + //SEG1291 bitmap_line::@return breturn: - //SEG1291 [629] return + //SEG1292 [630] return rts - //SEG1292 bitmap_line::@3 + //SEG1293 bitmap_line::@3 b3: - //SEG1293 [630] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1294 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1294 [631] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1295 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyi.y - //SEG1295 [632] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1296 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x1 - //SEG1296 [633] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1297 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyi.xd - //SEG1297 [634] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 + //SEG1298 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 -- vbuz1=vbuz2 lda yd_1 sta bitmap_line_xdyi.yd - //SEG1298 [635] call bitmap_line_xdyi - //SEG1299 [680] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1299 [636] call bitmap_line_xdyi + //SEG1300 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //SEG1300 [680] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG1301 [680] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG1302 [680] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG1303 [680] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG1304 [680] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG1301 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1302 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1303 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1304 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1305 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi jmp breturn - //SEG1305 bitmap_line::@2 + //SEG1306 bitmap_line::@2 b2: - //SEG1306 [636] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1307 [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 lda y1 sec sbc y0 sta yd - //SEG1307 [637] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1308 [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 lda yd cmp xd_1 bcc b6 jmp b20 - //SEG1308 bitmap_line::@20 + //SEG1309 bitmap_line::@20 b20: - //SEG1309 [638] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1310 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1310 [639] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1311 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxd.x - //SEG1311 [640] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1312 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y1 - //SEG1312 [641] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG1313 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_ydxd.yd - //SEG1313 [642] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1314 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_ydxd.xd - //SEG1314 [643] call bitmap_line_ydxd - //SEG1315 [732] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1315 [644] call bitmap_line_ydxd + //SEG1316 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //SEG1316 [732] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG1317 [732] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG1318 [732] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG1319 [732] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG1320 [732] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG1317 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1318 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1319 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1320 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1321 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd jmp breturn - //SEG1321 bitmap_line::@6 + //SEG1322 bitmap_line::@6 b6: - //SEG1322 [644] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1323 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1323 [645] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1324 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_xdyd.y - //SEG1324 [646] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1325 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1325 [647] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 + //SEG1326 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda xd_1 sta bitmap_line_xdyd.xd - //SEG1326 [648] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 + //SEG1327 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 -- vbuz1=vbuz2 lda yd sta bitmap_line_xdyd.yd - //SEG1327 [649] call bitmap_line_xdyd - //SEG1328 [717] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1328 [650] call bitmap_line_xdyd + //SEG1329 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //SEG1329 [717] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG1330 [717] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG1331 [717] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG1332 [717] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG1333 [717] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG1330 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1331 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1332 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1333 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1334 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd jmp breturn - //SEG1334 bitmap_line::@1 + //SEG1335 bitmap_line::@1 b1: - //SEG1335 [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1336 [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 lda x1 sec sbc x0 sta xd - //SEG1336 [651] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuz2_then_la1 + //SEG1337 [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuz2_then_la1 lda y0 cmp y1 bcc b9 jmp b23 - //SEG1337 bitmap_line::@23 + //SEG1338 bitmap_line::@23 b23: - //SEG1338 [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1339 [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuz3 lda y0 sec sbc y1 sta yd_3 - //SEG1339 [653] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1340 [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 lda yd_3 cmp xd bcc b10 jmp b24 - //SEG1340 bitmap_line::@24 + //SEG1341 bitmap_line::@24 b24: - //SEG1341 [654] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1342 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxd.y - //SEG1342 [655] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1343 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_ydxd.x - //SEG1343 [656] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1344 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y1 - //SEG1344 [657] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG1345 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_ydxd.yd - //SEG1345 [658] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1346 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxd.xd - //SEG1346 [659] call bitmap_line_ydxd - //SEG1347 [732] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1347 [660] call bitmap_line_ydxd + //SEG1348 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //SEG1348 [732] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG1349 [732] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG1350 [732] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG1351 [732] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG1352 [732] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG1349 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1350 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1351 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1352 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1353 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd jmp breturn - //SEG1353 bitmap_line::@10 + //SEG1354 bitmap_line::@10 b10: - //SEG1354 [660] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1355 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1355 [661] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1356 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyd.y - //SEG1356 [662] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1357 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x1 - //SEG1357 [663] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1358 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyd.xd - //SEG1358 [664] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 + //SEG1359 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 -- vbuz1=vbuz2 lda yd_3 sta bitmap_line_xdyd.yd - //SEG1359 [665] call bitmap_line_xdyd - //SEG1360 [717] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1360 [666] call bitmap_line_xdyd + //SEG1361 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //SEG1361 [717] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG1362 [717] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG1363 [717] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG1364 [717] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG1365 [717] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG1362 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1363 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1364 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1365 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1366 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd jmp breturn - //SEG1366 bitmap_line::@9 + //SEG1367 bitmap_line::@9 b9: - //SEG1367 [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1368 [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuz2_minus_vbuz3 lda y1 sec sbc y0 sta yd_10 - //SEG1368 [667] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1369 [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 lda yd_10 cmp xd bcc b13 jmp b27 - //SEG1369 bitmap_line::@27 + //SEG1370 bitmap_line::@27 b27: - //SEG1370 [668] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1371 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1371 [669] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1372 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_ydxi.x - //SEG1372 [670] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 + //SEG1373 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuz2 lda y1 sta bitmap_line_ydxi.y1 - //SEG1373 [671] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG1374 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_ydxi.yd - //SEG1374 [672] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1375 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_ydxi.xd - //SEG1375 [673] call bitmap_line_ydxi - //SEG1376 [702] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1376 [674] call bitmap_line_ydxi + //SEG1377 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //SEG1377 [702] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG1378 [702] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG1379 [702] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG1380 [702] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG1381 [702] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG1378 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1379 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1380 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1381 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1382 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi jmp breturn - //SEG1382 bitmap_line::@13 + //SEG1383 bitmap_line::@13 b13: - //SEG1383 [674] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1384 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1384 [675] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1385 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_xdyi.y - //SEG1385 [676] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1386 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1386 [677] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 + //SEG1387 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 -- vbuz1=vbuz2 lda xd sta bitmap_line_xdyi.xd - //SEG1387 [678] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 + //SEG1388 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 -- vbuz1=vbuz2 lda yd_10 sta bitmap_line_xdyi.yd - //SEG1388 [679] call bitmap_line_xdyi - //SEG1389 [680] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1389 [680] call bitmap_line_xdyi + //SEG1390 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //SEG1390 [680] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG1391 [680] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG1392 [680] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG1393 [680] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG1394 [680] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG1391 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1392 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1393 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1394 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1395 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi jmp breturn } -//SEG1395 bitmap_line_xdyi +//SEG1396 bitmap_line_xdyi bitmap_line_xdyi: { - .label _6 = $142 + .label _6 = $143 .label x = $64 .label y = $65 .label x1 = $63 .label xd = $62 .label yd = $61 .label e = $66 - //SEG1396 [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1397 [682] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG1397 [682] phi from bitmap_line_xdyi bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] + //SEG1398 [683] phi from bitmap_line_xdyi bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] b1_from_bitmap_line_xdyi: b1_from_b2: - //SEG1398 [682] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#0 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy - //SEG1399 [682] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#5 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy - //SEG1400 [682] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#6 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy + //SEG1399 [683] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#0 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy + //SEG1400 [683] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#5 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy + //SEG1401 [683] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#6 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy jmp b1 - //SEG1401 bitmap_line_xdyi::@1 + //SEG1402 bitmap_line_xdyi::@1 b1: - //SEG1402 [683] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 + //SEG1403 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1403 [684] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 + //SEG1404 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1404 [685] call bitmap_plot - //SEG1405 [695] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1405 [686] call bitmap_plot + //SEG1406 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1406 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG1407 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG1407 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1408 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1408 bitmap_line_xdyi::@5 + //SEG1409 bitmap_line_xdyi::@5 b5: - //SEG1409 [686] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1410 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1410 [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1411 [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG1411 [688] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1412 [689] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG1412 bitmap_line_xdyi::@3 + //SEG1413 bitmap_line_xdyi::@3 b3: - //SEG1413 [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1414 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1414 [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1415 [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG1415 [691] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2] + //SEG1416 [692] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2] b2_from_b3: b2_from_b5: - //SEG1416 [691] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#0] -- register_copy - //SEG1417 [691] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#1] -- register_copy + //SEG1417 [692] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#0] -- register_copy + //SEG1418 [692] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#1] -- register_copy jmp b2 - //SEG1418 bitmap_line_xdyi::@2 + //SEG1419 bitmap_line_xdyi::@2 b2: - //SEG1419 [692] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG1420 [693] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy x1 iny sty _6 - //SEG1420 [693] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuz2_then_la1 + //SEG1421 [694] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuz2_then_la1 lda x cmp _6 bne b1_from_b2 jmp breturn - //SEG1421 bitmap_line_xdyi::@return + //SEG1422 bitmap_line_xdyi::@return breturn: - //SEG1422 [694] return + //SEG1423 [695] return rts } -//SEG1423 bitmap_plot +//SEG1424 bitmap_plot bitmap_plot: { - .label _0 = $147 - .label _1 = $149 - .label plotter_x = $143 - .label plotter_y = $145 + .label _0 = $148 + .label _1 = $14a + .label plotter_x = $144 + .label plotter_y = $146 .label x = $67 .label y = $68 - //SEG1424 [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + //SEG1425 [697] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy x lda bitmap_plot_xhi,y sta plotter_x+1 lda bitmap_plot_xlo,y sta plotter_x - //SEG1425 [697] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + //SEG1426 [698] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy y lda bitmap_plot_yhi,y sta plotter_y+1 lda bitmap_plot_ylo,y sta plotter_y - //SEG1426 [698] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG1427 [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz2_plus_vwuz3 lda plotter_x clc adc plotter_y @@ -17510,452 +18400,452 @@ bitmap_plot: { lda plotter_x+1 adc plotter_y+1 sta _0+1 - //SEG1427 [699] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 + //SEG1428 [700] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 ldy #0 lda (_0),y ldy x ora bitmap_plot_bit,y sta _1 - //SEG1428 [700] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 + //SEG1429 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 lda _1 ldy #0 sta (_0),y jmp breturn - //SEG1429 bitmap_plot::@return + //SEG1430 bitmap_plot::@return breturn: - //SEG1430 [701] return + //SEG1431 [702] return rts } -//SEG1431 bitmap_line_ydxi +//SEG1432 bitmap_line_ydxi bitmap_line_ydxi: { - .label _6 = $14a + .label _6 = $14b .label y = $6d .label x = $6c .label y1 = $6b .label yd = $6a .label xd = $69 .label e = $6e - //SEG1432 [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1433 [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG1433 [704] phi from bitmap_line_ydxi bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] + //SEG1434 [705] phi from bitmap_line_ydxi bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] b1_from_bitmap_line_ydxi: b1_from_b2: - //SEG1434 [704] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy - //SEG1435 [704] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#6 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy - //SEG1436 [704] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#5 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy + //SEG1435 [705] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy + //SEG1436 [705] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#6 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy + //SEG1437 [705] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#5 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy jmp b1 - //SEG1437 bitmap_line_ydxi::@1 + //SEG1438 bitmap_line_ydxi::@1 b1: - //SEG1438 [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 + //SEG1439 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1439 [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 + //SEG1440 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1440 [707] call bitmap_plot - //SEG1441 [695] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1441 [708] call bitmap_plot + //SEG1442 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1442 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG1443 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG1443 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1444 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1444 bitmap_line_ydxi::@5 + //SEG1445 bitmap_line_ydxi::@5 b5: - //SEG1445 [708] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1446 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1446 [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1447 [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG1447 [710] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1448 [711] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2_from_b5 jmp b3 - //SEG1448 bitmap_line_ydxi::@3 + //SEG1449 bitmap_line_ydxi::@3 b3: - //SEG1449 [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1450 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1450 [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1451 [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG1451 [713] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2] + //SEG1452 [714] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2] b2_from_b3: b2_from_b5: - //SEG1452 [713] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#0] -- register_copy - //SEG1453 [713] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#1] -- register_copy + //SEG1453 [714] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#0] -- register_copy + //SEG1454 [714] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#1] -- register_copy jmp b2 - //SEG1454 bitmap_line_ydxi::@2 + //SEG1455 bitmap_line_ydxi::@2 b2: - //SEG1455 [714] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG1456 [715] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy y1 iny sty _6 - //SEG1456 [715] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuz2_then_la1 + //SEG1457 [716] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuz2_then_la1 lda y cmp _6 bne b1_from_b2 jmp breturn - //SEG1457 bitmap_line_ydxi::@return + //SEG1458 bitmap_line_ydxi::@return breturn: - //SEG1458 [716] return + //SEG1459 [717] return rts } -//SEG1459 bitmap_line_xdyd +//SEG1460 bitmap_line_xdyd bitmap_line_xdyd: { - .label _6 = $14b + .label _6 = $14c .label x = $72 .label y = $73 .label x1 = $71 .label xd = $70 .label yd = $6f .label e = $74 - //SEG1460 [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1461 [719] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG1461 [719] phi from bitmap_line_xdyd bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] + //SEG1462 [720] phi from bitmap_line_xdyd bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] b1_from_bitmap_line_xdyd: b1_from_b2: - //SEG1462 [719] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#0 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy - //SEG1463 [719] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#5 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy - //SEG1464 [719] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#6 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy + //SEG1463 [720] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#0 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy + //SEG1464 [720] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#5 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy + //SEG1465 [720] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#6 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy jmp b1 - //SEG1465 bitmap_line_xdyd::@1 + //SEG1466 bitmap_line_xdyd::@1 b1: - //SEG1466 [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 + //SEG1467 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1467 [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 + //SEG1468 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1468 [722] call bitmap_plot - //SEG1469 [695] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1469 [723] call bitmap_plot + //SEG1470 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1470 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG1471 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG1471 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1472 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1472 bitmap_line_xdyd::@5 + //SEG1473 bitmap_line_xdyd::@5 b5: - //SEG1473 [723] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1474 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1474 [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1475 [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG1475 [725] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1476 [726] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG1476 bitmap_line_xdyd::@3 + //SEG1477 bitmap_line_xdyd::@3 b3: - //SEG1477 [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1478 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1478 [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1479 [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG1479 [728] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2] + //SEG1480 [729] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2] b2_from_b3: b2_from_b5: - //SEG1480 [728] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#0] -- register_copy - //SEG1481 [728] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#1] -- register_copy + //SEG1481 [729] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#0] -- register_copy + //SEG1482 [729] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#1] -- register_copy jmp b2 - //SEG1482 bitmap_line_xdyd::@2 + //SEG1483 bitmap_line_xdyd::@2 b2: - //SEG1483 [729] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG1484 [730] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy x1 iny sty _6 - //SEG1484 [730] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuz2_then_la1 + //SEG1485 [731] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuz2_then_la1 lda x cmp _6 bne b1_from_b2 jmp breturn - //SEG1485 bitmap_line_xdyd::@return + //SEG1486 bitmap_line_xdyd::@return breturn: - //SEG1486 [731] return + //SEG1487 [732] return rts } -//SEG1487 bitmap_line_ydxd +//SEG1488 bitmap_line_ydxd bitmap_line_ydxd: { - .label _6 = $14c + .label _6 = $14d .label y = $79 .label x = $78 .label y1 = $77 .label yd = $76 .label xd = $75 .label e = $7a - //SEG1488 [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1489 [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG1489 [734] phi from bitmap_line_ydxd bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] + //SEG1490 [735] phi from bitmap_line_ydxd bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] b1_from_bitmap_line_ydxd: b1_from_b2: - //SEG1490 [734] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy - //SEG1491 [734] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#7 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy - //SEG1492 [734] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#5 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy + //SEG1491 [735] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy + //SEG1492 [735] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#7 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy + //SEG1493 [735] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#5 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy jmp b1 - //SEG1493 bitmap_line_ydxd::@1 + //SEG1494 bitmap_line_ydxd::@1 b1: - //SEG1494 [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 + //SEG1495 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 lda x sta bitmap_plot.x - //SEG1495 [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 + //SEG1496 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 lda y sta bitmap_plot.y - //SEG1496 [737] call bitmap_plot - //SEG1497 [695] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1497 [738] call bitmap_plot + //SEG1498 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1498 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG1499 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG1499 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1500 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1500 bitmap_line_ydxd::@5 + //SEG1501 bitmap_line_ydxd::@5 b5: - //SEG1501 [738] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1502 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1502 [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1503 [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG1503 [740] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1504 [741] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2_from_b5 jmp b3 - //SEG1504 bitmap_line_ydxd::@3 + //SEG1505 bitmap_line_ydxd::@3 b3: - //SEG1505 [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 + //SEG1506 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec x - //SEG1506 [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1507 [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG1507 [743] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2] + //SEG1508 [744] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2] b2_from_b3: b2_from_b5: - //SEG1508 [743] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#0] -- register_copy - //SEG1509 [743] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#1] -- register_copy + //SEG1509 [744] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#0] -- register_copy + //SEG1510 [744] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#1] -- register_copy jmp b2 - //SEG1510 bitmap_line_ydxd::@2 + //SEG1511 bitmap_line_ydxd::@2 b2: - //SEG1511 [744] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG1512 [745] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy y1 iny sty _6 - //SEG1512 [745] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuz2_then_la1 + //SEG1513 [746] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuz2_then_la1 lda y cmp _6 bne b1_from_b2 jmp breturn - //SEG1513 bitmap_line_ydxd::@return + //SEG1514 bitmap_line_ydxd::@return breturn: - //SEG1514 [746] return + //SEG1515 [747] return rts } -//SEG1515 bitmap_clear +//SEG1516 bitmap_clear bitmap_clear: { .label bitmap = $7c .label x = $7e .label y = $7b - .label _3 = $14d - //SEG1516 [747] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + .label _3 = $14e + //SEG1517 [748] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta _3 lda bitmap_plot_xhi sta _3+1 - //SEG1517 [748] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG1518 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG1518 [749] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1519 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG1519 [749] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG1520 [750] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1520 [749] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG1521 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1521 [749] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1522 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG1522 [749] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG1523 [749] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG1523 [750] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1524 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1524 bitmap_clear::@1 + //SEG1525 bitmap_clear::@1 b1: - //SEG1525 [750] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1526 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG1526 [750] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 + //SEG1527 [751] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG1527 [750] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG1528 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1528 [750] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1529 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG1529 [750] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG1530 [750] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG1530 [751] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1531 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1531 bitmap_clear::@2 + //SEG1532 bitmap_clear::@2 b2: - //SEG1532 [751] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1533 [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG1533 [752] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1534 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1534 [753] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG1535 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG1535 [754] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1536 [755] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$c8 bne b2_from_b2 jmp b3 - //SEG1536 bitmap_clear::@3 + //SEG1537 bitmap_clear::@3 b3: - //SEG1537 [755] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1538 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG1538 [756] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1539 [757] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG1539 bitmap_clear::@return + //SEG1540 bitmap_clear::@return breturn: - //SEG1540 [757] return + //SEG1541 [758] return rts } -//SEG1541 bitmap_init +//SEG1542 bitmap_init bitmap_init: { - .label _0 = $14f - .label _6 = $150 - .label _7 = $151 - .label _8 = $152 - .label _9 = $153 - .label _10 = $154 + .label _0 = $150 + .label _6 = $151 + .label _7 = $152 + .label _8 = $153 + .label _9 = $154 + .label _10 = $155 .label bits = $80 .label x = $7f .label y = $81 .label yoffs = $82 - //SEG1542 [759] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1543 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG1543 [759] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG1544 [760] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #$80 sta bits - //SEG1544 [759] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + //SEG1545 [760] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG1545 [759] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1546 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG1546 [759] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG1547 [759] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG1547 [760] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1548 [760] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG1548 bitmap_init::@1 + //SEG1549 bitmap_init::@1 b1: - //SEG1549 [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 + //SEG1550 [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuz1=vbuz2_band_vbuc1 lda #$f8 and x sta _0 - //SEG1550 [761] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1551 [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldy x sta bitmap_plot_xlo,y - //SEG1551 [762] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG1552 [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy x lda #>VIC_BITMAP sta bitmap_plot_xhi,y - //SEG1552 [763] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1553 [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta bitmap_plot_bit,y - //SEG1553 [764] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG1554 [765] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG1554 [765] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 + //SEG1555 [766] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b10_from_b1 - //SEG1555 [766] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1556 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG1556 [766] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG1557 [767] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG1557 bitmap_init::@2 + //SEG1558 bitmap_init::@2 b2: - //SEG1558 [767] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG1559 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG1559 [768] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + //SEG1560 [769] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG1560 [769] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1561 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG1561 [769] phi (byte*) bitmap_init::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG1562 [770] phi (byte*) bitmap_init::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG1562 [769] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + //SEG1563 [770] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG1563 [769] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1564 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG1564 [769] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG1565 [769] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG1565 [770] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1566 [770] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG1566 bitmap_init::@3 + //SEG1567 bitmap_init::@3 b3: - //SEG1567 [770] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG1568 [771] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _6 - //SEG1568 [771] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG1569 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG1569 [772] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1570 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG1570 [773] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1571 [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuz1=vbuz2 lda _8 ldy y sta bitmap_plot_ylo,y - //SEG1571 [774] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG1572 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG1572 [775] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG1573 [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuz1=vbuz2 lda _9 ldy y sta bitmap_plot_yhi,y - //SEG1573 [776] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG1574 [777] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _10 - //SEG1574 [777] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG1575 [778] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 - //SEG1575 bitmap_init::@7 + //SEG1576 bitmap_init::@7 b7: - //SEG1576 [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG1577 [779] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -17963,559 +18853,559 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG1577 [779] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG1578 [780] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG1578 [779] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG1579 [780] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG1579 bitmap_init::@4 + //SEG1580 bitmap_init::@4 b4: - //SEG1580 [780] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG1581 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1581 [781] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + //SEG1582 [782] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG1582 bitmap_init::@return + //SEG1583 bitmap_init::@return breturn: - //SEG1583 [782] return + //SEG1584 [783] return rts - //SEG1584 [783] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1585 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG1585 bitmap_init::@10 + //SEG1586 bitmap_init::@10 b10: - //SEG1586 [766] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1587 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG1587 [766] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1588 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG1588 gfx_init_charset +//SEG1589 gfx_init_charset gfx_init_charset: { .label charset = $87 .label chargen = $85 .label l = $89 .label c = $84 - //SEG1589 [784] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG1590 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG1590 [785] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] + //SEG1591 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] b1_from_gfx_init_charset: - //SEG1591 [785] phi (byte) gfx_init_charset::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset->gfx_init_charset::@1#0] -- vbuz1=vbuc1 + //SEG1592 [786] phi (byte) gfx_init_charset::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset->gfx_init_charset::@1#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG1592 [785] phi (byte*) gfx_init_charset::charset#3 = (const byte*) VIC_CHARSET_ROM#0 [phi:gfx_init_charset->gfx_init_charset::@1#1] -- pbuz1=pbuc1 + //SEG1593 [786] phi (byte*) gfx_init_charset::charset#3 = (const byte*) VIC_CHARSET_ROM#0 [phi:gfx_init_charset->gfx_init_charset::@1#1] -- pbuz1=pbuc1 lda #VIC_CHARSET_ROM sta charset+1 - //SEG1593 [785] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 + //SEG1594 [786] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG1594 [785] phi from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] + //SEG1595 [786] phi from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] b1_from_b3: - //SEG1595 [785] phi (byte) gfx_init_charset::c#4 = (byte) gfx_init_charset::c#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#0] -- register_copy - //SEG1596 [785] phi (byte*) gfx_init_charset::charset#3 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#1] -- register_copy - //SEG1597 [785] phi (byte*) gfx_init_charset::chargen#3 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#2] -- register_copy + //SEG1596 [786] phi (byte) gfx_init_charset::c#4 = (byte) gfx_init_charset::c#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#0] -- register_copy + //SEG1597 [786] phi (byte*) gfx_init_charset::charset#3 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#1] -- register_copy + //SEG1598 [786] phi (byte*) gfx_init_charset::chargen#3 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#2] -- register_copy jmp b1 - //SEG1598 gfx_init_charset::@1 + //SEG1599 gfx_init_charset::@1 b1: - //SEG1599 [786] phi from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] + //SEG1600 [787] phi from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] b2_from_b1: - //SEG1600 [786] phi (byte) gfx_init_charset::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset::@1->gfx_init_charset::@2#0] -- vbuz1=vbuc1 + //SEG1601 [787] phi (byte) gfx_init_charset::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset::@1->gfx_init_charset::@2#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG1601 [786] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#1] -- register_copy - //SEG1602 [786] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#2] -- register_copy + //SEG1602 [787] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#1] -- register_copy + //SEG1603 [787] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#2] -- register_copy jmp b2 - //SEG1603 [786] phi from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] + //SEG1604 [787] phi from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] b2_from_b2: - //SEG1604 [786] phi (byte) gfx_init_charset::l#2 = (byte) gfx_init_charset::l#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#0] -- register_copy - //SEG1605 [786] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#1] -- register_copy - //SEG1606 [786] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#2] -- register_copy + //SEG1605 [787] phi (byte) gfx_init_charset::l#2 = (byte) gfx_init_charset::l#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#0] -- register_copy + //SEG1606 [787] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#1] -- register_copy + //SEG1607 [787] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#2] -- register_copy jmp b2 - //SEG1607 gfx_init_charset::@2 + //SEG1608 gfx_init_charset::@2 b2: - //SEG1608 [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1609 [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargen),y ldy #0 sta (charset),y - //SEG1609 [788] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 + //SEG1610 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 inc charset bne !+ inc charset+1 !: - //SEG1610 [789] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1611 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1611 [790] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuz1=_inc_vbuz1 + //SEG1612 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG1612 [791] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1613 [792] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #8 bne b2_from_b2 jmp b3 - //SEG1613 gfx_init_charset::@3 + //SEG1614 gfx_init_charset::@3 b3: - //SEG1614 [792] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 + //SEG1615 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 inc c - //SEG1615 [793] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 -- vbuz1_neq_0_then_la1 + //SEG1616 [794] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b1_from_b3 jmp b4 - //SEG1616 gfx_init_charset::@4 + //SEG1617 gfx_init_charset::@4 b4: - //SEG1617 [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG1618 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT jmp breturn - //SEG1618 gfx_init_charset::@return + //SEG1619 gfx_init_charset::@return breturn: - //SEG1619 [795] return + //SEG1620 [796] return rts } -//SEG1620 gfx_init_screen4 +//SEG1621 gfx_init_screen4 gfx_init_screen4: { .label ch = $8b .label cx = $8d .label cy = $8a - //SEG1621 [797] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] + //SEG1622 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] b1_from_gfx_init_screen4: - //SEG1622 [797] phi (byte) gfx_init_screen4::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4->gfx_init_screen4::@1#0] -- vbuz1=vbuc1 + //SEG1623 [798] phi (byte) gfx_init_screen4::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4->gfx_init_screen4::@1#0] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1623 [797] phi (byte*) gfx_init_screen4::ch#3 = (const byte*) VIC_SCREEN4#0 [phi:gfx_init_screen4->gfx_init_screen4::@1#1] -- pbuz1=pbuc1 + //SEG1624 [798] phi (byte*) gfx_init_screen4::ch#3 = (const byte*) VIC_SCREEN4#0 [phi:gfx_init_screen4->gfx_init_screen4::@1#1] -- pbuz1=pbuc1 lda #VIC_SCREEN4 sta ch+1 jmp b1 - //SEG1624 [797] phi from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] + //SEG1625 [798] phi from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] b1_from_b3: - //SEG1625 [797] phi (byte) gfx_init_screen4::cy#4 = (byte) gfx_init_screen4::cy#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#0] -- register_copy - //SEG1626 [797] phi (byte*) gfx_init_screen4::ch#3 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#1] -- register_copy + //SEG1626 [798] phi (byte) gfx_init_screen4::cy#4 = (byte) gfx_init_screen4::cy#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#0] -- register_copy + //SEG1627 [798] phi (byte*) gfx_init_screen4::ch#3 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#1] -- register_copy jmp b1 - //SEG1627 gfx_init_screen4::@1 + //SEG1628 gfx_init_screen4::@1 b1: - //SEG1628 [798] phi from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] + //SEG1629 [799] phi from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] b2_from_b1: - //SEG1629 [798] phi (byte) gfx_init_screen4::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#0] -- vbuz1=vbuc1 + //SEG1630 [799] phi (byte) gfx_init_screen4::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#0] -- vbuz1=vbuc1 lda #0 sta cx - //SEG1630 [798] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#3 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#1] -- register_copy + //SEG1631 [799] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#3 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#1] -- register_copy jmp b2 - //SEG1631 [798] phi from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] + //SEG1632 [799] phi from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] b2_from_b2: - //SEG1632 [798] phi (byte) gfx_init_screen4::cx#2 = (byte) gfx_init_screen4::cx#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#0] -- register_copy - //SEG1633 [798] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#1] -- register_copy + //SEG1633 [799] phi (byte) gfx_init_screen4::cx#2 = (byte) gfx_init_screen4::cx#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#0] -- register_copy + //SEG1634 [799] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#1] -- register_copy jmp b2 - //SEG1634 gfx_init_screen4::@2 + //SEG1635 gfx_init_screen4::@2 b2: - //SEG1635 [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1636 [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (ch),y - //SEG1636 [800] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1637 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1637 [801] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1638 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1638 [802] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1639 [803] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b2_from_b2 jmp b3 - //SEG1639 gfx_init_screen4::@3 + //SEG1640 gfx_init_screen4::@3 b3: - //SEG1640 [803] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1641 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1641 [804] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1642 [805] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1642 gfx_init_screen4::@return + //SEG1643 gfx_init_screen4::@return breturn: - //SEG1643 [805] return + //SEG1644 [806] return rts } -//SEG1644 gfx_init_screen3 +//SEG1645 gfx_init_screen3 gfx_init_screen3: { - .label _0 = $155 - .label _1 = $156 - .label _2 = $157 - .label _3 = $158 + .label _0 = $156 + .label _1 = $157 + .label _2 = $158 + .label _3 = $159 .label ch = $90 .label cx = $8f .label cy = $8e - //SEG1645 [807] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] + //SEG1646 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] b1_from_gfx_init_screen3: - //SEG1646 [807] phi (byte*) gfx_init_screen3::ch#3 = (const byte*) VIC_SCREEN3#0 [phi:gfx_init_screen3->gfx_init_screen3::@1#0] -- pbuz1=pbuc1 + //SEG1647 [808] phi (byte*) gfx_init_screen3::ch#3 = (const byte*) VIC_SCREEN3#0 [phi:gfx_init_screen3->gfx_init_screen3::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN3 sta ch+1 - //SEG1647 [807] phi (byte) gfx_init_screen3::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3->gfx_init_screen3::@1#1] -- vbuz1=vbuc1 + //SEG1648 [808] phi (byte) gfx_init_screen3::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3->gfx_init_screen3::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1648 [807] phi from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] + //SEG1649 [808] phi from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] b1_from_b3: - //SEG1649 [807] phi (byte*) gfx_init_screen3::ch#3 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#0] -- register_copy - //SEG1650 [807] phi (byte) gfx_init_screen3::cy#4 = (byte) gfx_init_screen3::cy#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#1] -- register_copy + //SEG1650 [808] phi (byte*) gfx_init_screen3::ch#3 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#0] -- register_copy + //SEG1651 [808] phi (byte) gfx_init_screen3::cy#4 = (byte) gfx_init_screen3::cy#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#1] -- register_copy jmp b1 - //SEG1651 gfx_init_screen3::@1 + //SEG1652 gfx_init_screen3::@1 b1: - //SEG1652 [808] phi from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] + //SEG1653 [809] phi from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] b2_from_b1: - //SEG1653 [808] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#3 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#0] -- register_copy - //SEG1654 [808] phi (byte) gfx_init_screen3::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#1] -- vbuz1=vbuc1 + //SEG1654 [809] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#3 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#0] -- register_copy + //SEG1655 [809] phi (byte) gfx_init_screen3::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b2 - //SEG1655 [808] phi from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] + //SEG1656 [809] phi from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] b2_from_b2: - //SEG1656 [808] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#0] -- register_copy - //SEG1657 [808] phi (byte) gfx_init_screen3::cx#2 = (byte) gfx_init_screen3::cx#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#1] -- register_copy + //SEG1657 [809] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#0] -- register_copy + //SEG1658 [809] phi (byte) gfx_init_screen3::cx#2 = (byte) gfx_init_screen3::cx#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#1] -- register_copy jmp b2 - //SEG1658 gfx_init_screen3::@2 + //SEG1659 gfx_init_screen3::@2 b2: - //SEG1659 [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 + //SEG1660 [810] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and cx sta _0 - //SEG1660 [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1661 [811] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _0 asl asl asl asl sta _1 - //SEG1661 [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 + //SEG1662 [812] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_band_vbuc1 lda #3 and cy sta _2 - //SEG1662 [812] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1663 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuz1=vbuz2_bor_vbuz3 lda _1 ora _2 sta _3 - //SEG1663 [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuz2 + //SEG1664 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuz2 lda _3 ldy #0 sta (ch),y - //SEG1664 [814] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1665 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1665 [815] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1666 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1666 [816] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1667 [817] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b2_from_b2 jmp b3 - //SEG1667 gfx_init_screen3::@3 + //SEG1668 gfx_init_screen3::@3 b3: - //SEG1668 [817] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1669 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1669 [818] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1670 [819] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1670 gfx_init_screen3::@return + //SEG1671 gfx_init_screen3::@return breturn: - //SEG1671 [819] return + //SEG1672 [820] return rts } -//SEG1672 gfx_init_screen2 +//SEG1673 gfx_init_screen2 gfx_init_screen2: { - .label _0 = $159 - .label _3 = $15c - .label _4 = $15d - .label col = $15a - .label col2 = $15b + .label _0 = $15a + .label _3 = $15d + .label _4 = $15e + .label col = $15b + .label col2 = $15c .label ch = $94 .label cx = $93 .label cy = $92 - //SEG1673 [821] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] + //SEG1674 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] b1_from_gfx_init_screen2: - //SEG1674 [821] phi (byte*) gfx_init_screen2::ch#3 = (const byte*) VIC_SCREEN2#0 [phi:gfx_init_screen2->gfx_init_screen2::@1#0] -- pbuz1=pbuc1 + //SEG1675 [822] phi (byte*) gfx_init_screen2::ch#3 = (const byte*) VIC_SCREEN2#0 [phi:gfx_init_screen2->gfx_init_screen2::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN2 sta ch+1 - //SEG1675 [821] phi (byte) gfx_init_screen2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2->gfx_init_screen2::@1#1] -- vbuz1=vbuc1 + //SEG1676 [822] phi (byte) gfx_init_screen2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2->gfx_init_screen2::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1676 [821] phi from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] + //SEG1677 [822] phi from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] b1_from_b3: - //SEG1677 [821] phi (byte*) gfx_init_screen2::ch#3 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#0] -- register_copy - //SEG1678 [821] phi (byte) gfx_init_screen2::cy#4 = (byte) gfx_init_screen2::cy#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#1] -- register_copy + //SEG1678 [822] phi (byte*) gfx_init_screen2::ch#3 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#0] -- register_copy + //SEG1679 [822] phi (byte) gfx_init_screen2::cy#4 = (byte) gfx_init_screen2::cy#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#1] -- register_copy jmp b1 - //SEG1679 gfx_init_screen2::@1 + //SEG1680 gfx_init_screen2::@1 b1: - //SEG1680 [822] phi from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] + //SEG1681 [823] phi from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] b2_from_b1: - //SEG1681 [822] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#3 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#0] -- register_copy - //SEG1682 [822] phi (byte) gfx_init_screen2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#1] -- vbuz1=vbuc1 + //SEG1682 [823] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#3 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#0] -- register_copy + //SEG1683 [823] phi (byte) gfx_init_screen2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b2 - //SEG1683 [822] phi from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] + //SEG1684 [823] phi from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] b2_from_b2: - //SEG1684 [822] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#0] -- register_copy - //SEG1685 [822] phi (byte) gfx_init_screen2::cx#2 = (byte) gfx_init_screen2::cx#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#1] -- register_copy + //SEG1685 [823] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#0] -- register_copy + //SEG1686 [823] phi (byte) gfx_init_screen2::cx#2 = (byte) gfx_init_screen2::cx#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#1] -- register_copy jmp b2 - //SEG1686 gfx_init_screen2::@2 + //SEG1687 gfx_init_screen2::@2 b2: - //SEG1687 [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1688 [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuz1=vbuz2_plus_vbuz3 lda cx clc adc cy sta _0 - //SEG1688 [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1689 [825] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and _0 sta col - //SEG1689 [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 -- vbuz1=vbuc1_minus_vbuz2 + //SEG1690 [826] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 -- vbuz1=vbuc1_minus_vbuz2 lda #$f sec sbc col sta col2 - //SEG1690 [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1691 [827] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda col asl asl asl asl sta _3 - //SEG1691 [827] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1692 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuz1=vbuz2_bor_vbuz3 lda _3 ora col2 sta _4 - //SEG1692 [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuz2 + //SEG1693 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuz2 lda _4 ldy #0 sta (ch),y - //SEG1693 [829] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1694 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1694 [830] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1695 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1695 [831] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1696 [832] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b2_from_b2 jmp b3 - //SEG1696 gfx_init_screen2::@3 + //SEG1697 gfx_init_screen2::@3 b3: - //SEG1697 [832] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1698 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1698 [833] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1699 [834] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1699 gfx_init_screen2::@return + //SEG1700 gfx_init_screen2::@return breturn: - //SEG1700 [834] return + //SEG1701 [835] return rts } -//SEG1701 gfx_init_screen1 +//SEG1702 gfx_init_screen1 gfx_init_screen1: { - .label _0 = $15e - .label _1 = $15f + .label _0 = $15f + .label _1 = $160 .label ch = $98 .label cx = $97 .label cy = $96 - //SEG1702 [836] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] + //SEG1703 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] b1_from_gfx_init_screen1: - //SEG1703 [836] phi (byte*) gfx_init_screen1::ch#3 = (const byte*) VIC_SCREEN1#0 [phi:gfx_init_screen1->gfx_init_screen1::@1#0] -- pbuz1=pbuc1 + //SEG1704 [837] phi (byte*) gfx_init_screen1::ch#3 = (const byte*) VIC_SCREEN1#0 [phi:gfx_init_screen1->gfx_init_screen1::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN1 sta ch+1 - //SEG1704 [836] phi (byte) gfx_init_screen1::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1->gfx_init_screen1::@1#1] -- vbuz1=vbuc1 + //SEG1705 [837] phi (byte) gfx_init_screen1::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1->gfx_init_screen1::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1705 [836] phi from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] + //SEG1706 [837] phi from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] b1_from_b3: - //SEG1706 [836] phi (byte*) gfx_init_screen1::ch#3 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#0] -- register_copy - //SEG1707 [836] phi (byte) gfx_init_screen1::cy#4 = (byte) gfx_init_screen1::cy#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#1] -- register_copy + //SEG1707 [837] phi (byte*) gfx_init_screen1::ch#3 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#0] -- register_copy + //SEG1708 [837] phi (byte) gfx_init_screen1::cy#4 = (byte) gfx_init_screen1::cy#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#1] -- register_copy jmp b1 - //SEG1708 gfx_init_screen1::@1 + //SEG1709 gfx_init_screen1::@1 b1: - //SEG1709 [837] phi from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] + //SEG1710 [838] phi from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] b2_from_b1: - //SEG1710 [837] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#3 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#0] -- register_copy - //SEG1711 [837] phi (byte) gfx_init_screen1::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#1] -- vbuz1=vbuc1 + //SEG1711 [838] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#3 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#0] -- register_copy + //SEG1712 [838] phi (byte) gfx_init_screen1::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b2 - //SEG1712 [837] phi from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] + //SEG1713 [838] phi from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] b2_from_b2: - //SEG1713 [837] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#0] -- register_copy - //SEG1714 [837] phi (byte) gfx_init_screen1::cx#2 = (byte) gfx_init_screen1::cx#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#1] -- register_copy + //SEG1714 [838] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#0] -- register_copy + //SEG1715 [838] phi (byte) gfx_init_screen1::cx#2 = (byte) gfx_init_screen1::cx#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#1] -- register_copy jmp b2 - //SEG1715 gfx_init_screen1::@2 + //SEG1716 gfx_init_screen1::@2 b2: - //SEG1716 [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuz1=vbuz2_plus_vbuz3 + //SEG1717 [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuz1=vbuz2_plus_vbuz3 lda cx clc adc cy sta _0 - //SEG1717 [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1718 [840] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and _0 sta _1 - //SEG1718 [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuz2 + //SEG1719 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuz2 lda _1 ldy #0 sta (ch),y - //SEG1719 [841] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1720 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1720 [842] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1721 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1721 [843] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1722 [844] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b2_from_b2 jmp b3 - //SEG1722 gfx_init_screen1::@3 + //SEG1723 gfx_init_screen1::@3 b3: - //SEG1723 [844] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1724 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1724 [845] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1725 [846] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1725 gfx_init_screen1::@return + //SEG1726 gfx_init_screen1::@return breturn: - //SEG1726 [846] return + //SEG1727 [847] return rts } -//SEG1727 gfx_init_screen0 +//SEG1728 gfx_init_screen0 gfx_init_screen0: { - .label _0 = $160 - .label _1 = $161 - .label _2 = $162 - .label _3 = $163 + .label _0 = $161 + .label _1 = $162 + .label _2 = $163 + .label _3 = $164 .label ch = $9c .label cx = $9b .label cy = $9a - //SEG1728 [848] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG1729 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] b1_from_gfx_init_screen0: - //SEG1729 [848] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) VIC_SCREEN0#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 + //SEG1730 [849] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) VIC_SCREEN0#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN0 sta ch+1 - //SEG1730 [848] phi (byte) gfx_init_screen0::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0->gfx_init_screen0::@1#1] -- vbuz1=vbuc1 + //SEG1731 [849] phi (byte) gfx_init_screen0::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0->gfx_init_screen0::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1731 [848] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] + //SEG1732 [849] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] b1_from_b3: - //SEG1732 [848] phi (byte*) gfx_init_screen0::ch#3 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#0] -- register_copy - //SEG1733 [848] phi (byte) gfx_init_screen0::cy#4 = (byte) gfx_init_screen0::cy#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#1] -- register_copy + //SEG1733 [849] phi (byte*) gfx_init_screen0::ch#3 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#0] -- register_copy + //SEG1734 [849] phi (byte) gfx_init_screen0::cy#4 = (byte) gfx_init_screen0::cy#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#1] -- register_copy jmp b1 - //SEG1734 gfx_init_screen0::@1 + //SEG1735 gfx_init_screen0::@1 b1: - //SEG1735 [849] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] + //SEG1736 [850] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] b2_from_b1: - //SEG1736 [849] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#3 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#0] -- register_copy - //SEG1737 [849] phi (byte) gfx_init_screen0::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#1] -- vbuz1=vbuc1 + //SEG1737 [850] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#3 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#0] -- register_copy + //SEG1738 [850] phi (byte) gfx_init_screen0::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#1] -- vbuz1=vbuc1 lda #0 sta cx jmp b2 - //SEG1738 [849] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] + //SEG1739 [850] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] b2_from_b2: - //SEG1739 [849] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#0] -- register_copy - //SEG1740 [849] phi (byte) gfx_init_screen0::cx#2 = (byte) gfx_init_screen0::cx#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#1] -- register_copy + //SEG1740 [850] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#0] -- register_copy + //SEG1741 [850] phi (byte) gfx_init_screen0::cx#2 = (byte) gfx_init_screen0::cx#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#1] -- register_copy jmp b2 - //SEG1741 gfx_init_screen0::@2 + //SEG1742 gfx_init_screen0::@2 b2: - //SEG1742 [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1743 [851] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cy sta _0 - //SEG1743 [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 + //SEG1744 [852] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_rol_4 lda _0 asl asl asl asl sta _1 - //SEG1744 [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG1745 [853] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and cx sta _2 - //SEG1745 [853] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuz1=vbuz2_bor_vbuz3 + //SEG1746 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuz1=vbuz2_bor_vbuz3 lda _1 ora _2 sta _3 - //SEG1746 [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuz2 + //SEG1747 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuz2 lda _3 ldy #0 sta (ch),y - //SEG1747 [855] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1748 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1748 [856] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuz1=_inc_vbuz1 + //SEG1749 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuz1=_inc_vbuz1 inc cx - //SEG1749 [857] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1750 [858] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 -- vbuz1_neq_vbuc1_then_la1 lda cx cmp #$28 bne b2_from_b2 jmp b3 - //SEG1750 gfx_init_screen0::@3 + //SEG1751 gfx_init_screen0::@3 b3: - //SEG1751 [858] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1752 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1752 [859] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1753 [860] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1753 gfx_init_screen0::@return + //SEG1754 gfx_init_screen0::@return breturn: - //SEG1754 [860] return + //SEG1755 [861] return rts } -//SEG1755 keyboard_init +//SEG1756 keyboard_init keyboard_init: { - //SEG1756 [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG1757 [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta CIA1_PORT_A_DDR - //SEG1757 [862] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1758 [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta CIA1_PORT_B_DDR jmp breturn - //SEG1758 keyboard_init::@return + //SEG1759 keyboard_init::@return breturn: - //SEG1759 [863] return + //SEG1760 [864] return rts } DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a @@ -18550,7 +19440,7 @@ keyboard_init: { FORM_COLS: .text "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm @"+" nnnnnnnnnnnn jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+"@" REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:337 [ bitmap_init::$7 ] has ALU potential. +Equivalence Class zp ZP_BYTE:338 [ bitmap_init::$7 ] has ALU potential. Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -18729,86 +19619,87 @@ Statement [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ Statement [442] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::form_mode:13::print_cls:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::form_mode:13::print_cls:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y Statement [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::form_mode:13::print_cls:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::form_mode:13::print_cls:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) always clobbers reg byte a Statement [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::form_mode:13::print_cls:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::form_mode:13::print_cls:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) always clobbers reg byte a -Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ) always clobbers reg byte a +Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] -Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ) always clobbers reg byte a -Statement [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ) always clobbers reg byte a -Statement [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ) always clobbers reg byte a -Statement [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ) always clobbers reg byte a -Statement [491] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ) always clobbers reg byte a -Statement [492] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ) always clobbers reg byte a -Statement [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ) always clobbers reg byte a +Statement [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ) always clobbers reg byte a +Statement [490] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ) always clobbers reg byte a +Statement [491] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ) always clobbers reg byte a +Statement [492] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ) always clobbers reg byte a +Statement [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ) always clobbers reg byte a +Statement [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:66 [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] -Statement [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ) always clobbers reg byte a +Statement [519] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Statement [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ) always clobbers reg byte a -Statement [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [520] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ) always clobbers reg byte a +Statement [521] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Statement [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:75 [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] -Statement [546] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ) always clobbers reg byte a +Statement [547] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] -Statement [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] -Statement [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [562] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a +Statement [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Statement [568] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ) always clobbers reg byte a +Statement [569] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Statement [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y +Statement [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Statement [582] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ) always clobbers reg byte a -Statement [594] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ) always clobbers reg byte a -Statement [595] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ) always clobbers reg byte a -Statement [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ) always clobbers reg byte y +Statement [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a +Statement [590] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ) always clobbers reg byte a +Statement [595] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ) always clobbers reg byte a +Statement [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ) always clobbers reg byte a +Statement [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] -Statement [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ) always clobbers reg byte a -Statement [619] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a +Statement [600] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ) always clobbers reg byte a +Statement [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:312 [ bitmap_line::x0#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:313 [ bitmap_line::x1#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:314 [ bitmap_line::y0#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:315 [ bitmap_line::y1#0 ] -Statement [621] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:316 [ bitmap_line::xd#1 ] -Statement [636] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ) always clobbers reg byte a -Statement [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ) always clobbers reg byte a -Statement [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:319 [ bitmap_line::xd#0 ] -Statement [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ) always clobbers reg byte a -Statement [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:313 [ bitmap_line::x0#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:314 [ bitmap_line::x1#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:315 [ bitmap_line::y0#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:316 [ bitmap_line::y1#0 ] +Statement [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:317 [ bitmap_line::xd#1 ] +Statement [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ) always clobbers reg byte a +Statement [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ) always clobbers reg byte a +Statement [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:320 [ bitmap_line::xd#0 ] +Statement [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ) always clobbers reg byte a +Statement [682] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] -Statement [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a +Statement [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a +Statement [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a +Statement [697] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] @@ -18830,9 +19721,9 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:119 [ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [697] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [698] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] ) always clobbers reg byte a -Statement [699] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::$0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y +Statement [698] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a +Statement [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] ) always clobbers reg byte a +Statement [700] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::$0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] @@ -18858,82 +19749,82 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:119 [ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Statement [700] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [747] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) [ bitmap_clear::$3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [748] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [751] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y +Statement [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a +Statement [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a +Statement [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a +Statement [719] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a +Statement [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a +Statement [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a +Statement [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a +Statement [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a +Statement [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a +Statement [748] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) [ bitmap_clear::$3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:609 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:609 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:609 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a +Statement [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:127 [ bitmap_init::x#2 bitmap_init::x#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] -Statement [762] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [763] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [770] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) always clobbers reg byte a +Statement [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [771] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [776] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a -Statement [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [784] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ) always clobbers reg byte a reg byte y +Statement [777] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a +Statement [779] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a +Statement [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:137 [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:137 [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] -Statement [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ) always clobbers reg byte a reg byte y +Statement [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a +Statement [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:141 [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:141 [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] -Statement [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ) always clobbers reg byte a +Statement [810] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Statement [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a -Statement [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:342 [ gfx_init_screen3::$1 ] -Statement [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y +Statement [811] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a +Statement [812] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] +Statement [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Statement [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a +Statement [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Statement [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ) always clobbers reg byte a -Statement [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:346 [ gfx_init_screen2::col#0 ] -Statement [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] -Statement [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ) always clobbers reg byte y +Statement [825] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ) always clobbers reg byte a +Statement [826] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] +Statement [827] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] +Statement [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Statement [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ) always clobbers reg byte a +Statement [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] -Statement [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ) always clobbers reg byte a -Statement [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y +Statement [840] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ) always clobbers reg byte a +Statement [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] -Statement [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a +Statement [851] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Statement [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a -Statement [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:353 [ gfx_init_screen0::$1 ] -Statement [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y +Statement [852] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a +Statement [853] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] +Statement [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Statement [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [862] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a +Statement [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a +Statement [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -19080,86 +19971,86 @@ Statement [440] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ Statement [442] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::form_mode:13::print_cls:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::form_mode:13::print_cls:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y Statement [444] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::form_mode:13::print_cls:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::form_mode:13::print_cls:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) always clobbers reg byte a Statement [445] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::form_mode:13::print_cls:257 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::form_mode:13::print_cls:263 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) always clobbers reg byte a -Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ) always clobbers reg byte a -Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ) always clobbers reg byte a -Statement [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ) always clobbers reg byte a -Statement [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ) always clobbers reg byte a -Statement [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ) always clobbers reg byte a -Statement [491] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ) always clobbers reg byte a -Statement [492] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ) always clobbers reg byte a -Statement [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:509 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:512 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [484] (dword~) gfx_init_plane_fill::$0 ← (dword) gfx_init_plane_fill::plane_addr#3 << (byte/signed byte/word/signed word/dword/signed dword) 2 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$0 ] ) always clobbers reg byte a +Statement [485] (word~) gfx_init_plane_fill::$1 ← > (dword~) gfx_init_plane_fill::$0 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$1 ] ) always clobbers reg byte a +Statement [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::plane_addr#3 gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxbCpuBank#0 ] ) always clobbers reg byte a +Statement [490] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$4 ] ) always clobbers reg byte a +Statement [491] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$5 ] ) always clobbers reg byte a +Statement [492] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::$6 ] ) always clobbers reg byte a +Statement [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::gfxb#6 ] ) always clobbers reg byte a +Statement [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_full:478::gfx_init_plane_fill:481 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_blank:476::gfx_init_plane_fill:510 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] main:2::gfx_init:10::gfx_init_plane_vertical2:474::gfx_init_plane_fill:513 [ gfx_init_plane_fill::fill#6 gfx_init_plane_fill::by#4 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::bx#2 ] ) always clobbers reg byte a reg byte y Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a -Statement [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ) always clobbers reg byte a -Statement [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ) always clobbers reg byte a -Statement [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ) always clobbers reg byte a reg byte y -Statement [546] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ) always clobbers reg byte a -Statement [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y -Statement [562] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [568] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ) always clobbers reg byte a -Statement [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y -Statement [582] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a -Statement [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ) always clobbers reg byte a -Statement [594] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ) always clobbers reg byte a -Statement [595] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ) always clobbers reg byte a -Statement [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ) always clobbers reg byte y -Statement [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ) always clobbers reg byte a -Statement [619] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a -Statement [621] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ) always clobbers reg byte a -Statement [636] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ) always clobbers reg byte a -Statement [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ) always clobbers reg byte a -Statement [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ) always clobbers reg byte a -Statement [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ) always clobbers reg byte a -Statement [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a -Statement [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a -Statement [697] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a -Statement [698] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] ) always clobbers reg byte a -Statement [699] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::$0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y -Statement [700] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:635::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyi:679::bitmap_plot:685 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673::bitmap_plot:707 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665::bitmap_plot:722 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659::bitmap_plot:737 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y -Statement [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a -Statement [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a -Statement [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:628 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxi:673 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:649 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_xdyd:665 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:643 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:614::bitmap_line_ydxd:659 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [747] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) [ bitmap_clear::$3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [748] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [751] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:608 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a -Statement [762] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [763] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a -Statement [770] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) always clobbers reg byte a -Statement [776] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a -Statement [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:606 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [784] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ) always clobbers reg byte a reg byte y -Statement [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a -Statement [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ) always clobbers reg byte a reg byte y -Statement [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ) always clobbers reg byte a -Statement [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a -Statement [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a -Statement [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y -Statement [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a -Statement [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ) always clobbers reg byte a -Statement [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ) always clobbers reg byte a -Statement [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ) always clobbers reg byte a -Statement [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ) always clobbers reg byte y -Statement [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ) always clobbers reg byte a -Statement [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ) always clobbers reg byte a -Statement [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y -Statement [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a -Statement [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a -Statement [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a -Statement [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y -Statement [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a -Statement [862] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a +Statement [519] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::$5 ] ) always clobbers reg byte a +Statement [520] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::row#0 ] ) always clobbers reg byte a +Statement [521] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal2:472 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ( main:2::gfx_init:10::gfx_init_plane_vertical:470 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::bx#2 ] ) always clobbers reg byte a reg byte y +Statement [547] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::$5 ] ) always clobbers reg byte a +Statement [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ( main:2::gfx_init:10::gfx_init_plane_horisontal:468 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::ax#2 ] ) always clobbers reg byte a reg byte y +Statement [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a +Statement [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [569] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::$5 ] ) always clobbers reg byte a +Statement [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ) always clobbers reg byte y +Statement [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2::gfx_init:10::gfx_init_plane_charset8:466 [ ] ) always clobbers reg byte a +Statement [590] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxbCpuBank#4 ] ) always clobbers reg byte a +Statement [595] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::$6 ] ) always clobbers reg byte a +Statement [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::c#0 ] ) always clobbers reg byte a +Statement [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::gfxb#4 ] ) always clobbers reg byte y +Statement [600] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ( main:2::gfx_init:10::gfx_init_plane_8bppchunky:464 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::x#1 ] ) always clobbers reg byte a +Statement [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 ] ) always clobbers reg byte a +Statement [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#1 ] ) always clobbers reg byte a +Statement [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#1 bitmap_line::yd#0 ] ) always clobbers reg byte a +Statement [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 ] ) always clobbers reg byte a +Statement [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#3 ] ) always clobbers reg byte a +Statement [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 [ bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615 [ gfx_init_vic_bitmap::l#2 bitmap_line::x0#0 bitmap_line::x1#0 bitmap_line::y0#0 bitmap_line::y1#0 bitmap_line::xd#0 bitmap_line::yd#10 ] ) always clobbers reg byte a +Statement [682] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::x#6 bitmap_line_xdyi::y#5 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::e#0 ] ) always clobbers reg byte a +Statement [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ) always clobbers reg byte a +Statement [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ) always clobbers reg byte a +Statement [697] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ) always clobbers reg byte a +Statement [698] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ) always clobbers reg byte a +Statement [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::$0 ] ) always clobbers reg byte a +Statement [700] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) [ bitmap_plot::$0 bitmap_plot::$1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::$0 bitmap_plot::$1 ] ) always clobbers reg byte a reg byte y +Statement [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 [ ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:636::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyi:680::bitmap_plot:686 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674::bitmap_plot:708 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666::bitmap_plot:723 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660::bitmap_plot:738 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] ) always clobbers reg byte y +Statement [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::x#5 bitmap_line_ydxi::y#6 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::e#0 ] ) always clobbers reg byte a +Statement [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ) always clobbers reg byte a +Statement [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:629 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxi:674 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ) always clobbers reg byte a +Statement [719] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::x#6 bitmap_line_xdyd::y#5 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::e#0 ] ) always clobbers reg byte a +Statement [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ) always clobbers reg byte a +Statement [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:650 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_xdyd:666 [ gfx_init_vic_bitmap::l#2 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ) always clobbers reg byte a +Statement [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::x#5 bitmap_line_ydxd::y#7 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::e#0 ] ) always clobbers reg byte a +Statement [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ) always clobbers reg byte a +Statement [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:644 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_line:615::bitmap_line_ydxd:660 [ gfx_init_vic_bitmap::l#2 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ) always clobbers reg byte a +Statement [748] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) [ bitmap_clear::$3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:609 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:609 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_clear:609 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ) always clobbers reg byte a +Statement [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::x#2 bitmap_init::bits#3 ] ) always clobbers reg byte a +Statement [771] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$6 ] ) always clobbers reg byte a +Statement [777] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ) always clobbers reg byte a +Statement [779] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::gfx_init:10::gfx_init_vic_bitmap:462::bitmap_init:607 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a +Statement [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ( main:2::gfx_init:10::gfx_init_charset:460 [ gfx_init_charset::c#4 gfx_init_charset::chargen#2 gfx_init_charset::charset#2 gfx_init_charset::l#2 ] ) always clobbers reg byte a reg byte y +Statement [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 [ ] ( main:2::gfx_init:10::gfx_init_charset:460 [ ] ) always clobbers reg byte a +Statement [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ( main:2::gfx_init:10::gfx_init_screen4:458 [ gfx_init_screen4::cy#4 gfx_init_screen4::ch#2 gfx_init_screen4::cx#2 ] ) always clobbers reg byte a reg byte y +Statement [810] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$0 ] ) always clobbers reg byte a +Statement [811] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 ] ) always clobbers reg byte a +Statement [812] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 gfx_init_screen3::$1 gfx_init_screen3::$2 ] ) always clobbers reg byte a +Statement [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen3:456 [ gfx_init_screen3::cy#4 gfx_init_screen3::cx#2 gfx_init_screen3::ch#2 ] ) always clobbers reg byte y +Statement [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::$0 ] ) always clobbers reg byte a +Statement [825] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 ] ) always clobbers reg byte a +Statement [826] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col#0 gfx_init_screen2::col2#0 ] ) always clobbers reg byte a +Statement [827] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 gfx_init_screen2::col2#0 gfx_init_screen2::$3 ] ) always clobbers reg byte a +Statement [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen2:454 [ gfx_init_screen2::cy#4 gfx_init_screen2::cx#2 gfx_init_screen2::ch#2 ] ) always clobbers reg byte y +Statement [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$0 ] ) always clobbers reg byte a +Statement [840] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 gfx_init_screen1::$1 ] ) always clobbers reg byte a +Statement [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen1:452 [ gfx_init_screen1::cy#4 gfx_init_screen1::cx#2 gfx_init_screen1::ch#2 ] ) always clobbers reg byte y +Statement [851] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$0 ] ) always clobbers reg byte a +Statement [852] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ) always clobbers reg byte a +Statement [853] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ) always clobbers reg byte a +Statement [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( main:2::gfx_init:10::gfx_init_screen0:450 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ) always clobbers reg byte y +Statement [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a +Statement [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2::keyboard_init:8 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ gfx_mode::vic_control2#2 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , @@ -19377,62 +20268,63 @@ Potential registers zp ZP_BYTE:289 [ print_str_lines::ch#0 ] : zp ZP_BYTE:289 , Potential registers zp ZP_WORD:290 [ print_cls::$0 ] : zp ZP_WORD:290 , Potential registers zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] : zp ZP_DWORD:292 , Potential registers zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] : zp ZP_WORD:296 , -Potential registers zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] : zp ZP_BYTE:298 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:299 [ gfx_init_plane_fill::$4 ] : zp ZP_WORD:299 , -Potential registers zp ZP_WORD:301 [ gfx_init_plane_fill::$5 ] : zp ZP_WORD:301 , -Potential registers zp ZP_WORD:303 [ gfx_init_plane_fill::$6 ] : zp ZP_WORD:303 , -Potential registers zp ZP_BYTE:305 [ gfx_init_plane_horisontal2::$5 ] : zp ZP_BYTE:305 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:306 [ gfx_init_plane_horisontal2::row#0 ] : zp ZP_BYTE:306 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:307 [ gfx_init_plane_horisontal::$5 ] : zp ZP_BYTE:307 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:308 [ gfx_init_plane_charset8::$5 ] : zp ZP_BYTE:308 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:309 [ gfx_init_plane_8bppchunky::$6 ] : zp ZP_WORD:309 , -Potential registers zp ZP_BYTE:311 [ gfx_init_plane_8bppchunky::c#0 ] : zp ZP_BYTE:311 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:312 [ bitmap_line::x0#0 ] : zp ZP_BYTE:312 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:313 [ bitmap_line::x1#0 ] : zp ZP_BYTE:313 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:314 [ bitmap_line::y0#0 ] : zp ZP_BYTE:314 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:315 [ bitmap_line::y1#0 ] : zp ZP_BYTE:315 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:316 [ bitmap_line::xd#1 ] : zp ZP_BYTE:316 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:317 [ bitmap_line::yd#1 ] : zp ZP_BYTE:317 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:318 [ bitmap_line::yd#0 ] : zp ZP_BYTE:318 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:319 [ bitmap_line::xd#0 ] : zp ZP_BYTE:319 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:320 [ bitmap_line::yd#3 ] : zp ZP_BYTE:320 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:321 [ bitmap_line::yd#10 ] : zp ZP_BYTE:321 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:322 [ bitmap_line_xdyi::$6 ] : zp ZP_BYTE:322 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:323 [ bitmap_plot::plotter_x#0 ] : zp ZP_WORD:323 , -Potential registers zp ZP_WORD:325 [ bitmap_plot::plotter_y#0 ] : zp ZP_WORD:325 , -Potential registers zp ZP_WORD:327 [ bitmap_plot::$0 ] : zp ZP_WORD:327 , -Potential registers zp ZP_BYTE:329 [ bitmap_plot::$1 ] : zp ZP_BYTE:329 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:330 [ bitmap_line_ydxi::$6 ] : zp ZP_BYTE:330 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:331 [ bitmap_line_xdyd::$6 ] : zp ZP_BYTE:331 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:332 [ bitmap_line_ydxd::$6 ] : zp ZP_BYTE:332 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:333 [ bitmap_clear::$3 ] : zp ZP_WORD:333 , -Potential registers zp ZP_BYTE:335 [ bitmap_init::$0 ] : zp ZP_BYTE:335 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:336 [ bitmap_init::$6 ] : zp ZP_BYTE:336 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:337 [ bitmap_init::$7 ] : zp ZP_BYTE:337 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:338 [ bitmap_init::$8 ] : zp ZP_BYTE:338 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:339 [ bitmap_init::$9 ] : zp ZP_BYTE:339 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:340 [ bitmap_init::$10 ] : zp ZP_BYTE:340 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:341 [ gfx_init_screen3::$0 ] : zp ZP_BYTE:341 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:342 [ gfx_init_screen3::$1 ] : zp ZP_BYTE:342 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:343 [ gfx_init_screen3::$2 ] : zp ZP_BYTE:343 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:344 [ gfx_init_screen3::$3 ] : zp ZP_BYTE:344 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:345 [ gfx_init_screen2::$0 ] : zp ZP_BYTE:345 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:346 [ gfx_init_screen2::col#0 ] : zp ZP_BYTE:346 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] : zp ZP_BYTE:347 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:348 [ gfx_init_screen2::$3 ] : zp ZP_BYTE:348 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:349 [ gfx_init_screen2::$4 ] : zp ZP_BYTE:349 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:350 [ gfx_init_screen1::$0 ] : zp ZP_BYTE:350 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:351 [ gfx_init_screen1::$1 ] : zp ZP_BYTE:351 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:352 [ gfx_init_screen0::$0 ] : zp ZP_BYTE:352 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:353 [ gfx_init_screen0::$1 ] : zp ZP_BYTE:353 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:354 [ gfx_init_screen0::$2 ] : zp ZP_BYTE:354 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:355 [ gfx_init_screen0::$3 ] : zp ZP_BYTE:355 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] : zp ZP_BYTE:298 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:299 [ gfx_init_plane_fill::gfxbCpuBank#1 ] : zp ZP_BYTE:299 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:300 [ gfx_init_plane_fill::$4 ] : zp ZP_WORD:300 , +Potential registers zp ZP_WORD:302 [ gfx_init_plane_fill::$5 ] : zp ZP_WORD:302 , +Potential registers zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] : zp ZP_WORD:304 , +Potential registers zp ZP_BYTE:306 [ gfx_init_plane_horisontal2::$5 ] : zp ZP_BYTE:306 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:307 [ gfx_init_plane_horisontal2::row#0 ] : zp ZP_BYTE:307 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:308 [ gfx_init_plane_horisontal::$5 ] : zp ZP_BYTE:308 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:309 [ gfx_init_plane_charset8::$5 ] : zp ZP_BYTE:309 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] : zp ZP_WORD:310 , +Potential registers zp ZP_BYTE:312 [ gfx_init_plane_8bppchunky::c#0 ] : zp ZP_BYTE:312 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:313 [ bitmap_line::x0#0 ] : zp ZP_BYTE:313 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:314 [ bitmap_line::x1#0 ] : zp ZP_BYTE:314 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:315 [ bitmap_line::y0#0 ] : zp ZP_BYTE:315 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:316 [ bitmap_line::y1#0 ] : zp ZP_BYTE:316 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:317 [ bitmap_line::xd#1 ] : zp ZP_BYTE:317 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:318 [ bitmap_line::yd#1 ] : zp ZP_BYTE:318 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:319 [ bitmap_line::yd#0 ] : zp ZP_BYTE:319 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:320 [ bitmap_line::xd#0 ] : zp ZP_BYTE:320 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:321 [ bitmap_line::yd#3 ] : zp ZP_BYTE:321 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:322 [ bitmap_line::yd#10 ] : zp ZP_BYTE:322 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:323 [ bitmap_line_xdyi::$6 ] : zp ZP_BYTE:323 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 ] : zp ZP_WORD:324 , +Potential registers zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] : zp ZP_WORD:326 , +Potential registers zp ZP_WORD:328 [ bitmap_plot::$0 ] : zp ZP_WORD:328 , +Potential registers zp ZP_BYTE:330 [ bitmap_plot::$1 ] : zp ZP_BYTE:330 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:331 [ bitmap_line_ydxi::$6 ] : zp ZP_BYTE:331 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:332 [ bitmap_line_xdyd::$6 ] : zp ZP_BYTE:332 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:333 [ bitmap_line_ydxd::$6 ] : zp ZP_BYTE:333 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:334 [ bitmap_clear::$3 ] : zp ZP_WORD:334 , +Potential registers zp ZP_BYTE:336 [ bitmap_init::$0 ] : zp ZP_BYTE:336 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:337 [ bitmap_init::$6 ] : zp ZP_BYTE:337 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:338 [ bitmap_init::$7 ] : zp ZP_BYTE:338 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:339 [ bitmap_init::$8 ] : zp ZP_BYTE:339 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:340 [ bitmap_init::$9 ] : zp ZP_BYTE:340 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:341 [ bitmap_init::$10 ] : zp ZP_BYTE:341 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:342 [ gfx_init_screen3::$0 ] : zp ZP_BYTE:342 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] : zp ZP_BYTE:343 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:344 [ gfx_init_screen3::$2 ] : zp ZP_BYTE:344 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:345 [ gfx_init_screen3::$3 ] : zp ZP_BYTE:345 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:346 [ gfx_init_screen2::$0 ] : zp ZP_BYTE:346 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] : zp ZP_BYTE:347 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] : zp ZP_BYTE:348 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:349 [ gfx_init_screen2::$3 ] : zp ZP_BYTE:349 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:350 [ gfx_init_screen2::$4 ] : zp ZP_BYTE:350 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:351 [ gfx_init_screen1::$0 ] : zp ZP_BYTE:351 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:352 [ gfx_init_screen1::$1 ] : zp ZP_BYTE:352 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:353 [ gfx_init_screen0::$0 ] : zp ZP_BYTE:353 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] : zp ZP_BYTE:354 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:355 [ gfx_init_screen0::$2 ] : zp ZP_BYTE:355 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:356 [ gfx_init_screen0::$3 ] : zp ZP_BYTE:356 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [keyboard_event_scan] 200,002: zp ZP_BYTE:254 [ keyboard_event_scan::$3 ] 200,002: zp ZP_BYTE:255 [ keyboard_event_scan::$4 ] 200,002: zp ZP_BYTE:256 [ keyboard_event_scan::event_type#0 ] 200,002: zp ZP_BYTE:257 [ keyboard_event_scan::$11 ] 178,573.21: zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 119,043.1: zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 21,001.74: zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 12,778.06: zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:247 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:249 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:251 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:253 [ keyboard_event_scan::$26 ] Uplift Scope [] 588,355.23: zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] 3,703: zp ZP_WORD:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 ] 2,659.38: zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 226.56: zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] 105.45: zp ZP_BYTE:32 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] 16.73: zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] Uplift Scope [keyboard_matrix_read] 20,002: zp ZP_BYTE:244 [ keyboard_matrix_read::return#2 ] 10,003: zp ZP_BYTE:243 [ keyboard_matrix_read::rowid#0 ] 3,334.33: zp ZP_BYTE:262 [ keyboard_matrix_read::return#0 ] -Uplift Scope [gfx_init_plane_charset8] 4,004: zp ZP_BYTE:89 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 2,002: zp ZP_BYTE:308 [ gfx_init_plane_charset8::$5 ] 1,723.94: zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 1,044.93: zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 845.22: zp ZP_WORD:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 783: zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 192.31: zp ZP_WORD:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 165.93: zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 17.79: zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplift Scope [gfx_init_plane_charset8] 4,004: zp ZP_BYTE:89 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 2,002: zp ZP_BYTE:309 [ gfx_init_plane_charset8::$5 ] 1,723.94: zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 1,044.93: zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 845.22: zp ZP_WORD:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 783: zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 192.31: zp ZP_WORD:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 165.93: zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 17.79: zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Uplift Scope [gfx_mode] 2,104.5: zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] 2,002: zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] 1,663.27: zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 ] 353.5: zp ZP_BYTE:11 [ gfx_mode::j#2 gfx_mode::j#1 ] 353.5: zp ZP_BYTE:12 [ gfx_mode::i#2 gfx_mode::i#1 ] 202: zp ZP_BYTE:242 [ gfx_mode::keyboard_event#0 ] 180.36: zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] 44: zp ZP_BYTE:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] 12: zp ZP_BYTE:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] 4: zp ZP_BYTE:158 [ gfx_mode::$29 ] 4: zp ZP_DWORD:164 [ gfx_mode::$31 ] 4: zp ZP_WORD:172 [ gfx_mode::$33 ] 4: zp ZP_BYTE:174 [ gfx_mode::$34 ] 4: zp ZP_WORD:175 [ gfx_mode::$35 ] 4: zp ZP_BYTE:177 [ gfx_mode::$36 ] 4: zp ZP_WORD:178 [ gfx_mode::$37 ] 4: zp ZP_BYTE:180 [ gfx_mode::$38 ] 4: zp ZP_BYTE:181 [ gfx_mode::$39 ] 4: zp ZP_BYTE:182 [ gfx_mode::$40 ] 4: zp ZP_BYTE:183 [ gfx_mode::$41 ] 4: zp ZP_BYTE:184 [ gfx_mode::$42 ] 4: zp ZP_BYTE:185 [ gfx_mode::$43 ] 4: zp ZP_DWORD:191 [ gfx_mode::$45 ] 4: zp ZP_WORD:199 [ gfx_mode::$47 ] 4: zp ZP_BYTE:201 [ gfx_mode::$48 ] 4: zp ZP_WORD:202 [ gfx_mode::$49 ] 4: zp ZP_BYTE:204 [ gfx_mode::$50 ] 4: zp ZP_WORD:205 [ gfx_mode::$51 ] 4: zp ZP_BYTE:207 [ gfx_mode::$52 ] 4: zp ZP_BYTE:208 [ gfx_mode::$53 ] 4: zp ZP_BYTE:209 [ gfx_mode::$54 ] 4: zp ZP_BYTE:210 [ gfx_mode::$55 ] 4: zp ZP_BYTE:211 [ gfx_mode::$56 ] 4: zp ZP_WORD:216 [ gfx_mode::$63 ] 4: zp ZP_WORD:218 [ gfx_mode::$64 ] 4: zp ZP_WORD:226 [ gfx_mode::$68 ] 4: zp ZP_BYTE:228 [ gfx_mode::$69 ] 4: zp ZP_BYTE:229 [ gfx_mode::$70 ] 4: zp ZP_BYTE:230 [ gfx_mode::$71 ] 4: zp ZP_BYTE:233 [ gfx_mode::$75 ] 4: zp ZP_BYTE:234 [ gfx_mode::$76 ] 4: zp ZP_BYTE:235 [ gfx_mode::$77 ] 4: zp ZP_BYTE:236 [ gfx_mode::$78 ] 4: zp ZP_BYTE:237 [ gfx_mode::$79 ] 4: zp ZP_BYTE:238 [ gfx_mode::$80 ] 4: zp ZP_BYTE:239 [ gfx_mode::$81 ] 4: zp ZP_BYTE:240 [ gfx_mode::$82 ] 2: zp ZP_BYTE:4 [ gfx_mode::vic_control2#2 ] 2: zp ZP_WORD:214 [ gfx_mode::$61 ] 2: zp ZP_WORD:224 [ gfx_mode::$66 ] 1.14: zp ZP_DWORD:168 [ gfx_mode::plane_a#0 ] 1.14: zp ZP_DWORD:195 [ gfx_mode::plane_b#0 ] 0.8: zp ZP_BYTE:159 [ gfx_mode::plane_a_offs#0 ] 0.8: zp ZP_BYTE:186 [ gfx_mode::plane_b_offs#0 ] 0.5: zp ZP_BYTE:220 [ gfx_mode::$65 ] Uplift Scope [print_str_at] 3,005.5: zp ZP_WORD:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] 2,002: zp ZP_WORD:39 [ print_str_at::at#2 print_str_at::at#0 ] Uplift Scope [form_field_ptr] 2,341.67: zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] 2,002: zp ZP_WORD:266 [ form_field_ptr::return#2 ] 251.25: zp ZP_WORD:274 [ form_field_ptr::return#0 ] 6: zp ZP_BYTE:270 [ form_field_ptr::y#0 ] 4: zp ZP_BYTE:273 [ form_field_ptr::x#0 ] 4: zp ZP_WORD:276 [ form_field_ptr::return#3 ] 1: zp ZP_WORD:271 [ form_field_ptr::$2 ] @@ -19441,34 +20333,34 @@ Uplift Scope [apply_preset] 3,503.5: zp ZP_BYTE:45 [ apply_preset::i#2 apply_pre Uplift Scope [print_str_lines] 1,939.17: zp ZP_WORD:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] 667.33: zp ZP_BYTE:289 [ print_str_lines::ch#0 ] Uplift Scope [form_mode] 2,002: zp ZP_BYTE:264 [ form_mode::$36 ] 353.5: zp ZP_BYTE:30 [ form_mode::i#2 form_mode::i#1 ] 212.21: zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] Uplift Scope [form_control] 2,002: zp ZP_BYTE:263 [ form_control::return#0 ] 333.67: zp ZP_BYTE:46 [ form_control::return#2 ] 4: zp ZP_BYTE:280 [ form_control::$5 ] 4: zp ZP_BYTE:283 [ form_control::$11 ] 4: zp ZP_BYTE:284 [ form_control::$12 ] 4: zp ZP_BYTE:285 [ form_control::$22 ] 4: zp ZP_BYTE:286 [ form_control::$6 ] 2.67: zp ZP_BYTE:282 [ form_control::key_event#0 ] 0.59: zp ZP_WORD:278 [ form_control::field#0 ] -Uplift Scope [bitmap_plot] 1,012: zp ZP_BYTE:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 506.5: zp ZP_BYTE:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 4: zp ZP_WORD:325 [ bitmap_plot::plotter_y#0 ] 4: zp ZP_BYTE:329 [ bitmap_plot::$1 ] 2: zp ZP_WORD:323 [ bitmap_plot::plotter_x#0 ] 1: zp ZP_WORD:327 [ bitmap_plot::$0 ] -Uplift Scope [gfx_init_plane_8bppchunky] 362.64: zp ZP_BYTE:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] 297.35: zp ZP_WORD:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] 202: zp ZP_WORD:309 [ gfx_init_plane_8bppchunky::$6 ] 202: zp ZP_BYTE:311 [ gfx_init_plane_8bppchunky::c#0 ] 181.8: zp ZP_WORD:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] 25.96: zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] -Uplift Scope [gfx_init_screen2] 202: zp ZP_BYTE:345 [ gfx_init_screen2::$0 ] 202: zp ZP_BYTE:348 [ gfx_init_screen2::$3 ] 202: zp ZP_BYTE:349 [ gfx_init_screen2::$4 ] 189.38: zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] 151.5: zp ZP_BYTE:346 [ gfx_init_screen2::col#0 ] 109.46: zp ZP_WORD:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] 101: zp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] 27.68: zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] -Uplift Scope [bitmap_line_xdyi] 482.47: zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 265: zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 202: zp ZP_BYTE:322 [ bitmap_line_xdyi::$6 ] 118.72: zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] 18.71: zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] 15.64: zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] 10.17: zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] -Uplift Scope [bitmap_line_xdyd] 482.47: zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 265: zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 202: zp ZP_BYTE:331 [ bitmap_line_xdyd::$6 ] 118.72: zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] 18.71: zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] 15.64: zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] 10.17: zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] -Uplift Scope [bitmap_line_ydxi] 482.47: zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 265: zp ZP_BYTE:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 202: zp ZP_BYTE:330 [ bitmap_line_ydxi::$6 ] 118.72: zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] 18.71: zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] 15.64: zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] 10.17: zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] -Uplift Scope [bitmap_line_ydxd] 482.47: zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 265: zp ZP_BYTE:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 202: zp ZP_BYTE:332 [ bitmap_line_ydxd::$6 ] 118.72: zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 18.71: zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 15.64: zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 10.17: zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplift Scope [gfx_init_screen0] 202: zp ZP_BYTE:352 [ gfx_init_screen0::$0 ] 202: zp ZP_BYTE:354 [ gfx_init_screen0::$2 ] 202: zp ZP_BYTE:355 [ gfx_init_screen0::$3 ] 194.79: zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 116.93: zp ZP_WORD:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 101: zp ZP_BYTE:353 [ gfx_init_screen0::$1 ] 28.8: zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Uplift Scope [gfx_init_screen3] 202: zp ZP_BYTE:341 [ gfx_init_screen3::$0 ] 202: zp ZP_BYTE:343 [ gfx_init_screen3::$2 ] 202: zp ZP_BYTE:344 [ gfx_init_screen3::$3 ] 194.79: zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] 116.93: zp ZP_WORD:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] 101: zp ZP_BYTE:342 [ gfx_init_screen3::$1 ] 28.8: zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] -Uplift Scope [gfx_init_plane_horisontal] 592: zp ZP_WORD:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] 202: zp ZP_BYTE:307 [ gfx_init_plane_horisontal::$5 ] 176.75: zp ZP_BYTE:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] 27.68: zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] -Uplift Scope [gfx_init_screen1] 212.1: zp ZP_BYTE:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] 202: zp ZP_BYTE:350 [ gfx_init_screen1::$0 ] 202: zp ZP_BYTE:351 [ gfx_init_screen1::$1 ] 143.1: zp ZP_WORD:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] 31.88: zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Uplift Scope [bitmap_plot] 1,012: zp ZP_BYTE:104 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 506.5: zp ZP_BYTE:103 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 4: zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] 4: zp ZP_BYTE:330 [ bitmap_plot::$1 ] 2: zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 ] 1: zp ZP_WORD:328 [ bitmap_plot::$0 ] +Uplift Scope [gfx_init_plane_8bppchunky] 362.64: zp ZP_BYTE:93 [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] 297.35: zp ZP_WORD:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] 202: zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] 202: zp ZP_BYTE:312 [ gfx_init_plane_8bppchunky::c#0 ] 181.8: zp ZP_WORD:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] 25.96: zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Uplift Scope [gfx_init_screen2] 202: zp ZP_BYTE:346 [ gfx_init_screen2::$0 ] 202: zp ZP_BYTE:349 [ gfx_init_screen2::$3 ] 202: zp ZP_BYTE:350 [ gfx_init_screen2::$4 ] 189.38: zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] 151.5: zp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] 109.46: zp ZP_WORD:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] 101: zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] 27.68: zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Uplift Scope [bitmap_line_xdyi] 482.47: zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 265: zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 202: zp ZP_BYTE:323 [ bitmap_line_xdyi::$6 ] 118.72: zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] 18.71: zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] 15.64: zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] 10.17: zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] +Uplift Scope [bitmap_line_xdyd] 482.47: zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 265: zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 202: zp ZP_BYTE:332 [ bitmap_line_xdyd::$6 ] 118.72: zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] 18.71: zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] 15.64: zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] 10.17: zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] +Uplift Scope [bitmap_line_ydxi] 482.47: zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 265: zp ZP_BYTE:108 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 202: zp ZP_BYTE:331 [ bitmap_line_ydxi::$6 ] 118.72: zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] 18.71: zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] 15.64: zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] 10.17: zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] +Uplift Scope [bitmap_line_ydxd] 482.47: zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 265: zp ZP_BYTE:120 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 202: zp ZP_BYTE:333 [ bitmap_line_ydxd::$6 ] 118.72: zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] 18.71: zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] 15.64: zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] 10.17: zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplift Scope [gfx_init_screen0] 202: zp ZP_BYTE:353 [ gfx_init_screen0::$0 ] 202: zp ZP_BYTE:355 [ gfx_init_screen0::$2 ] 202: zp ZP_BYTE:356 [ gfx_init_screen0::$3 ] 194.79: zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 116.93: zp ZP_WORD:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 101: zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] 28.8: zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplift Scope [gfx_init_screen3] 202: zp ZP_BYTE:342 [ gfx_init_screen3::$0 ] 202: zp ZP_BYTE:344 [ gfx_init_screen3::$2 ] 202: zp ZP_BYTE:345 [ gfx_init_screen3::$3 ] 194.79: zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] 116.93: zp ZP_WORD:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] 101: zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] 28.8: zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Uplift Scope [gfx_init_plane_horisontal] 592: zp ZP_WORD:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] 202: zp ZP_BYTE:308 [ gfx_init_plane_horisontal::$5 ] 176.75: zp ZP_BYTE:79 [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] 27.68: zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Uplift Scope [gfx_init_screen1] 212.1: zp ZP_BYTE:151 [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] 202: zp ZP_BYTE:351 [ gfx_init_screen1::$0 ] 202: zp ZP_BYTE:352 [ gfx_init_screen1::$1 ] 143.1: zp ZP_WORD:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] 31.88: zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Uplift Scope [form_set_screen] 218.83: zp ZP_BYTE:49 [ form_set_screen::y#2 form_set_screen::y#1 ] 202: zp ZP_BYTE:287 [ form_set_screen::$0 ] 202: zp ZP_BYTE:288 [ form_set_screen::$1 ] 148.13: zp ZP_WORD:47 [ form_set_screen::line#2 form_set_screen::line#1 ] -Uplift Scope [gfx_init_plane_horisontal2] 202: zp ZP_BYTE:305 [ gfx_init_plane_horisontal2::$5 ] 202: zp ZP_BYTE:306 [ gfx_init_plane_horisontal2::row#0 ] 191.9: zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] 143.1: zp ZP_WORD:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] 31.88: zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Uplift Scope [gfx_init_plane_horisontal2] 202: zp ZP_BYTE:306 [ gfx_init_plane_horisontal2::$5 ] 202: zp ZP_BYTE:307 [ gfx_init_plane_horisontal2::row#0 ] 191.9: zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] 143.1: zp ZP_WORD:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] 31.88: zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Uplift Scope [gfx_init_charset] 214.5: zp ZP_WORD:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] 202: zp ZP_BYTE:137 [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] 169.27: zp ZP_WORD:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] 19.64: zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplift Scope [gfx_init_plane_fill] 227.6: zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] 218.83: zp ZP_BYTE:66 [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] 20.17: zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] 5.61: zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] 4: zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] 4: zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] 4: zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] 4: zp ZP_WORD:299 [ gfx_init_plane_fill::$4 ] 4: zp ZP_WORD:301 [ gfx_init_plane_fill::$5 ] 2: zp ZP_WORD:303 [ gfx_init_plane_fill::$6 ] 0.67: zp ZP_DWORD:58 [ gfx_init_plane_fill::plane_addr#3 ] -Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:333 [ bitmap_clear::$3 ] +Uplift Scope [gfx_init_plane_fill] 227.6: zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] 218.83: zp ZP_BYTE:66 [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] 20.17: zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] 20: zp ZP_BYTE:299 [ gfx_init_plane_fill::gfxbCpuBank#1 ] 5.32: zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] 4: zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] 4: zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] 4: zp ZP_WORD:300 [ gfx_init_plane_fill::$4 ] 4: zp ZP_WORD:302 [ gfx_init_plane_fill::$5 ] 2: zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] 2: zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] 0.57: zp ZP_DWORD:58 [ gfx_init_plane_fill::plane_addr#3 ] +Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:334 [ bitmap_clear::$3 ] Uplift Scope [gfx_init_screen4] 221.6: zp ZP_WORD:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] 218.83: zp ZP_BYTE:141 [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] 20.17: zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] Uplift Scope [gfx_init_plane_vertical] 221.6: zp ZP_WORD:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] 218.83: zp ZP_BYTE:75 [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] 20.17: zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] Uplift Scope [print_cls] 257.5: zp ZP_WORD:56 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] 202: zp ZP_WORD:290 [ print_cls::$0 ] Uplift Scope [dtvSetCpuBankSegment1] 311: zp ZP_BYTE:67 [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] Uplift Scope [keyboard_event_get] 202: zp ZP_BYTE:241 [ keyboard_event_get::return#3 ] 30.25: zp ZP_BYTE:13 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] 4: zp ZP_BYTE:281 [ keyboard_event_get::return#4 ] -Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 24.93: zp ZP_BYTE:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 23.83: zp ZP_BYTE:127 [ bitmap_init::x#2 bitmap_init::x#1 ] 22.5: zp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:335 [ bitmap_init::$0 ] 22: zp ZP_BYTE:337 [ bitmap_init::$7 ] 22: zp ZP_BYTE:338 [ bitmap_init::$8 ] 22: zp ZP_BYTE:339 [ bitmap_init::$9 ] 22: zp ZP_BYTE:340 [ bitmap_init::$10 ] 11: zp ZP_BYTE:336 [ bitmap_init::$6 ] +Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 24.93: zp ZP_BYTE:128 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 23.83: zp ZP_BYTE:127 [ bitmap_init::x#2 bitmap_init::x#1 ] 22.5: zp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:336 [ bitmap_init::$0 ] 22: zp ZP_BYTE:338 [ bitmap_init::$7 ] 22: zp ZP_BYTE:339 [ bitmap_init::$8 ] 22: zp ZP_BYTE:340 [ bitmap_init::$9 ] 22: zp ZP_BYTE:341 [ bitmap_init::$10 ] 11: zp ZP_BYTE:337 [ bitmap_init::$6 ] Uplift Scope [render_preset_name] 217.36: zp ZP_BYTE:34 [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] 2: zp ZP_WORD:35 [ render_preset_name::name#12 ] Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:246 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:248 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:250 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:252 [ keyboard_event_pressed::return#3 ] 4: zp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] 2: zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] 1.67: zp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] 1.33: zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] Uplift Scope [gfx_init_vic_bitmap] 27.5: zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] Uplift Scope [get_vic_screen] 10.8: zp ZP_BYTE:20 [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] 4: zp ZP_WORD:212 [ get_vic_screen::return#10 ] 4: zp ZP_WORD:231 [ get_vic_screen::return#11 ] 1: zp ZP_WORD:21 [ get_vic_screen::return#5 ] Uplift Scope [get_plane] 10.29: zp ZP_BYTE:25 [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] 4: zp ZP_DWORD:160 [ get_plane::return#16 ] 4: zp ZP_DWORD:187 [ get_plane::return#17 ] 1: zp ZP_DWORD:26 [ get_plane::return#14 ] -Uplift Scope [bitmap_line] 1.75: zp ZP_BYTE:315 [ bitmap_line::y1#0 ] 1.67: zp ZP_BYTE:314 [ bitmap_line::y0#0 ] 1.32: zp ZP_BYTE:313 [ bitmap_line::x1#0 ] 1.26: zp ZP_BYTE:312 [ bitmap_line::x0#0 ] 0.89: zp ZP_BYTE:317 [ bitmap_line::yd#1 ] 0.89: zp ZP_BYTE:318 [ bitmap_line::yd#0 ] 0.89: zp ZP_BYTE:320 [ bitmap_line::yd#3 ] 0.89: zp ZP_BYTE:321 [ bitmap_line::yd#10 ] 0.7: zp ZP_BYTE:316 [ bitmap_line::xd#1 ] 0.7: zp ZP_BYTE:319 [ bitmap_line::xd#0 ] +Uplift Scope [bitmap_line] 1.75: zp ZP_BYTE:316 [ bitmap_line::y1#0 ] 1.67: zp ZP_BYTE:315 [ bitmap_line::y0#0 ] 1.32: zp ZP_BYTE:314 [ bitmap_line::x1#0 ] 1.26: zp ZP_BYTE:313 [ bitmap_line::x0#0 ] 0.89: zp ZP_BYTE:318 [ bitmap_line::yd#1 ] 0.89: zp ZP_BYTE:319 [ bitmap_line::yd#0 ] 0.89: zp ZP_BYTE:321 [ bitmap_line::yd#3 ] 0.89: zp ZP_BYTE:322 [ bitmap_line::yd#10 ] 0.7: zp ZP_BYTE:317 [ bitmap_line::xd#1 ] 0.7: zp ZP_BYTE:320 [ bitmap_line::xd#0 ] Uplift Scope [get_vic_charset] 4: zp ZP_WORD:222 [ get_vic_charset::return#4 ] 3: zp ZP_BYTE:221 [ get_vic_charset::idx#0 ] 0.67: zp ZP_WORD:23 [ get_vic_charset::return#2 ] Uplift Scope [print_ln] Uplift Scope [print_set_screen] @@ -19479,364 +20371,366 @@ Uplift Scope [gfx_init_plane_vertical2] Uplift Scope [gfx_init_plane_blank] Uplift Scope [gfx_init_plane_full] -Uplifting [keyboard_event_scan] best 15533613 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] zp ZP_BYTE:256 [ keyboard_event_scan::event_type#0 ] zp ZP_BYTE:257 [ keyboard_event_scan::$11 ] zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:247 [ keyboard_event_scan::$14 ] zp ZP_BYTE:249 [ keyboard_event_scan::$18 ] zp ZP_BYTE:251 [ keyboard_event_scan::$22 ] zp ZP_BYTE:253 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 15533621 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] zp ZP_BYTE:256 [ keyboard_event_scan::event_type#0 ] zp ZP_BYTE:257 [ keyboard_event_scan::$11 ] zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:247 [ keyboard_event_scan::$14 ] zp ZP_BYTE:249 [ keyboard_event_scan::$18 ] zp ZP_BYTE:251 [ keyboard_event_scan::$22 ] zp ZP_BYTE:253 [ keyboard_event_scan::$26 ] Limited combination testing to 10 combinations of 5308416 possible. -Uplifting [] best 15533545 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_WORD:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 ] zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] reg byte x [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] +Uplifting [] best 15533553 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_WORD:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 ] zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] reg byte x [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 ] zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] Limited combination testing to 10 combinations of 16 possible. -Uplifting [keyboard_matrix_read] best 15443544 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::rowid#0 ] zp ZP_BYTE:262 [ keyboard_matrix_read::return#0 ] +Uplifting [keyboard_matrix_read] best 15443552 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::rowid#0 ] zp ZP_BYTE:262 [ keyboard_matrix_read::return#0 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [gfx_init_plane_charset8] best 15428544 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$5 ] zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp ZP_WORD:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp ZP_WORD:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplifting [gfx_init_plane_charset8] best 15428552 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$5 ] zp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp ZP_WORD:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp ZP_WORD:81 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Limited combination testing to 10 combinations of 512 possible. -Uplifting [print_str_at] best 15428544 combination zp ZP_WORD:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] zp ZP_WORD:39 [ print_str_at::at#2 print_str_at::at#0 ] -Uplifting [form_field_ptr] best 15428540 combination zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp ZP_WORD:266 [ form_field_ptr::return#2 ] zp ZP_WORD:274 [ form_field_ptr::return#0 ] reg byte a [ form_field_ptr::y#0 ] zp ZP_BYTE:273 [ form_field_ptr::x#0 ] zp ZP_WORD:276 [ form_field_ptr::return#3 ] zp ZP_WORD:271 [ form_field_ptr::$2 ] +Uplifting [print_str_at] best 15428552 combination zp ZP_WORD:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] zp ZP_WORD:39 [ print_str_at::at#2 print_str_at::at#0 ] +Uplifting [form_field_ptr] best 15428548 combination zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp ZP_WORD:266 [ form_field_ptr::return#2 ] zp ZP_WORD:274 [ form_field_ptr::return#0 ] reg byte a [ form_field_ptr::y#0 ] zp ZP_BYTE:273 [ form_field_ptr::x#0 ] zp ZP_WORD:276 [ form_field_ptr::return#3 ] zp ZP_WORD:271 [ form_field_ptr::$2 ] Limited combination testing to 10 combinations of 48 possible. -Uplifting [form_render_values] best 15428540 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] zp ZP_WORD:268 [ form_render_values::field#0 ] -Uplifting [apply_preset] best 15416207 combination reg byte y [ apply_preset::i#2 apply_preset::i#1 ] zp ZP_WORD:43 [ apply_preset::preset#13 ] reg byte a [ apply_preset::idx#0 ] +Uplifting [form_render_values] best 15428548 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] zp ZP_WORD:268 [ form_render_values::field#0 ] +Uplifting [apply_preset] best 15416215 combination reg byte y [ apply_preset::i#2 apply_preset::i#1 ] zp ZP_WORD:43 [ apply_preset::preset#13 ] reg byte a [ apply_preset::idx#0 ] Limited combination testing to 10 combinations of 12 possible. -Uplifting [print_str_lines] best 15404207 combination zp ZP_WORD:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] -Uplifting [form_mode] best 15397007 combination reg byte a [ form_mode::$36 ] reg byte y [ form_mode::i#2 form_mode::i#1 ] zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] +Uplifting [print_str_lines] best 15404215 combination zp ZP_WORD:50 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ] +Uplifting [form_mode] best 15397015 combination reg byte a [ form_mode::$36 ] reg byte y [ form_mode::i#2 form_mode::i#1 ] zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] Limited combination testing to 10 combinations of 24 possible. -Uplifting [form_control] best 15391007 combination reg byte a [ form_control::return#0 ] zp ZP_BYTE:46 [ form_control::return#2 ] zp ZP_BYTE:280 [ form_control::$5 ] zp ZP_BYTE:283 [ form_control::$11 ] zp ZP_BYTE:284 [ form_control::$12 ] zp ZP_BYTE:285 [ form_control::$22 ] zp ZP_BYTE:286 [ form_control::$6 ] zp ZP_BYTE:282 [ form_control::key_event#0 ] zp ZP_WORD:278 [ form_control::field#0 ] +Uplifting [form_control] best 15391015 combination reg byte a [ form_control::return#0 ] zp ZP_BYTE:46 [ form_control::return#2 ] zp ZP_BYTE:280 [ form_control::$5 ] zp ZP_BYTE:283 [ form_control::$11 ] zp ZP_BYTE:284 [ form_control::$12 ] zp ZP_BYTE:285 [ form_control::$22 ] zp ZP_BYTE:286 [ form_control::$6 ] zp ZP_BYTE:282 [ form_control::key_event#0 ] zp ZP_WORD:278 [ form_control::field#0 ] Limited combination testing to 10 combinations of 65536 possible. -Uplifting [bitmap_plot] best 15388598 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp ZP_WORD:325 [ bitmap_plot::plotter_y#0 ] zp ZP_BYTE:329 [ bitmap_plot::$1 ] zp ZP_WORD:323 [ bitmap_plot::plotter_x#0 ] zp ZP_WORD:327 [ bitmap_plot::$0 ] +Uplifting [bitmap_plot] best 15388606 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] zp ZP_BYTE:330 [ bitmap_plot::$1 ] zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 ] zp ZP_WORD:328 [ bitmap_plot::$0 ] Limited combination testing to 10 combinations of 36 possible. -Uplifting [gfx_init_plane_8bppchunky] best 15387368 combination reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] zp ZP_WORD:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] zp ZP_WORD:309 [ gfx_init_plane_8bppchunky::$6 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] zp ZP_WORD:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Uplifting [gfx_init_plane_8bppchunky] best 15387376 combination reg byte x [ gfx_init_plane_8bppchunky::gfxbCpuBank#4 gfx_init_plane_8bppchunky::gfxbCpuBank#7 gfx_init_plane_8bppchunky::gfxbCpuBank#8 gfx_init_plane_8bppchunky::gfxbCpuBank#2 ] zp ZP_WORD:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] reg byte a [ gfx_init_plane_8bppchunky::c#0 ] zp ZP_WORD:91 [ gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 ] zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Limited combination testing to 10 combinations of 16 possible. -Uplifting [gfx_init_screen2] best 15386168 combination reg byte a [ gfx_init_screen2::$0 ] reg byte a [ gfx_init_screen2::$3 ] zp ZP_BYTE:349 [ gfx_init_screen2::$4 ] zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] zp ZP_BYTE:346 [ gfx_init_screen2::col#0 ] zp ZP_WORD:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] zp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Uplifting [gfx_init_screen2] best 15386176 combination reg byte a [ gfx_init_screen2::$0 ] reg byte a [ gfx_init_screen2::$3 ] zp ZP_BYTE:350 [ gfx_init_screen2::$4 ] zp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] zp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] zp ZP_WORD:148 [ gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 ] zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Limited combination testing to 10 combinations of 2304 possible. -Uplifting [bitmap_line_xdyi] best 15385568 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] +Uplifting [bitmap_line_xdyi] best 15385576 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_xdyd] best 15384968 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte x [ bitmap_line_xdyd::$6 ] zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] +Uplifting [bitmap_line_xdyd] best 15384976 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] reg byte x [ bitmap_line_xdyd::$6 ] zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxi] best 15383962 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte a [ bitmap_line_ydxi::$6 ] zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] +Uplifting [bitmap_line_ydxi] best 15383970 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] reg byte x [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#5 bitmap_line_ydxi::x#0 bitmap_line_ydxi::x#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] reg byte a [ bitmap_line_ydxi::$6 ] zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [bitmap_line_ydxd] best 15382956 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ bitmap_line_ydxd::$6 ] zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplifting [bitmap_line_ydxd] best 15382964 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte a [ bitmap_line_ydxd::$6 ] zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Limited combination testing to 10 combinations of 256 possible. -Uplifting [gfx_init_screen0] best 15381756 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] zp ZP_BYTE:355 [ gfx_init_screen0::$3 ] zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp ZP_WORD:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp ZP_BYTE:353 [ gfx_init_screen0::$1 ] zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplifting [gfx_init_screen0] best 15381764 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] zp ZP_BYTE:356 [ gfx_init_screen0::$3 ] zp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp ZP_WORD:156 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Limited combination testing to 10 combinations of 768 possible. -Uplifting [gfx_init_screen3] best 15380556 combination reg byte a [ gfx_init_screen3::$0 ] reg byte a [ gfx_init_screen3::$2 ] zp ZP_BYTE:344 [ gfx_init_screen3::$3 ] zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] zp ZP_WORD:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] zp ZP_BYTE:342 [ gfx_init_screen3::$1 ] zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Uplifting [gfx_init_screen3] best 15380564 combination reg byte a [ gfx_init_screen3::$0 ] reg byte a [ gfx_init_screen3::$2 ] zp ZP_BYTE:345 [ gfx_init_screen3::$3 ] zp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] zp ZP_WORD:144 [ gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 ] zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Limited combination testing to 10 combinations of 768 possible. -Uplifting [gfx_init_plane_horisontal] best 15379056 combination zp ZP_WORD:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] reg byte a [ gfx_init_plane_horisontal::$5 ] reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Uplifting [gfx_init_plane_horisontal] best 15379064 combination zp ZP_WORD:77 [ gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 ] reg byte a [ gfx_init_plane_horisontal::$5 ] reg byte x [ gfx_init_plane_horisontal::ax#2 gfx_init_plane_horisontal::ax#1 ] zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Limited combination testing to 10 combinations of 16 possible. -Uplifting [gfx_init_screen1] best 15377456 combination reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte a [ gfx_init_screen1::$0 ] zp ZP_BYTE:351 [ gfx_init_screen1::$1 ] zp ZP_WORD:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Uplifting [gfx_init_screen1] best 15377464 combination reg byte x [ gfx_init_screen1::cx#2 gfx_init_screen1::cx#1 ] reg byte a [ gfx_init_screen1::$0 ] zp ZP_BYTE:352 [ gfx_init_screen1::$1 ] zp ZP_WORD:152 [ gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 ] zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [form_set_screen] best 15375356 combination reg byte y [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] zp ZP_BYTE:288 [ form_set_screen::$1 ] zp ZP_WORD:47 [ form_set_screen::line#2 form_set_screen::line#1 ] +Uplifting [form_set_screen] best 15375364 combination reg byte y [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] zp ZP_BYTE:288 [ form_set_screen::$1 ] zp ZP_WORD:47 [ form_set_screen::line#2 form_set_screen::line#1 ] Limited combination testing to 10 combinations of 48 possible. -Uplifting [gfx_init_plane_horisontal2] best 15374356 combination reg byte a [ gfx_init_plane_horisontal2::$5 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] zp ZP_WORD:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Uplifting [gfx_init_plane_horisontal2] best 15374364 combination reg byte a [ gfx_init_plane_horisontal2::$5 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] zp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] zp ZP_WORD:69 [ gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 ] zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [gfx_init_charset] best 15373456 combination zp ZP_WORD:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp ZP_WORD:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplifting [gfx_init_plane_fill] best 15372550 combination zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ] zp ZP_WORD:299 [ gfx_init_plane_fill::$4 ] zp ZP_WORD:301 [ gfx_init_plane_fill::$5 ] zp ZP_WORD:303 [ gfx_init_plane_fill::$6 ] zp ZP_DWORD:58 [ gfx_init_plane_fill::plane_addr#3 ] -Limited combination testing to 10 combinations of 32 possible. -Uplifting [bitmap_clear] best 15371650 combination zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:333 [ bitmap_clear::$3 ] -Uplifting [gfx_init_screen4] best 15370750 combination zp ZP_WORD:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Uplifting [gfx_init_plane_vertical] best 15369850 combination zp ZP_WORD:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] reg byte x [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Uplifting [print_cls] best 15369850 combination zp ZP_WORD:56 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] zp ZP_WORD:290 [ print_cls::$0 ] -Uplifting [dtvSetCpuBankSegment1] best 15369711 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] -Uplifting [keyboard_event_get] best 15368802 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] zp ZP_BYTE:281 [ keyboard_event_get::return#4 ] +Uplifting [gfx_init_charset] best 15373464 combination zp ZP_WORD:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] reg byte x [ gfx_init_charset::l#2 gfx_init_charset::l#1 ] zp ZP_WORD:133 [ gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 ] zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Uplifting [gfx_init_plane_fill] best 15372561 combination zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] reg byte x [ gfx_init_plane_fill::bx#2 gfx_init_plane_fill::bx#1 ] zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] reg byte x [ gfx_init_plane_fill::gfxbCpuBank#1 ] zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] zp ZP_DWORD:292 [ gfx_init_plane_fill::$0 ] zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] zp ZP_WORD:300 [ gfx_init_plane_fill::$4 ] zp ZP_WORD:302 [ gfx_init_plane_fill::$5 ] zp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] zp ZP_DWORD:58 [ gfx_init_plane_fill::plane_addr#3 ] +Limited combination testing to 10 combinations of 96 possible. +Uplifting [bitmap_clear] best 15371661 combination zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:334 [ bitmap_clear::$3 ] +Uplifting [gfx_init_screen4] best 15370761 combination zp ZP_WORD:139 [ gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 ] reg byte x [ gfx_init_screen4::cx#2 gfx_init_screen4::cx#1 ] zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Uplifting [gfx_init_plane_vertical] best 15369861 combination zp ZP_WORD:73 [ gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 ] reg byte x [ gfx_init_plane_vertical::bx#2 gfx_init_plane_vertical::bx#1 ] zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Uplifting [print_cls] best 15369861 combination zp ZP_WORD:56 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] zp ZP_WORD:290 [ print_cls::$0 ] +Uplifting [dtvSetCpuBankSegment1] best 15369722 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#13 dtvSetCpuBankSegment1::cpuBankIdx#1 dtvSetCpuBankSegment1::cpuBankIdx#11 ] +Uplifting [keyboard_event_get] best 15368813 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] zp ZP_BYTE:281 [ keyboard_event_get::return#4 ] Limited combination testing to 10 combinations of 64 possible. -Uplifting [bitmap_init] best 15368522 combination zp ZP_WORD:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp ZP_BYTE:335 [ bitmap_init::$0 ] zp ZP_BYTE:337 [ bitmap_init::$7 ] zp ZP_BYTE:338 [ bitmap_init::$8 ] zp ZP_BYTE:339 [ bitmap_init::$9 ] zp ZP_BYTE:340 [ bitmap_init::$10 ] zp ZP_BYTE:336 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 15368533 combination zp ZP_WORD:130 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] zp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] zp ZP_BYTE:336 [ bitmap_init::$0 ] zp ZP_BYTE:338 [ bitmap_init::$7 ] zp ZP_BYTE:339 [ bitmap_init::$8 ] zp ZP_BYTE:340 [ bitmap_init::$9 ] zp ZP_BYTE:341 [ bitmap_init::$10 ] zp ZP_BYTE:337 [ bitmap_init::$6 ] Limited combination testing to 10 combinations of 138240 possible. -Uplifting [render_preset_name] best 15368186 combination reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] zp ZP_WORD:35 [ render_preset_name::name#12 ] -Uplifting [keyboard_event_pressed] best 15368174 combination reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:250 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:252 [ keyboard_event_pressed::return#3 ] zp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] zp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] +Uplifting [render_preset_name] best 15368197 combination reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ] zp ZP_WORD:35 [ render_preset_name::name#12 ] +Uplifting [keyboard_event_pressed] best 15368185 combination reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:250 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:252 [ keyboard_event_pressed::return#3 ] zp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] zp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] Limited combination testing to 10 combinations of 147456 possible. -Uplifting [gfx_init_vic_bitmap] best 15368174 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Uplifting [get_vic_screen] best 15368153 combination reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] zp ZP_WORD:212 [ get_vic_screen::return#10 ] zp ZP_WORD:231 [ get_vic_screen::return#11 ] zp ZP_WORD:21 [ get_vic_screen::return#5 ] -Uplifting [get_plane] best 15368105 combination reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] zp ZP_DWORD:160 [ get_plane::return#16 ] zp ZP_DWORD:187 [ get_plane::return#17 ] zp ZP_DWORD:26 [ get_plane::return#14 ] -Uplifting [bitmap_line] best 15368061 combination reg byte y [ bitmap_line::y1#0 ] zp ZP_BYTE:314 [ bitmap_line::y0#0 ] zp ZP_BYTE:313 [ bitmap_line::x1#0 ] zp ZP_BYTE:312 [ bitmap_line::x0#0 ] zp ZP_BYTE:317 [ bitmap_line::yd#1 ] zp ZP_BYTE:318 [ bitmap_line::yd#0 ] zp ZP_BYTE:320 [ bitmap_line::yd#3 ] zp ZP_BYTE:321 [ bitmap_line::yd#10 ] zp ZP_BYTE:316 [ bitmap_line::xd#1 ] zp ZP_BYTE:319 [ bitmap_line::xd#0 ] +Uplifting [gfx_init_vic_bitmap] best 15368185 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Uplifting [get_vic_screen] best 15368164 combination reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ] zp ZP_WORD:212 [ get_vic_screen::return#10 ] zp ZP_WORD:231 [ get_vic_screen::return#11 ] zp ZP_WORD:21 [ get_vic_screen::return#5 ] +Uplifting [get_plane] best 15368116 combination reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ] zp ZP_DWORD:160 [ get_plane::return#16 ] zp ZP_DWORD:187 [ get_plane::return#17 ] zp ZP_DWORD:26 [ get_plane::return#14 ] +Uplifting [bitmap_line] best 15368072 combination reg byte y [ bitmap_line::y1#0 ] zp ZP_BYTE:315 [ bitmap_line::y0#0 ] zp ZP_BYTE:314 [ bitmap_line::x1#0 ] zp ZP_BYTE:313 [ bitmap_line::x0#0 ] zp ZP_BYTE:318 [ bitmap_line::yd#1 ] zp ZP_BYTE:319 [ bitmap_line::yd#0 ] zp ZP_BYTE:321 [ bitmap_line::yd#3 ] zp ZP_BYTE:322 [ bitmap_line::yd#10 ] zp ZP_BYTE:317 [ bitmap_line::xd#1 ] zp ZP_BYTE:320 [ bitmap_line::xd#0 ] Limited combination testing to 10 combinations of 186624 possible. -Uplifting [get_vic_charset] best 15368052 combination zp ZP_WORD:222 [ get_vic_charset::return#4 ] reg byte a [ get_vic_charset::idx#0 ] zp ZP_WORD:23 [ get_vic_charset::return#2 ] -Uplifting [print_ln] best 15368052 combination -Uplifting [print_set_screen] best 15368052 combination -Uplifting [keyboard_init] best 15368052 combination -Uplifting [main] best 15368052 combination -Uplifting [gfx_init] best 15368052 combination -Uplifting [gfx_init_plane_vertical2] best 15368052 combination -Uplifting [gfx_init_plane_blank] best 15368052 combination -Uplifting [gfx_init_plane_full] best 15368052 combination +Uplifting [get_vic_charset] best 15368063 combination zp ZP_WORD:222 [ get_vic_charset::return#4 ] reg byte a [ get_vic_charset::idx#0 ] zp ZP_WORD:23 [ get_vic_charset::return#2 ] +Uplifting [print_ln] best 15368063 combination +Uplifting [print_set_screen] best 15368063 combination +Uplifting [keyboard_init] best 15368063 combination +Uplifting [main] best 15368063 combination +Uplifting [gfx_init] best 15368063 combination +Uplifting [gfx_init_plane_vertical2] best 15368063 combination +Uplifting [gfx_init_plane_blank] best 15368063 combination +Uplifting [gfx_init_plane_full] best 15368063 combination Attempting to uplift remaining variables inzp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] -Uplifting [] best 15368052 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [] best 15368063 combination zp ZP_BYTE:18 [ keyboard_events_size#18 keyboard_events_size#118 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#100 keyboard_events_size#4 keyboard_events_size#119 keyboard_events_size#2 keyboard_events_size#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:256 [ keyboard_event_scan::event_type#0 ] -Uplifting [keyboard_event_scan] best 14768052 combination reg byte a [ keyboard_event_scan::event_type#0 ] +Uplifting [keyboard_event_scan] best 14768063 combination reg byte a [ keyboard_event_scan::event_type#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:257 [ keyboard_event_scan::$11 ] -Uplifting [keyboard_event_scan] best 14168052 combination reg byte a [ keyboard_event_scan::$11 ] +Uplifting [keyboard_event_scan] best 14168063 combination reg byte a [ keyboard_event_scan::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 14168052 combination zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 14168063 combination zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Uplifting [keyboard_event_scan] best 14168052 combination zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Uplifting [keyboard_event_scan] best 14168063 combination zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 14168052 combination zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 14168063 combination zp ZP_BYTE:14 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 14168052 combination zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 14168063 combination zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:262 [ keyboard_matrix_read::return#0 ] -Uplifting [keyboard_matrix_read] best 14138049 combination reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [keyboard_matrix_read] best 14138060 combination reg byte a [ keyboard_matrix_read::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] -Uplifting [form_field_ptr] best 14138049 combination zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] +Uplifting [form_field_ptr] best 14138060 combination zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] -Uplifting [form_render_values] best 14138049 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] +Uplifting [form_render_values] best 14138060 combination zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] -Uplifting [gfx_mode] best 14138049 combination zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] +Uplifting [gfx_mode] best 14138060 combination zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:88 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] -Uplifting [gfx_init_plane_charset8] best 14129049 combination reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] +Uplifting [gfx_init_plane_charset8] best 14129060 combination reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] -Uplifting [gfx_init_plane_charset8] best 14129049 combination zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] +Uplifting [gfx_init_plane_charset8] best 14129060 combination zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] -Uplifting [gfx_init_plane_charset8] best 14129049 combination zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] +Uplifting [gfx_init_plane_charset8] best 14129060 combination zp ZP_BYTE:87 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] -Uplifting [bitmap_line_xdyi] best 14129049 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] +Uplifting [bitmap_line_xdyi] best 14129060 combination zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] -Uplifting [bitmap_line_ydxi] best 14129049 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] +Uplifting [bitmap_line_ydxi] best 14129060 combination zp ZP_BYTE:110 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] -Uplifting [bitmap_line_xdyd] best 14129049 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] +Uplifting [bitmap_line_xdyd] best 14129060 combination zp ZP_BYTE:116 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] -Uplifting [bitmap_line_ydxd] best 14129049 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] +Uplifting [bitmap_line_ydxd] best 14129060 combination zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ gfx_mode::j#2 gfx_mode::j#1 ] -Uplifting [gfx_mode] best 14127849 combination reg byte y [ gfx_mode::j#2 gfx_mode::j#1 ] +Uplifting [gfx_mode] best 14127860 combination reg byte y [ gfx_mode::j#2 gfx_mode::j#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ gfx_mode::i#2 gfx_mode::i#1 ] -Uplifting [gfx_mode] best 14126649 combination reg byte y [ gfx_mode::i#2 gfx_mode::i#1 ] +Uplifting [gfx_mode] best 14126660 combination reg byte y [ gfx_mode::i#2 gfx_mode::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ form_control::return#2 ] -Uplifting [form_control] best 14125640 combination reg byte y [ form_control::return#2 ] +Uplifting [form_control] best 14125651 combination reg byte y [ form_control::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] -Uplifting [bitmap_line_xdyi] best 14125640 combination zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] +Uplifting [bitmap_line_xdyi] best 14125651 combination zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] -Uplifting [bitmap_line_xdyd] best 14125640 combination zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] +Uplifting [bitmap_line_xdyd] best 14125651 combination zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] -Uplifting [] best 14125640 combination zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] +Uplifting [] best 14125651 combination zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] -Uplifting [form_mode] best 14125640 combination zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] +Uplifting [form_mode] best 14125651 combination zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:242 [ gfx_mode::keyboard_event#0 ] -Uplifting [gfx_mode] best 14125040 combination reg byte a [ gfx_mode::keyboard_event#0 ] +Uplifting [gfx_mode] best 14125051 combination reg byte a [ gfx_mode::keyboard_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:288 [ form_set_screen::$1 ] -Uplifting [form_set_screen] best 14124440 combination reg byte a [ form_set_screen::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:344 [ gfx_init_screen3::$3 ] -Uplifting [gfx_init_screen3] best 14123840 combination reg byte a [ gfx_init_screen3::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:349 [ gfx_init_screen2::$4 ] -Uplifting [gfx_init_screen2] best 14123240 combination reg byte a [ gfx_init_screen2::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:351 [ gfx_init_screen1::$1 ] -Uplifting [gfx_init_screen1] best 14122640 combination reg byte a [ gfx_init_screen1::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:355 [ gfx_init_screen0::$3 ] -Uplifting [gfx_init_screen0] best 14122040 combination reg byte a [ gfx_init_screen0::$3 ] +Uplifting [form_set_screen] best 14124451 combination reg byte a [ form_set_screen::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:345 [ gfx_init_screen3::$3 ] +Uplifting [gfx_init_screen3] best 14123851 combination reg byte a [ gfx_init_screen3::$3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:350 [ gfx_init_screen2::$4 ] +Uplifting [gfx_init_screen2] best 14123251 combination reg byte a [ gfx_init_screen2::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:352 [ gfx_init_screen1::$1 ] +Uplifting [gfx_init_screen1] best 14122651 combination reg byte a [ gfx_init_screen1::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:356 [ gfx_init_screen0::$3 ] +Uplifting [gfx_init_screen0] best 14122051 combination reg byte a [ gfx_init_screen0::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:143 [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] -Uplifting [gfx_init_screen3] best 14121040 combination reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] +Uplifting [gfx_init_screen3] best 14121051 combination reg byte x [ gfx_init_screen3::cx#2 gfx_init_screen3::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:155 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] -Uplifting [gfx_init_screen0] best 14120040 combination reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] +Uplifting [gfx_init_screen0] best 14120051 combination reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] -Uplifting [gfx_init_plane_horisontal2] best 14119140 combination reg byte x [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] +Uplifting [gfx_init_plane_horisontal2] best 14119151 combination reg byte x [ gfx_init_plane_horisontal2::ax#2 gfx_init_plane_horisontal2::ax#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:147 [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] -Uplifting [gfx_init_screen2] best 14118140 combination reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] +Uplifting [gfx_init_screen2] best 14118151 combination reg byte x [ gfx_init_screen2::cx#2 gfx_init_screen2::cx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] -Uplifting [gfx_mode] best 14118140 combination zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] +Uplifting [gfx_mode] best 14118151 combination zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Uplifting [gfx_init_plane_charset8] best 14118140 combination zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:346 [ gfx_init_screen2::col#0 ] -Uplifting [gfx_init_screen2] best 14118040 combination reg byte y [ gfx_init_screen2::col#0 ] +Uplifting [gfx_init_plane_charset8] best 14118151 combination zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:347 [ gfx_init_screen2::col#0 ] +Uplifting [gfx_init_screen2] best 14118051 combination reg byte y [ gfx_init_screen2::col#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] -Uplifting [bitmap_line_xdyi] best 14118040 combination zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] +Uplifting [bitmap_line_xdyi] best 14118051 combination zp ZP_BYTE:100 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] -Uplifting [bitmap_line_ydxi] best 14118040 combination zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] +Uplifting [bitmap_line_ydxi] best 14118051 combination zp ZP_BYTE:109 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] -Uplifting [bitmap_line_xdyd] best 14118040 combination zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] +Uplifting [bitmap_line_xdyd] best 14118051 combination zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Uplifting [bitmap_line_ydxd] best 14118040 combination zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:342 [ gfx_init_screen3::$1 ] -Uplifting [gfx_init_screen3] best 14118040 combination zp ZP_BYTE:342 [ gfx_init_screen3::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] -Uplifting [gfx_init_screen2] best 14118040 combination zp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:353 [ gfx_init_screen0::$1 ] -Uplifting [gfx_init_screen0] best 14118040 combination zp ZP_BYTE:353 [ gfx_init_screen0::$1 ] +Uplifting [bitmap_line_ydxd] best 14118051 combination zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:343 [ gfx_init_screen3::$1 ] +Uplifting [gfx_init_screen3] best 14118051 combination zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] +Uplifting [gfx_init_screen2] best 14118051 combination zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:354 [ gfx_init_screen0::$1 ] +Uplifting [gfx_init_screen0] best 14118051 combination zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] -Uplifting [gfx_mode] best 14118021 combination reg byte y [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] +Uplifting [gfx_mode] best 14118032 combination reg byte y [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] -Uplifting [gfx_init_plane_horisontal2] best 14118021 combination zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] +Uplifting [gfx_init_plane_horisontal2] best 14118032 combination zp ZP_BYTE:68 [ gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] -Uplifting [gfx_init_screen1] best 14118021 combination zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] +Uplifting [gfx_init_screen1] best 14118032 combination zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] -Uplifting [gfx_init_screen3] best 14118021 combination zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] +Uplifting [gfx_init_screen3] best 14118032 combination zp ZP_BYTE:142 [ gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] -Uplifting [gfx_init_screen0] best 14118021 combination zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] +Uplifting [gfx_init_screen0] best 14118032 combination zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] -Uplifting [gfx_init_plane_horisontal] best 14118021 combination zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] +Uplifting [gfx_init_plane_horisontal] best 14118032 combination zp ZP_BYTE:76 [ gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] -Uplifting [gfx_init_screen2] best 14118021 combination zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] +Uplifting [gfx_init_screen2] best 14118032 combination zp ZP_BYTE:146 [ gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] -Uplifting [gfx_init_vic_bitmap] best 14118021 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] +Uplifting [gfx_init_vic_bitmap] best 14118032 combination zp ZP_BYTE:96 [ gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] -Uplifting [gfx_init_plane_8bppchunky] best 14118021 combination zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] +Uplifting [gfx_init_plane_8bppchunky] best 14118032 combination zp ZP_BYTE:90 [ gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:129 [ bitmap_init::y#2 bitmap_init::y#1 ] -Uplifting [bitmap_init] best 14117851 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:335 [ bitmap_init::$0 ] -Uplifting [bitmap_init] best 14117791 combination reg byte a [ bitmap_init::$0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:337 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 14117731 combination reg byte a [ bitmap_init::$7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:338 [ bitmap_init::$8 ] -Uplifting [bitmap_init] best 14117671 combination reg byte a [ bitmap_init::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:339 [ bitmap_init::$9 ] -Uplifting [bitmap_init] best 14117611 combination reg byte a [ bitmap_init::$9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:340 [ bitmap_init::$10 ] -Uplifting [bitmap_init] best 14117551 combination reg byte a [ bitmap_init::$10 ] +Uplifting [bitmap_init] best 14117862 combination reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:336 [ bitmap_init::$0 ] +Uplifting [bitmap_init] best 14117802 combination reg byte a [ bitmap_init::$0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:338 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 14117742 combination reg byte a [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:339 [ bitmap_init::$8 ] +Uplifting [bitmap_init] best 14117682 combination reg byte a [ bitmap_init::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:340 [ bitmap_init::$9 ] +Uplifting [bitmap_init] best 14117622 combination reg byte a [ bitmap_init::$9 ] +Attempting to uplift remaining variables inzp ZP_BYTE:341 [ bitmap_init::$10 ] +Uplifting [bitmap_init] best 14117562 combination reg byte a [ bitmap_init::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] -Uplifting [gfx_init_plane_fill] best 14117551 combination zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] +Uplifting [gfx_init_plane_fill] best 14117562 combination zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] -Uplifting [gfx_init_plane_vertical] best 14117551 combination zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] +Uplifting [gfx_init_plane_vertical] best 14117562 combination zp ZP_BYTE:72 [ gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 14117551 combination zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 14117562 combination zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] -Uplifting [gfx_init_screen4] best 14117551 combination zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] +Uplifting [gfx_init_screen4] best 14117562 combination zp ZP_BYTE:138 [ gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] -Uplifting [gfx_init_charset] best 14117551 combination zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] +Uplifting [gfx_init_charset] best 14117562 combination zp ZP_BYTE:132 [ gfx_init_charset::c#4 gfx_init_charset::c#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] -Uplifting [bitmap_line_xdyi] best 14117551 combination zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] +Uplifting [bitmap_line_xdyi] best 14117562 combination zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] -Uplifting [bitmap_line_ydxi] best 14117551 combination zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] +Uplifting [bitmap_line_ydxi] best 14117562 combination zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] -Uplifting [bitmap_line_xdyd] best 14117551 combination zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] +Uplifting [bitmap_line_xdyd] best 14117562 combination zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] -Uplifting [bitmap_line_ydxd] best 14117551 combination zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] +Uplifting [bitmap_line_ydxd] best 14117562 combination zp ZP_BYTE:118 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] -Uplifting [gfx_init_plane_charset8] best 14117551 combination zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] +Uplifting [gfx_init_plane_charset8] best 14117562 combination zp ZP_BYTE:80 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] -Uplifting [] best 14117551 combination zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] +Uplifting [] best 14117562 combination zp ZP_BYTE:15 [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] -Uplifting [bitmap_line_xdyi] best 14117551 combination zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] +Uplifting [bitmap_line_xdyi] best 14117562 combination zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] -Uplifting [bitmap_line_ydxi] best 14117551 combination zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] +Uplifting [bitmap_line_ydxi] best 14117562 combination zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] -Uplifting [bitmap_line_xdyd] best 14117551 combination zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] +Uplifting [bitmap_line_xdyd] best 14117562 combination zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] -Uplifting [bitmap_line_ydxd] best 14117551 combination zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] +Uplifting [bitmap_line_ydxd] best 14117562 combination zp ZP_BYTE:117 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] -Uplifting [gfx_mode] best 14117540 combination reg byte y [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:336 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 14117540 combination zp ZP_BYTE:336 [ bitmap_init::$6 ] +Uplifting [gfx_mode] best 14117551 combination reg byte y [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:337 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 14117551 combination zp ZP_BYTE:337 [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] -Uplifting [bitmap_line_xdyi] best 14117540 combination zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] +Uplifting [bitmap_line_xdyi] best 14117551 combination zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] -Uplifting [bitmap_line_ydxi] best 14117540 combination zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] +Uplifting [bitmap_line_ydxi] best 14117551 combination zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] -Uplifting [bitmap_line_xdyd] best 14117540 combination zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] +Uplifting [bitmap_line_xdyd] best 14117551 combination zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] -Uplifting [bitmap_line_ydxd] best 14117540 combination zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] +Uplifting [bitmap_line_ydxd] best 14117551 combination zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] -Uplifting [gfx_init_plane_fill] best 14117540 combination zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] +Uplifting [gfx_init_plane_fill] best 14117551 combination zp ZP_BYTE:62 [ gfx_init_plane_fill::fill#6 ] Attempting to uplift remaining variables inzp ZP_BYTE:158 [ gfx_mode::$29 ] -Uplifting [gfx_mode] best 14117534 combination reg byte a [ gfx_mode::$29 ] +Uplifting [gfx_mode] best 14117545 combination reg byte a [ gfx_mode::$29 ] Attempting to uplift remaining variables inzp ZP_BYTE:174 [ gfx_mode::$34 ] -Uplifting [gfx_mode] best 14117528 combination reg byte a [ gfx_mode::$34 ] +Uplifting [gfx_mode] best 14117539 combination reg byte a [ gfx_mode::$34 ] Attempting to uplift remaining variables inzp ZP_BYTE:177 [ gfx_mode::$36 ] -Uplifting [gfx_mode] best 14117522 combination reg byte a [ gfx_mode::$36 ] +Uplifting [gfx_mode] best 14117533 combination reg byte a [ gfx_mode::$36 ] Attempting to uplift remaining variables inzp ZP_BYTE:180 [ gfx_mode::$38 ] -Uplifting [gfx_mode] best 14117516 combination reg byte a [ gfx_mode::$38 ] +Uplifting [gfx_mode] best 14117527 combination reg byte a [ gfx_mode::$38 ] Attempting to uplift remaining variables inzp ZP_BYTE:181 [ gfx_mode::$39 ] -Uplifting [gfx_mode] best 14117510 combination reg byte a [ gfx_mode::$39 ] +Uplifting [gfx_mode] best 14117521 combination reg byte a [ gfx_mode::$39 ] Attempting to uplift remaining variables inzp ZP_BYTE:182 [ gfx_mode::$40 ] -Uplifting [gfx_mode] best 14117504 combination reg byte a [ gfx_mode::$40 ] +Uplifting [gfx_mode] best 14117515 combination reg byte a [ gfx_mode::$40 ] Attempting to uplift remaining variables inzp ZP_BYTE:183 [ gfx_mode::$41 ] -Uplifting [gfx_mode] best 14117498 combination reg byte a [ gfx_mode::$41 ] +Uplifting [gfx_mode] best 14117509 combination reg byte a [ gfx_mode::$41 ] Attempting to uplift remaining variables inzp ZP_BYTE:184 [ gfx_mode::$42 ] -Uplifting [gfx_mode] best 14117492 combination reg byte a [ gfx_mode::$42 ] +Uplifting [gfx_mode] best 14117503 combination reg byte a [ gfx_mode::$42 ] Attempting to uplift remaining variables inzp ZP_BYTE:185 [ gfx_mode::$43 ] -Uplifting [gfx_mode] best 14117486 combination reg byte a [ gfx_mode::$43 ] +Uplifting [gfx_mode] best 14117497 combination reg byte a [ gfx_mode::$43 ] Attempting to uplift remaining variables inzp ZP_BYTE:201 [ gfx_mode::$48 ] -Uplifting [gfx_mode] best 14117480 combination reg byte a [ gfx_mode::$48 ] +Uplifting [gfx_mode] best 14117491 combination reg byte a [ gfx_mode::$48 ] Attempting to uplift remaining variables inzp ZP_BYTE:204 [ gfx_mode::$50 ] -Uplifting [gfx_mode] best 14117474 combination reg byte a [ gfx_mode::$50 ] +Uplifting [gfx_mode] best 14117485 combination reg byte a [ gfx_mode::$50 ] Attempting to uplift remaining variables inzp ZP_BYTE:207 [ gfx_mode::$52 ] -Uplifting [gfx_mode] best 14117468 combination reg byte a [ gfx_mode::$52 ] +Uplifting [gfx_mode] best 14117479 combination reg byte a [ gfx_mode::$52 ] Attempting to uplift remaining variables inzp ZP_BYTE:208 [ gfx_mode::$53 ] -Uplifting [gfx_mode] best 14117462 combination reg byte a [ gfx_mode::$53 ] +Uplifting [gfx_mode] best 14117473 combination reg byte a [ gfx_mode::$53 ] Attempting to uplift remaining variables inzp ZP_BYTE:209 [ gfx_mode::$54 ] -Uplifting [gfx_mode] best 14117456 combination reg byte a [ gfx_mode::$54 ] +Uplifting [gfx_mode] best 14117467 combination reg byte a [ gfx_mode::$54 ] Attempting to uplift remaining variables inzp ZP_BYTE:210 [ gfx_mode::$55 ] -Uplifting [gfx_mode] best 14117450 combination reg byte a [ gfx_mode::$55 ] +Uplifting [gfx_mode] best 14117461 combination reg byte a [ gfx_mode::$55 ] Attempting to uplift remaining variables inzp ZP_BYTE:211 [ gfx_mode::$56 ] -Uplifting [gfx_mode] best 14117444 combination reg byte a [ gfx_mode::$56 ] +Uplifting [gfx_mode] best 14117455 combination reg byte a [ gfx_mode::$56 ] Attempting to uplift remaining variables inzp ZP_BYTE:228 [ gfx_mode::$69 ] -Uplifting [gfx_mode] best 14117438 combination reg byte a [ gfx_mode::$69 ] +Uplifting [gfx_mode] best 14117449 combination reg byte a [ gfx_mode::$69 ] Attempting to uplift remaining variables inzp ZP_BYTE:229 [ gfx_mode::$70 ] -Uplifting [gfx_mode] best 14117432 combination reg byte a [ gfx_mode::$70 ] +Uplifting [gfx_mode] best 14117443 combination reg byte a [ gfx_mode::$70 ] Attempting to uplift remaining variables inzp ZP_BYTE:230 [ gfx_mode::$71 ] -Uplifting [gfx_mode] best 14117426 combination reg byte a [ gfx_mode::$71 ] +Uplifting [gfx_mode] best 14117437 combination reg byte a [ gfx_mode::$71 ] Attempting to uplift remaining variables inzp ZP_BYTE:233 [ gfx_mode::$75 ] -Uplifting [gfx_mode] best 14117420 combination reg byte a [ gfx_mode::$75 ] +Uplifting [gfx_mode] best 14117431 combination reg byte a [ gfx_mode::$75 ] Attempting to uplift remaining variables inzp ZP_BYTE:234 [ gfx_mode::$76 ] -Uplifting [gfx_mode] best 14117414 combination reg byte a [ gfx_mode::$76 ] +Uplifting [gfx_mode] best 14117425 combination reg byte a [ gfx_mode::$76 ] Attempting to uplift remaining variables inzp ZP_BYTE:235 [ gfx_mode::$77 ] -Uplifting [gfx_mode] best 14117408 combination reg byte a [ gfx_mode::$77 ] +Uplifting [gfx_mode] best 14117419 combination reg byte a [ gfx_mode::$77 ] Attempting to uplift remaining variables inzp ZP_BYTE:236 [ gfx_mode::$78 ] -Uplifting [gfx_mode] best 14117402 combination reg byte a [ gfx_mode::$78 ] +Uplifting [gfx_mode] best 14117413 combination reg byte a [ gfx_mode::$78 ] Attempting to uplift remaining variables inzp ZP_BYTE:237 [ gfx_mode::$79 ] -Uplifting [gfx_mode] best 14117396 combination reg byte a [ gfx_mode::$79 ] +Uplifting [gfx_mode] best 14117407 combination reg byte a [ gfx_mode::$79 ] Attempting to uplift remaining variables inzp ZP_BYTE:238 [ gfx_mode::$80 ] -Uplifting [gfx_mode] best 14117390 combination reg byte a [ gfx_mode::$80 ] +Uplifting [gfx_mode] best 14117401 combination reg byte a [ gfx_mode::$80 ] Attempting to uplift remaining variables inzp ZP_BYTE:239 [ gfx_mode::$81 ] -Uplifting [gfx_mode] best 14117384 combination reg byte a [ gfx_mode::$81 ] +Uplifting [gfx_mode] best 14117395 combination reg byte a [ gfx_mode::$81 ] Attempting to uplift remaining variables inzp ZP_BYTE:240 [ gfx_mode::$82 ] -Uplifting [gfx_mode] best 14117378 combination reg byte a [ gfx_mode::$82 ] +Uplifting [gfx_mode] best 14117389 combination reg byte a [ gfx_mode::$82 ] Attempting to uplift remaining variables inzp ZP_BYTE:247 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 14117372 combination reg byte a [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 14117383 combination reg byte a [ keyboard_event_scan::$14 ] Attempting to uplift remaining variables inzp ZP_BYTE:249 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 14117366 combination reg byte a [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 14117377 combination reg byte a [ keyboard_event_scan::$18 ] Attempting to uplift remaining variables inzp ZP_BYTE:250 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 14117360 combination reg byte a [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 14117371 combination reg byte a [ keyboard_event_pressed::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:251 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 14117354 combination reg byte a [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 14117365 combination reg byte a [ keyboard_event_scan::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:252 [ keyboard_event_pressed::return#3 ] -Uplifting [keyboard_event_pressed] best 14117348 combination reg byte a [ keyboard_event_pressed::return#3 ] +Uplifting [keyboard_event_pressed] best 14117359 combination reg byte a [ keyboard_event_pressed::return#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:253 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 14117342 combination reg byte a [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 14117353 combination reg byte a [ keyboard_event_scan::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:258 [ keyboard_event_pressed::$0 ] -Uplifting [keyboard_event_pressed] best 14117338 combination reg byte a [ keyboard_event_pressed::$0 ] +Uplifting [keyboard_event_pressed] best 14117349 combination reg byte a [ keyboard_event_pressed::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:260 [ keyboard_event_pressed::$1 ] -Uplifting [keyboard_event_pressed] best 14117334 combination reg byte a [ keyboard_event_pressed::$1 ] +Uplifting [keyboard_event_pressed] best 14117345 combination reg byte a [ keyboard_event_pressed::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:273 [ form_field_ptr::x#0 ] -Uplifting [form_field_ptr] best 14117328 combination reg byte a [ form_field_ptr::x#0 ] +Uplifting [form_field_ptr] best 14117339 combination reg byte a [ form_field_ptr::x#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:280 [ form_control::$5 ] -Uplifting [form_control] best 14117322 combination reg byte a [ form_control::$5 ] +Uplifting [form_control] best 14117333 combination reg byte a [ form_control::$5 ] Attempting to uplift remaining variables inzp ZP_BYTE:281 [ keyboard_event_get::return#4 ] -Uplifting [keyboard_event_get] best 14117316 combination reg byte a [ keyboard_event_get::return#4 ] +Uplifting [keyboard_event_get] best 14117327 combination reg byte a [ keyboard_event_get::return#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:283 [ form_control::$11 ] -Uplifting [form_control] best 14117310 combination reg byte a [ form_control::$11 ] +Uplifting [form_control] best 14117321 combination reg byte a [ form_control::$11 ] Attempting to uplift remaining variables inzp ZP_BYTE:284 [ form_control::$12 ] -Uplifting [form_control] best 14117304 combination reg byte a [ form_control::$12 ] +Uplifting [form_control] best 14117315 combination reg byte a [ form_control::$12 ] Attempting to uplift remaining variables inzp ZP_BYTE:285 [ form_control::$22 ] -Uplifting [form_control] best 14117298 combination reg byte a [ form_control::$22 ] +Uplifting [form_control] best 14117309 combination reg byte a [ form_control::$22 ] Attempting to uplift remaining variables inzp ZP_BYTE:286 [ form_control::$6 ] -Uplifting [form_control] best 14117292 combination reg byte a [ form_control::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:329 [ bitmap_plot::$1 ] -Uplifting [bitmap_plot] best 14117286 combination reg byte a [ bitmap_plot::$1 ] +Uplifting [form_control] best 14117303 combination reg byte a [ form_control::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:330 [ bitmap_plot::$1 ] +Uplifting [bitmap_plot] best 14117297 combination reg byte a [ bitmap_plot::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:282 [ form_control::key_event#0 ] -Uplifting [form_control] best 14117274 combination reg byte a [ form_control::key_event#0 ] +Uplifting [form_control] best 14117285 combination reg byte a [ form_control::key_event#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ gfx_mode::vic_control2#2 ] -Uplifting [gfx_mode] best 14117265 combination reg byte a [ gfx_mode::vic_control2#2 ] +Uplifting [gfx_mode] best 14117276 combination reg byte a [ gfx_mode::vic_control2#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 14117265 combination zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:314 [ bitmap_line::y0#0 ] -Uplifting [bitmap_line] best 14117265 combination zp ZP_BYTE:314 [ bitmap_line::y0#0 ] +Uplifting [keyboard_event_pressed] best 14117276 combination zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:298 [ gfx_init_plane_fill::gfxbCpuBank#0 ] +Uplifting [gfx_init_plane_fill] best 14117271 combination reg byte x [ gfx_init_plane_fill::gfxbCpuBank#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:315 [ bitmap_line::y0#0 ] +Uplifting [bitmap_line] best 14117271 combination zp ZP_BYTE:315 [ bitmap_line::y0#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:261 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 14117250 combination reg byte a [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 14117256 combination reg byte a [ keyboard_event_pressed::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] -Uplifting [keyboard_event_pressed] best 14117250 combination zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:313 [ bitmap_line::x1#0 ] -Uplifting [bitmap_line] best 14117250 combination zp ZP_BYTE:313 [ bitmap_line::x1#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:312 [ bitmap_line::x0#0 ] -Uplifting [bitmap_line] best 14117250 combination zp ZP_BYTE:312 [ bitmap_line::x0#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:317 [ bitmap_line::yd#1 ] -Uplifting [bitmap_line] best 14117250 combination zp ZP_BYTE:317 [ bitmap_line::yd#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:318 [ bitmap_line::yd#0 ] -Uplifting [bitmap_line] best 14117250 combination zp ZP_BYTE:318 [ bitmap_line::yd#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:320 [ bitmap_line::yd#3 ] -Uplifting [bitmap_line] best 14117250 combination zp ZP_BYTE:320 [ bitmap_line::yd#3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:321 [ bitmap_line::yd#10 ] -Uplifting [bitmap_line] best 14117250 combination zp ZP_BYTE:321 [ bitmap_line::yd#10 ] +Uplifting [keyboard_event_pressed] best 14117256 combination zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:314 [ bitmap_line::x1#0 ] +Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:314 [ bitmap_line::x1#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:313 [ bitmap_line::x0#0 ] +Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:313 [ bitmap_line::x0#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:318 [ bitmap_line::yd#1 ] +Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:318 [ bitmap_line::yd#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:319 [ bitmap_line::yd#0 ] +Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:319 [ bitmap_line::yd#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:321 [ bitmap_line::yd#3 ] +Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:321 [ bitmap_line::yd#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:322 [ bitmap_line::yd#10 ] +Uplifting [bitmap_line] best 14117256 combination zp ZP_BYTE:322 [ bitmap_line::yd#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:159 [ gfx_mode::plane_a_offs#0 ] -Uplifting [gfx_mode] best 14117248 combination reg byte y [ gfx_mode::plane_a_offs#0 ] +Uplifting [gfx_mode] best 14117254 combination reg byte y [ gfx_mode::plane_a_offs#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:186 [ gfx_mode::plane_b_offs#0 ] -Uplifting [gfx_mode] best 14117246 combination reg byte y [ gfx_mode::plane_b_offs#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:316 [ bitmap_line::xd#1 ] -Uplifting [bitmap_line] best 14117246 combination zp ZP_BYTE:316 [ bitmap_line::xd#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:319 [ bitmap_line::xd#0 ] -Uplifting [bitmap_line] best 14117246 combination zp ZP_BYTE:319 [ bitmap_line::xd#0 ] +Uplifting [gfx_mode] best 14117252 combination reg byte y [ gfx_mode::plane_b_offs#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:317 [ bitmap_line::xd#1 ] +Uplifting [bitmap_line] best 14117252 combination zp ZP_BYTE:317 [ bitmap_line::xd#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:320 [ bitmap_line::xd#0 ] +Uplifting [bitmap_line] best 14117252 combination zp ZP_BYTE:320 [ bitmap_line::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:220 [ gfx_mode::$65 ] -Uplifting [gfx_mode] best 14117246 combination zp ZP_BYTE:220 [ gfx_mode::$65 ] +Uplifting [gfx_mode] best 14117252 combination zp ZP_BYTE:220 [ gfx_mode::$65 ] Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 ] ] with [ zp ZP_WORD:231 [ get_vic_screen::return#11 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ get_vic_screen::return#5 ] ] with [ zp ZP_WORD:212 [ get_vic_screen::return#10 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:23 [ get_vic_charset::return#2 ] ] with [ zp ZP_WORD:222 [ get_vic_charset::return#4 ] ] - score: 1 @@ -19844,17 +20738,17 @@ Coalescing zero page register with common assignment [ zp ZP_DWORD:26 [ get_plan Coalescing zero page register with common assignment [ zp ZP_DWORD:26 [ get_plane::return#14 get_plane::return#16 ] ] with [ zp ZP_DWORD:187 [ get_plane::return#17 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ render_preset_name::name#12 ] ] with [ zp ZP_WORD:37 [ print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] ] with [ zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] ] with [ zp ZP_WORD:303 [ gfx_init_plane_fill::$6 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] ] with [ zp ZP_BYTE:317 [ bitmap_line::yd#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 ] ] with [ zp ZP_BYTE:321 [ bitmap_line::yd#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] ] with [ zp ZP_BYTE:316 [ bitmap_line::xd#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#1 ] ] with [ zp ZP_BYTE:319 [ bitmap_line::xd#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] ] with [ zp ZP_BYTE:312 [ bitmap_line::x0#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] ] with [ zp ZP_BYTE:314 [ bitmap_line::y0#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] ] with [ zp ZP_BYTE:318 [ bitmap_line::yd#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 ] ] with [ zp ZP_BYTE:320 [ bitmap_line::yd#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] ] with [ zp ZP_BYTE:313 [ bitmap_line::x1#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:333 [ bitmap_clear::$3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 ] ] with [ zp ZP_WORD:304 [ gfx_init_plane_fill::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ] ] with [ zp ZP_BYTE:318 [ bitmap_line::yd#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 ] ] with [ zp ZP_BYTE:322 [ bitmap_line::yd#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ] ] with [ zp ZP_BYTE:317 [ bitmap_line::xd#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#1 ] ] with [ zp ZP_BYTE:320 [ bitmap_line::xd#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:99 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ] ] with [ zp ZP_BYTE:313 [ bitmap_line::x0#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] ] with [ zp ZP_BYTE:315 [ bitmap_line::y0#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ] ] with [ zp ZP_BYTE:319 [ bitmap_line::yd#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 ] ] with [ zp ZP_BYTE:321 [ bitmap_line::yd#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ] ] with [ zp ZP_BYTE:314 [ bitmap_line::x1#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:334 [ bitmap_clear::$3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:164 [ gfx_mode::$31 ] ] with [ zp ZP_DWORD:168 [ gfx_mode::plane_a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:191 [ gfx_mode::$45 ] ] with [ zp ZP_DWORD:195 [ gfx_mode::plane_b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:214 [ gfx_mode::$61 ] ] with [ zp ZP_WORD:216 [ gfx_mode::$63 ] ] - score: 1 @@ -19862,8 +20756,8 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:224 [ gfx_mode Coalescing zero page register with common assignment [ zp ZP_WORD:266 [ form_field_ptr::return#2 ] ] with [ zp ZP_WORD:268 [ form_render_values::field#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:266 [ form_field_ptr::return#2 form_render_values::field#0 ] ] with [ zp ZP_WORD:274 [ form_field_ptr::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:276 [ form_field_ptr::return#3 ] ] with [ zp ZP_WORD:278 [ form_control::field#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:299 [ gfx_init_plane_fill::$4 ] ] with [ zp ZP_WORD:301 [ gfx_init_plane_fill::$5 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:323 [ bitmap_plot::plotter_x#0 ] ] with [ zp ZP_WORD:327 [ bitmap_plot::$0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:300 [ gfx_init_plane_fill::$4 ] ] with [ zp ZP_WORD:302 [ gfx_init_plane_fill::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 ] ] with [ zp ZP_WORD:328 [ bitmap_plot::$0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 ] ] with [ zp ZP_BYTE:106 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#1 bitmap_line::xd#0 ] ] with [ zp ZP_BYTE:105 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#1 bitmap_line::xd#0 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 ] ] with [ zp ZP_BYTE:112 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ] ] - score: 2 @@ -19873,7 +20767,7 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ gfx_mode:: Coalescing zero page register with common assignment [ zp ZP_WORD:23 [ get_vic_charset::return#2 get_vic_charset::return#4 ] ] with [ zp ZP_WORD:224 [ gfx_mode::$66 gfx_mode::$68 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:26 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 ] ] with [ zp ZP_DWORD:164 [ gfx_mode::$31 gfx_mode::plane_a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:26 [ get_plane::return#14 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 ] ] with [ zp ZP_DWORD:191 [ gfx_mode::$45 gfx_mode::plane_b#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 ] ] with [ zp ZP_WORD:299 [ gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:64 [ gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 ] ] with [ zp ZP_WORD:300 [ gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 ] ] with [ zp ZP_BYTE:107 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 ] ] with [ zp ZP_BYTE:115 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] with [ zp ZP_BYTE:119 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] - score: 1 @@ -19899,7 +20793,7 @@ Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 key Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 ] ] with [ zp ZP_BYTE:150 [ gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 ] ] with [ zp ZP_BYTE:154 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ] with [ zp ZP_BYTE:220 [ gfx_mode::$65 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 ] ] with [ zp ZP_BYTE:336 [ bitmap_init::$6 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 ] ] with [ zp ZP_BYTE:337 [ bitmap_init::$6 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 ] ] with [ zp ZP_WORD:23 [ get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 ] ] with [ zp ZP_WORD:35 [ render_preset_name::name#12 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#12 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 ] ] with [ zp ZP_WORD:43 [ apply_preset::preset#13 ] ] @@ -19928,23 +20822,23 @@ Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode:: Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#12 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#13 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 ] ] with [ zp ZP_WORD:205 [ gfx_mode::$51 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#12 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#13 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 ] ] with [ zp ZP_WORD:266 [ form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#12 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#13 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 ] ] with [ zp ZP_WORD:296 [ gfx_init_plane_fill::$1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#12 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#13 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 gfx_init_plane_fill::$1 ] ] with [ zp ZP_WORD:323 [ bitmap_plot::plotter_x#0 bitmap_plot::$0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ gfx_mode::vic_colors#2 gfx_mode::vic_colors#3 gfx_mode::vic_colors#1 gfx_mode::vic_colors#0 get_vic_screen::return#11 get_vic_screen::return#5 get_vic_screen::return#10 gfx_mode::$61 gfx_mode::$63 gfx_mode::$64 get_vic_charset::return#2 get_vic_charset::return#4 gfx_mode::$66 gfx_mode::$68 render_preset_name::name#12 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 apply_preset::preset#13 form_set_screen::line#2 form_set_screen::line#1 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::$6 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 gfx_init_plane_horisontal2::gfxa#2 gfx_init_plane_horisontal2::gfxa#3 gfx_init_plane_horisontal2::gfxa#1 gfx_init_plane_vertical::gfxb#2 gfx_init_plane_vertical::gfxb#3 gfx_init_plane_vertical::gfxb#1 gfx_init_plane_horisontal::gfxa#3 gfx_init_plane_horisontal::gfxa#6 gfx_init_plane_horisontal::gfxa#7 gfx_init_plane_horisontal::gfxa#1 gfx_init_plane_horisontal::gfxa#2 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_plane_8bppchunky::x#2 gfx_init_plane_8bppchunky::x#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 gfx_init_charset::chargen#2 gfx_init_charset::chargen#3 gfx_init_charset::chargen#1 gfx_init_screen4::ch#2 gfx_init_screen4::ch#3 gfx_init_screen4::ch#1 gfx_init_screen3::ch#2 gfx_init_screen3::ch#3 gfx_init_screen3::ch#1 gfx_init_screen2::ch#2 gfx_init_screen2::ch#3 gfx_init_screen2::ch#1 gfx_init_screen1::ch#2 gfx_init_screen1::ch#3 gfx_init_screen1::ch#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 gfx_mode::$33 gfx_mode::$35 gfx_mode::$37 gfx_mode::$47 gfx_mode::$49 gfx_mode::$51 form_field_ptr::return#2 form_render_values::field#0 form_field_ptr::return#0 form_field_ptr::$2 form_field_ptr::return#3 form_control::field#0 gfx_init_plane_fill::$1 ] ] with [ zp ZP_WORD:324 [ bitmap_plot::plotter_x#0 bitmap_plot::$0 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 ] ] with [ zp ZP_WORD:39 [ print_str_at::at#2 print_str_at::at#0 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 ] ] with [ zp ZP_WORD:52 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 ] ] with [ zp ZP_WORD:85 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] ] with [ zp ZP_WORD:94 [ gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 ] ] with [ zp ZP_WORD:135 [ gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] ] Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 ] ] with [ zp ZP_WORD:290 [ print_cls::$0 ] ] -Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 print_cls::$0 ] ] with [ zp ZP_WORD:325 [ bitmap_plot::plotter_y#0 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ gfx_mode::col#2 gfx_mode::col#3 gfx_mode::col#1 print_str_at::at#2 print_str_at::at#0 print_char_cursor#20 print_char_cursor#22 print_char_cursor#77 print_char_cursor#78 print_char_cursor#38 print_char_cursor#1 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 gfx_init_plane_8bppchunky::gfxb#4 gfx_init_plane_8bppchunky::gfxb#3 gfx_init_plane_8bppchunky::gfxb#5 gfx_init_plane_8bppchunky::gfxb#1 gfx_init_charset::charset#2 gfx_init_charset::charset#3 gfx_init_charset::charset#1 print_cls::$0 ] ] with [ zp ZP_WORD:326 [ bitmap_plot::plotter_y#0 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 ] ] with [ zp ZP_BYTE:16 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] ] with [ zp ZP_BYTE:19 [ keyboard_event_pressed::keycode#4 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 ] ] with [ zp ZP_BYTE:63 [ gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 ] ] with [ zp ZP_BYTE:83 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ] with [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] with [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] with [ zp ZP_BYTE:342 [ gfx_init_screen3::$1 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 ] ] with [ zp ZP_BYTE:347 [ gfx_init_screen2::col2#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 ] ] with [ zp ZP_BYTE:353 [ gfx_init_screen0::$1 ] ] +Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] with [ zp ZP_BYTE:343 [ gfx_init_screen3::$1 ] ] +Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 ] ] with [ zp ZP_BYTE:348 [ gfx_init_screen2::col2#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:10 [ gfx_mode::cx#2 gfx_mode::cx#1 keyboard_event_scan::col#2 keyboard_event_scan::col#1 keyboard_event_pressed::keycode#4 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 ] ] with [ zp ZP_BYTE:354 [ gfx_init_screen0::$1 ] ] Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:84 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] ] with [ zp ZP_BYTE:98 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#1 bitmap_line::xd#0 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] Coalescing zero page register [ zp ZP_BYTE:17 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#1 bitmap_line::xd#0 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] ] with [ zp ZP_BYTE:259 [ keyboard_event_pressed::row_bits#0 ] ] @@ -19959,7 +20853,7 @@ Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 ] ] with [ zp ZP_BYTE:114 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] Coalescing zero page register [ zp ZP_BYTE:31 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#6 bitmap_line_xdyi::x#1 bitmap_line_xdyi::x#0 bitmap_line_xdyi::x#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] with [ zp ZP_BYTE:121 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] ] Coalescing zero page register [ zp ZP_BYTE:33 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 ] ] with [ zp ZP_BYTE:101 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line::y0#0 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#0 bitmap_line_ydxi::y1#1 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ] ] -Coalescing zero page register [ zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] ] with [ zp ZP_WORD:309 [ gfx_init_plane_8bppchunky::$6 ] ] +Coalescing zero page register [ zp ZP_WORD:54 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] ] with [ zp ZP_WORD:310 [ gfx_init_plane_8bppchunky::$6 ] ] Coalescing zero page register [ zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] with [ zp ZP_BYTE:113 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line::x1#0 ] ] Coalescing zero page register [ zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 bitmap_line::x1#0 ] ] with [ zp ZP_BYTE:245 [ keyboard_event_scan::row_scan#0 ] ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:2 [ gfx_mode::cy#4 gfx_mode::cy#1 keyboard_event_scan::row#2 keyboard_event_scan::row#1 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 form_render_values::idx#2 form_render_values::idx#1 form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 gfx_init_plane_fill::fill#6 gfx_init_plane_horisontal2::ay#4 gfx_init_plane_horisontal2::ay#1 gfx_init_plane_vertical::by#4 gfx_init_plane_vertical::by#1 gfx_init_plane_horisontal::ay#4 gfx_init_plane_horisontal::ay#1 gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_plane_8bppchunky::y#6 gfx_init_plane_8bppchunky::y#1 gfx_init_vic_bitmap::l#2 gfx_init_vic_bitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 gfx_init_charset::c#4 gfx_init_charset::c#1 gfx_init_screen4::cy#4 gfx_init_screen4::cy#1 gfx_init_screen3::cy#4 gfx_init_screen3::cy#1 gfx_init_screen2::cy#4 gfx_init_screen2::cy#1 gfx_init_screen1::cy#4 gfx_init_screen1::cy#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 gfx_mode::$65 bitmap_init::$6 ] @@ -20109,15 +21003,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label form_cursor_count = $e //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @67 [phi:@begin->@67] -b67_from_bbegin: - jmp b67 -//SEG4 @67 -b67: +//SEG3 [1] phi from @begin to @68 [phi:@begin->@68] +b68_from_bbegin: + jmp b68 +//SEG4 @68 +b68: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @67 to @end [phi:@67->@end] -bend_from_b67: +//SEG6 [3] phi from @68 to @end [phi:@68->@end] +bend_from_b68: jmp bend //SEG7 @end bend: @@ -22795,7 +23689,7 @@ print_set_screen: { //SEG892 gfx_init gfx_init: { //SEG893 [450] call gfx_init_screen0 - //SEG894 [847] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG894 [848] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] gfx_init_screen0_from_gfx_init: jsr gfx_init_screen0 //SEG895 [451] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] @@ -22804,7 +23698,7 @@ gfx_init: { //SEG896 gfx_init::@1 b1: //SEG897 [452] call gfx_init_screen1 - //SEG898 [835] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] + //SEG898 [836] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] gfx_init_screen1_from_b1: jsr gfx_init_screen1 //SEG899 [453] phi from gfx_init::@1 to gfx_init::@2 [phi:gfx_init::@1->gfx_init::@2] @@ -22813,7 +23707,7 @@ gfx_init: { //SEG900 gfx_init::@2 b2: //SEG901 [454] call gfx_init_screen2 - //SEG902 [820] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] + //SEG902 [821] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] gfx_init_screen2_from_b2: jsr gfx_init_screen2 //SEG903 [455] phi from gfx_init::@2 to gfx_init::@3 [phi:gfx_init::@2->gfx_init::@3] @@ -22822,7 +23716,7 @@ gfx_init: { //SEG904 gfx_init::@3 b3: //SEG905 [456] call gfx_init_screen3 - //SEG906 [806] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] + //SEG906 [807] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] gfx_init_screen3_from_b3: jsr gfx_init_screen3 //SEG907 [457] phi from gfx_init::@3 to gfx_init::@4 [phi:gfx_init::@3->gfx_init::@4] @@ -22831,7 +23725,7 @@ gfx_init: { //SEG908 gfx_init::@4 b4: //SEG909 [458] call gfx_init_screen4 - //SEG910 [796] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] + //SEG910 [797] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] gfx_init_screen4_from_b4: jsr gfx_init_screen4 //SEG911 [459] phi from gfx_init::@4 to gfx_init::@5 [phi:gfx_init::@4->gfx_init::@5] @@ -22847,7 +23741,7 @@ gfx_init: { //SEG915 gfx_init::@6 b6: //SEG916 [462] call gfx_init_vic_bitmap - //SEG917 [605] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] + //SEG917 [606] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] gfx_init_vic_bitmap_from_b6: jsr gfx_init_vic_bitmap //SEG918 [463] phi from gfx_init::@6 to gfx_init::@7 [phi:gfx_init::@6->gfx_init::@7] @@ -22856,7 +23750,7 @@ gfx_init: { //SEG919 gfx_init::@7 b7: //SEG920 [464] call gfx_init_plane_8bppchunky - //SEG921 [585] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] + //SEG921 [586] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] gfx_init_plane_8bppchunky_from_b7: jsr gfx_init_plane_8bppchunky //SEG922 [465] phi from gfx_init::@7 to gfx_init::@8 [phi:gfx_init::@7->gfx_init::@8] @@ -22865,7 +23759,7 @@ gfx_init: { //SEG923 gfx_init::@8 b8: //SEG924 [466] call gfx_init_plane_charset8 - //SEG925 [560] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] + //SEG925 [561] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] gfx_init_plane_charset8_from_b8: jsr gfx_init_plane_charset8 //SEG926 [467] phi from gfx_init::@8 to gfx_init::@9 [phi:gfx_init::@8->gfx_init::@9] @@ -22874,7 +23768,7 @@ gfx_init: { //SEG927 gfx_init::@9 b9: //SEG928 [468] call gfx_init_plane_horisontal - //SEG929 [542] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] + //SEG929 [543] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] gfx_init_plane_horisontal_from_b9: jsr gfx_init_plane_horisontal //SEG930 [469] phi from gfx_init::@9 to gfx_init::@10 [phi:gfx_init::@9->gfx_init::@10] @@ -22883,7 +23777,7 @@ gfx_init: { //SEG931 gfx_init::@10 b10: //SEG932 [470] call gfx_init_plane_vertical - //SEG933 [529] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] + //SEG933 [530] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] gfx_init_plane_vertical_from_b10: jsr gfx_init_plane_vertical //SEG934 [471] phi from gfx_init::@10 to gfx_init::@11 [phi:gfx_init::@10->gfx_init::@11] @@ -22892,7 +23786,7 @@ gfx_init: { //SEG935 gfx_init::@11 b11: //SEG936 [472] call gfx_init_plane_horisontal2 - //SEG937 [514] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] + //SEG937 [515] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] gfx_init_plane_horisontal2_from_b11: jsr gfx_init_plane_horisontal2 //SEG938 [473] phi from gfx_init::@11 to gfx_init::@12 [phi:gfx_init::@11->gfx_init::@12] @@ -22901,7 +23795,7 @@ gfx_init: { //SEG939 gfx_init::@12 b12: //SEG940 [474] call gfx_init_plane_vertical2 - //SEG941 [511] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] + //SEG941 [512] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] gfx_init_plane_vertical2_from_b12: jsr gfx_init_plane_vertical2 //SEG942 [475] phi from gfx_init::@12 to gfx_init::@13 [phi:gfx_init::@12->gfx_init::@13] @@ -22910,7 +23804,7 @@ gfx_init: { //SEG943 gfx_init::@13 b13: //SEG944 [476] call gfx_init_plane_blank - //SEG945 [508] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] + //SEG945 [509] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] gfx_init_plane_blank_from_b13: jsr gfx_init_plane_blank //SEG946 [477] phi from gfx_init::@13 to gfx_init::@14 [phi:gfx_init::@13->gfx_init::@14] @@ -22985,31 +23879,34 @@ gfx_init_plane_fill: { sta _1 lda _0+3 sta _1+1 - //SEG962 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuaa=_lo_vwuz1 + //SEG962 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuxx=_lo_vwuz1 lda _1 - //SEG963 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 - // (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 = (byte) gfx_init_plane_fill::gfxbCpuBank#0 // register copy reg byte a + tax + //SEG963 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuaa=vbuxx + txa //SEG964 [488] call dtvSetCpuBankSegment1 - //SEG965 [504] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] + //SEG965 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_fill: - //SEG966 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy + //SEG966 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b5 //SEG967 gfx_init_plane_fill::@5 b5: - //SEG968 [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 -- vwuz1=_lo_vduz2 + //SEG968 [489] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuxx=_inc_vbuxx + inx + //SEG969 [490] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 -- vwuz1=_lo_vduz2 lda plane_addr sta _4 lda plane_addr+1 sta _4+1 - //SEG969 [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 + //SEG970 [491] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 lda _5 and #<$3fff sta _5 lda _5+1 and #>$3fff sta _5+1 - //SEG970 [491] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 -- vwuz1=vwuc1_plus_vwuz1 + //SEG971 [492] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 -- vwuz1=vwuc1_plus_vwuz1 clc lda _6 adc #<$4000 @@ -23017,99 +23914,99 @@ gfx_init_plane_fill: { lda _6+1 adc #>$4000 sta _6+1 - //SEG971 [492] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 + //SEG972 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 // (byte*~) gfx_init_plane_fill::gfxb#6 = (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 // register copy zp ZP_WORD:3 - //SEG972 [493] phi from gfx_init_plane_fill::@5 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1] + //SEG973 [494] phi from gfx_init_plane_fill::@5 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1] b1_from_b5: - //SEG973 [493] phi (byte) gfx_init_plane_fill::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#0] -- vbuz1=vbuc1 + //SEG974 [494] phi (byte) gfx_init_plane_fill::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG974 [493] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*~) gfx_init_plane_fill::gfxb#6 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#1] -- register_copy + //SEG975 [494] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*~) gfx_init_plane_fill::gfxb#6 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#1] -- register_copy jmp b1 - //SEG975 [493] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1] + //SEG976 [494] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1] b1_from_b3: - //SEG976 [493] phi (byte) gfx_init_plane_fill::by#4 = (byte) gfx_init_plane_fill::by#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#0] -- register_copy - //SEG977 [493] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#1] -- register_copy + //SEG977 [494] phi (byte) gfx_init_plane_fill::by#4 = (byte) gfx_init_plane_fill::by#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#0] -- register_copy + //SEG978 [494] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#1] -- register_copy jmp b1 - //SEG978 gfx_init_plane_fill::@1 + //SEG979 gfx_init_plane_fill::@1 b1: - //SEG979 [494] phi from gfx_init_plane_fill::@1 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2] + //SEG980 [495] phi from gfx_init_plane_fill::@1 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2] b2_from_b1: - //SEG980 [494] phi (byte) gfx_init_plane_fill::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#0] -- vbuxx=vbuc1 + //SEG981 [495] phi (byte) gfx_init_plane_fill::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG981 [494] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#3 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#1] -- register_copy + //SEG982 [495] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#3 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#1] -- register_copy jmp b2 - //SEG982 [494] phi from gfx_init_plane_fill::@2 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2] + //SEG983 [495] phi from gfx_init_plane_fill::@2 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2] b2_from_b2: - //SEG983 [494] phi (byte) gfx_init_plane_fill::bx#2 = (byte) gfx_init_plane_fill::bx#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#0] -- register_copy - //SEG984 [494] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#1] -- register_copy + //SEG984 [495] phi (byte) gfx_init_plane_fill::bx#2 = (byte) gfx_init_plane_fill::bx#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#0] -- register_copy + //SEG985 [495] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#1] -- register_copy jmp b2 - //SEG985 gfx_init_plane_fill::@2 + //SEG986 gfx_init_plane_fill::@2 b2: - //SEG986 [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 + //SEG987 [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 lda fill ldy #0 sta (gfxb),y - //SEG987 [496] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG988 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG988 [497] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx + //SEG989 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG989 [498] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG990 [499] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG990 gfx_init_plane_fill::@3 + //SEG991 gfx_init_plane_fill::@3 b3: - //SEG991 [499] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 + //SEG992 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG992 [500] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG993 [501] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b1_from_b3 - //SEG993 [501] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@4 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@4] + //SEG994 [502] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@4 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@4] b4_from_b3: jmp b4 - //SEG994 gfx_init_plane_fill::@4 + //SEG995 gfx_init_plane_fill::@4 b4: - //SEG995 [502] call dtvSetCpuBankSegment1 - //SEG996 [504] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] + //SEG996 [503] call dtvSetCpuBankSegment1 + //SEG997 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG997 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG998 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 jmp breturn - //SEG998 gfx_init_plane_fill::@return + //SEG999 gfx_init_plane_fill::@return breturn: - //SEG999 [503] return + //SEG1000 [504] return rts } -//SEG1000 dtvSetCpuBankSegment1 +//SEG1001 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG1001 [505] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa + //SEG1002 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG1002 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG1003 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 jmp breturn - //SEG1003 dtvSetCpuBankSegment1::@return + //SEG1004 dtvSetCpuBankSegment1::@return breturn: - //SEG1004 [507] return + //SEG1005 [508] return rts } -//SEG1005 gfx_init_plane_blank +//SEG1006 gfx_init_plane_blank gfx_init_plane_blank: { - //SEG1006 [509] call gfx_init_plane_fill - //SEG1007 [483] phi from gfx_init_plane_blank to gfx_init_plane_fill [phi:gfx_init_plane_blank->gfx_init_plane_fill] + //SEG1007 [510] call gfx_init_plane_fill + //SEG1008 [483] phi from gfx_init_plane_blank to gfx_init_plane_fill [phi:gfx_init_plane_blank->gfx_init_plane_fill] gfx_init_plane_fill_from_gfx_init_plane_blank: - //SEG1008 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG1009 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #0 sta gfx_init_plane_fill.fill - //SEG1009 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_BLANK#0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG1010 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_BLANK#0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_BLANK @@ -23120,20 +24017,20 @@ gfx_init_plane_blank: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1010 gfx_init_plane_blank::@return + //SEG1011 gfx_init_plane_blank::@return breturn: - //SEG1011 [510] return + //SEG1012 [511] return rts } -//SEG1012 gfx_init_plane_vertical2 +//SEG1013 gfx_init_plane_vertical2 gfx_init_plane_vertical2: { - //SEG1013 [512] call gfx_init_plane_fill - //SEG1014 [483] phi from gfx_init_plane_vertical2 to gfx_init_plane_fill [phi:gfx_init_plane_vertical2->gfx_init_plane_fill] + //SEG1014 [513] call gfx_init_plane_fill + //SEG1015 [483] phi from gfx_init_plane_vertical2 to gfx_init_plane_fill [phi:gfx_init_plane_vertical2->gfx_init_plane_fill] gfx_init_plane_fill_from_gfx_init_plane_vertical2: - //SEG1015 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 27 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG1016 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 27 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #$1b sta gfx_init_plane_fill.fill - //SEG1016 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_VERTICAL2#0 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG1017 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_VERTICAL2#0 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_VERTICAL2 @@ -23144,293 +24041,293 @@ gfx_init_plane_vertical2: { sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill jmp breturn - //SEG1017 gfx_init_plane_vertical2::@return + //SEG1018 gfx_init_plane_vertical2::@return breturn: - //SEG1018 [513] return + //SEG1019 [514] return rts } -//SEG1019 gfx_init_plane_horisontal2 +//SEG1020 gfx_init_plane_horisontal2 gfx_init_plane_horisontal2: { .const gfxbCpuBank = PLANE_HORISONTAL2/$4000 .label gfxa = 3 .label ay = 2 - //SEG1020 [515] call dtvSetCpuBankSegment1 - //SEG1021 [504] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] + //SEG1021 [516] call dtvSetCpuBankSegment1 + //SEG1022 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal2: - //SEG1022 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1023 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG1023 [516] phi from gfx_init_plane_horisontal2 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1] + //SEG1024 [517] phi from gfx_init_plane_horisontal2 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1] b1_from_gfx_init_plane_horisontal2: - //SEG1024 [516] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#0] -- pbuz1=pbuc1 + //SEG1025 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#0] -- pbuz1=pbuc1 lda #<$4000+(PLANE_HORISONTAL2&$3fff) sta gfxa lda #>$4000+(PLANE_HORISONTAL2&$3fff) sta gfxa+1 - //SEG1025 [516] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#1] -- vbuz1=vbuc1 + //SEG1026 [517] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b1 - //SEG1026 [516] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1] + //SEG1027 [517] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1] b1_from_b3: - //SEG1027 [516] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#0] -- register_copy - //SEG1028 [516] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte) gfx_init_plane_horisontal2::ay#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#1] -- register_copy + //SEG1028 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#0] -- register_copy + //SEG1029 [517] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte) gfx_init_plane_horisontal2::ay#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#1] -- register_copy jmp b1 - //SEG1029 gfx_init_plane_horisontal2::@1 + //SEG1030 gfx_init_plane_horisontal2::@1 b1: - //SEG1030 [517] phi from gfx_init_plane_horisontal2::@1 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2] + //SEG1031 [518] phi from gfx_init_plane_horisontal2::@1 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2] b2_from_b1: - //SEG1031 [517] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#0] -- vbuxx=vbuc1 + //SEG1032 [518] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1032 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#3 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#1] -- register_copy + //SEG1033 [518] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#3 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#1] -- register_copy jmp b2 - //SEG1033 [517] phi from gfx_init_plane_horisontal2::@2 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2] + //SEG1034 [518] phi from gfx_init_plane_horisontal2::@2 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2] b2_from_b2: - //SEG1034 [517] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte) gfx_init_plane_horisontal2::ax#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#0] -- register_copy - //SEG1035 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#1] -- register_copy + //SEG1035 [518] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte) gfx_init_plane_horisontal2::ax#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#0] -- register_copy + //SEG1036 [518] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#1] -- register_copy jmp b2 - //SEG1036 gfx_init_plane_horisontal2::@2 + //SEG1037 gfx_init_plane_horisontal2::@2 b2: - //SEG1037 [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 + //SEG1038 [519] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 lda ay lsr - //SEG1038 [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 + //SEG1039 [520] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 and #3 - //SEG1039 [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG1040 [521] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG1040 [521] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1041 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1041 [522] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx + //SEG1042 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG1042 [523] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1043 [524] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG1043 gfx_init_plane_horisontal2::@3 + //SEG1044 gfx_init_plane_horisontal2::@3 b3: - //SEG1044 [524] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1045 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG1045 [525] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1046 [526] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b1_from_b3 - //SEG1046 [526] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@4 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@4] + //SEG1047 [527] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@4 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@4] b4_from_b3: jmp b4 - //SEG1047 gfx_init_plane_horisontal2::@4 + //SEG1048 gfx_init_plane_horisontal2::@4 b4: - //SEG1048 [527] call dtvSetCpuBankSegment1 - //SEG1049 [504] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] + //SEG1049 [528] call dtvSetCpuBankSegment1 + //SEG1050 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1050 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1051 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1051 gfx_init_plane_horisontal2::@return + //SEG1052 gfx_init_plane_horisontal2::@return breturn: - //SEG1052 [528] return + //SEG1053 [529] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG1053 gfx_init_plane_vertical +//SEG1054 gfx_init_plane_vertical gfx_init_plane_vertical: { .const gfxbCpuBank = PLANE_VERTICAL/$4000 .label gfxb = 3 .label by = 2 - //SEG1054 [530] call dtvSetCpuBankSegment1 - //SEG1055 [504] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] + //SEG1055 [531] call dtvSetCpuBankSegment1 + //SEG1056 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_vertical: - //SEG1056 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1057 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG1057 [531] phi from gfx_init_plane_vertical to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1] + //SEG1058 [532] phi from gfx_init_plane_vertical to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1] b1_from_gfx_init_plane_vertical: - //SEG1058 [531] phi (byte) gfx_init_plane_vertical::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#0] -- vbuz1=vbuc1 + //SEG1059 [532] phi (byte) gfx_init_plane_vertical::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG1059 [531] phi (byte*) gfx_init_plane_vertical::gfxb#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#1] -- pbuz1=pbuc1 + //SEG1060 [532] phi (byte*) gfx_init_plane_vertical::gfxb#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#1] -- pbuz1=pbuc1 lda #<$4000+(PLANE_VERTICAL&$3fff) sta gfxb lda #>$4000+(PLANE_VERTICAL&$3fff) sta gfxb+1 jmp b1 - //SEG1060 [531] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1] + //SEG1061 [532] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1] b1_from_b3: - //SEG1061 [531] phi (byte) gfx_init_plane_vertical::by#4 = (byte) gfx_init_plane_vertical::by#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#0] -- register_copy - //SEG1062 [531] phi (byte*) gfx_init_plane_vertical::gfxb#3 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#1] -- register_copy + //SEG1062 [532] phi (byte) gfx_init_plane_vertical::by#4 = (byte) gfx_init_plane_vertical::by#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#0] -- register_copy + //SEG1063 [532] phi (byte*) gfx_init_plane_vertical::gfxb#3 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#1] -- register_copy jmp b1 - //SEG1063 gfx_init_plane_vertical::@1 + //SEG1064 gfx_init_plane_vertical::@1 b1: - //SEG1064 [532] phi from gfx_init_plane_vertical::@1 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2] + //SEG1065 [533] phi from gfx_init_plane_vertical::@1 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2] b2_from_b1: - //SEG1065 [532] phi (byte) gfx_init_plane_vertical::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#0] -- vbuxx=vbuc1 + //SEG1066 [533] phi (byte) gfx_init_plane_vertical::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1066 [532] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#3 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#1] -- register_copy + //SEG1067 [533] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#3 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#1] -- register_copy jmp b2 - //SEG1067 [532] phi from gfx_init_plane_vertical::@2 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2] + //SEG1068 [533] phi from gfx_init_plane_vertical::@2 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2] b2_from_b2: - //SEG1068 [532] phi (byte) gfx_init_plane_vertical::bx#2 = (byte) gfx_init_plane_vertical::bx#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#0] -- register_copy - //SEG1069 [532] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#1] -- register_copy + //SEG1069 [533] phi (byte) gfx_init_plane_vertical::bx#2 = (byte) gfx_init_plane_vertical::bx#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#0] -- register_copy + //SEG1070 [533] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#1] -- register_copy jmp b2 - //SEG1070 gfx_init_plane_vertical::@2 + //SEG1071 gfx_init_plane_vertical::@2 b2: - //SEG1071 [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG1072 [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 lda #$f ldy #0 sta (gfxb),y - //SEG1072 [534] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG1073 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1073 [535] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx + //SEG1074 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG1074 [536] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1075 [537] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG1075 gfx_init_plane_vertical::@3 + //SEG1076 gfx_init_plane_vertical::@3 b3: - //SEG1076 [537] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 + //SEG1077 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG1077 [538] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1078 [539] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b1_from_b3 - //SEG1078 [539] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@4 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@4] + //SEG1079 [540] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@4 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@4] b4_from_b3: jmp b4 - //SEG1079 gfx_init_plane_vertical::@4 + //SEG1080 gfx_init_plane_vertical::@4 b4: - //SEG1080 [540] call dtvSetCpuBankSegment1 - //SEG1081 [504] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] + //SEG1081 [541] call dtvSetCpuBankSegment1 + //SEG1082 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1082 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1083 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1083 gfx_init_plane_vertical::@return + //SEG1084 gfx_init_plane_vertical::@return breturn: - //SEG1084 [541] return + //SEG1085 [542] return rts } -//SEG1085 gfx_init_plane_horisontal +//SEG1086 gfx_init_plane_horisontal gfx_init_plane_horisontal: { .const gfxbCpuBank = PLANE_HORISONTAL/$4000 .label gfxa = 3 .label ay = 2 - //SEG1086 [543] call dtvSetCpuBankSegment1 - //SEG1087 [504] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] + //SEG1087 [544] call dtvSetCpuBankSegment1 + //SEG1088 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_horisontal: - //SEG1088 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1089 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG1089 [544] phi from gfx_init_plane_horisontal to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1] + //SEG1090 [545] phi from gfx_init_plane_horisontal to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1] b1_from_gfx_init_plane_horisontal: - //SEG1090 [544] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#0] -- pbuz1=pbuc1 + //SEG1091 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#0] -- pbuz1=pbuc1 lda #<$4000+(PLANE_HORISONTAL&$3fff) sta gfxa lda #>$4000+(PLANE_HORISONTAL&$3fff) sta gfxa+1 - //SEG1091 [544] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#1] -- vbuz1=vbuc1 + //SEG1092 [545] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#1] -- vbuz1=vbuc1 lda #0 sta ay jmp b1 - //SEG1092 [544] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1] + //SEG1093 [545] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1] b1_from_b7: - //SEG1093 [544] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#0] -- register_copy - //SEG1094 [544] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte) gfx_init_plane_horisontal::ay#1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#1] -- register_copy + //SEG1094 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#0] -- register_copy + //SEG1095 [545] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte) gfx_init_plane_horisontal::ay#1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#1] -- register_copy jmp b1 - //SEG1095 gfx_init_plane_horisontal::@1 + //SEG1096 gfx_init_plane_horisontal::@1 b1: - //SEG1096 [545] phi from gfx_init_plane_horisontal::@1 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2] + //SEG1097 [546] phi from gfx_init_plane_horisontal::@1 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2] b2_from_b1: - //SEG1097 [545] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#0] -- vbuxx=vbuc1 + //SEG1098 [546] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1098 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#6 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#1] -- register_copy + //SEG1099 [546] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#6 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#1] -- register_copy jmp b2 - //SEG1099 [545] phi from gfx_init_plane_horisontal::@4 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2] + //SEG1100 [546] phi from gfx_init_plane_horisontal::@4 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2] b2_from_b4: - //SEG1100 [545] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#1 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#0] -- register_copy - //SEG1101 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#1] -- register_copy + //SEG1101 [546] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#1 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#0] -- register_copy + //SEG1102 [546] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#1] -- register_copy jmp b2 - //SEG1102 gfx_init_plane_horisontal::@2 + //SEG1103 gfx_init_plane_horisontal::@2 b2: - //SEG1103 [546] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 + //SEG1104 [547] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 lda #4 and ay - //SEG1104 [547] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 -- vbuaa_eq_0_then_la1 + //SEG1105 [548] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 jmp b5 - //SEG1105 gfx_init_plane_horisontal::@5 + //SEG1106 gfx_init_plane_horisontal::@5 b5: - //SEG1106 [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG1107 [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 lda #$ff ldy #0 sta (gfxa),y - //SEG1107 [549] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1108 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1108 [550] phi from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 to gfx_init_plane_horisontal::@4 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4] + //SEG1109 [551] phi from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 to gfx_init_plane_horisontal::@4 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4] b4_from_b3: b4_from_b5: - //SEG1109 [550] phi (byte*) gfx_init_plane_horisontal::gfxa#7 = (byte*) gfx_init_plane_horisontal::gfxa#1 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4#0] -- register_copy + //SEG1110 [551] phi (byte*) gfx_init_plane_horisontal::gfxa#7 = (byte*) gfx_init_plane_horisontal::gfxa#1 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4#0] -- register_copy jmp b4 - //SEG1110 gfx_init_plane_horisontal::@4 + //SEG1111 gfx_init_plane_horisontal::@4 b4: - //SEG1111 [551] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx + //SEG1112 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG1112 [552] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1113 [553] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b4 jmp b7 - //SEG1113 gfx_init_plane_horisontal::@7 + //SEG1114 gfx_init_plane_horisontal::@7 b7: - //SEG1114 [553] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1115 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG1115 [554] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1116 [555] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b1_from_b7 - //SEG1116 [555] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@8 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@8] + //SEG1117 [556] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@8 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@8] b8_from_b7: jmp b8 - //SEG1117 gfx_init_plane_horisontal::@8 + //SEG1118 gfx_init_plane_horisontal::@8 b8: - //SEG1118 [556] call dtvSetCpuBankSegment1 - //SEG1119 [504] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] + //SEG1119 [557] call dtvSetCpuBankSegment1 + //SEG1120 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG1120 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1121 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1121 gfx_init_plane_horisontal::@return + //SEG1122 gfx_init_plane_horisontal::@return breturn: - //SEG1122 [557] return + //SEG1123 [558] return rts - //SEG1123 gfx_init_plane_horisontal::@3 + //SEG1124 gfx_init_plane_horisontal::@3 b3: - //SEG1124 [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1125 [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (gfxa),y - //SEG1125 [559] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1126 [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: jmp b4_from_b3 } -//SEG1126 gfx_init_plane_charset8 +//SEG1127 gfx_init_plane_charset8 gfx_init_plane_charset8: { .const gfxbCpuBank = PLANE_CHARSET8/$4000 .label bits = 8 @@ -23439,217 +24336,217 @@ gfx_init_plane_charset8: { .label col = 9 .label cr = 7 .label ch = 2 - //SEG1127 [561] call dtvSetCpuBankSegment1 - //SEG1128 [504] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG1128 [562] call dtvSetCpuBankSegment1 + //SEG1129 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_charset8: - //SEG1129 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1130 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 jmp b9 - //SEG1130 gfx_init_plane_charset8::@9 + //SEG1131 gfx_init_plane_charset8::@9 b9: - //SEG1131 [562] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG1132 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG1132 [563] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] + //SEG1133 [564] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] b1_from_b9: - //SEG1133 [563] phi (byte) gfx_init_plane_charset8::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#0] -- vbuz1=vbuc1 + //SEG1134 [564] phi (byte) gfx_init_plane_charset8::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#0] -- vbuz1=vbuc1 lda #0 sta ch - //SEG1134 [563] phi (byte) gfx_init_plane_charset8::col#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#1] -- vbuz1=vbuc1 + //SEG1135 [564] phi (byte) gfx_init_plane_charset8::col#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#1] -- vbuz1=vbuc1 lda #0 sta col - //SEG1135 [563] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 + //SEG1136 [564] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 lda #<$4000+(PLANE_CHARSET8&$3fff) sta gfxa lda #>$4000+(PLANE_CHARSET8&$3fff) sta gfxa+1 - //SEG1136 [563] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 + //SEG1137 [564] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG1137 [563] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] + //SEG1138 [564] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] b1_from_b7: - //SEG1138 [563] phi (byte) gfx_init_plane_charset8::ch#8 = (byte) gfx_init_plane_charset8::ch#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#0] -- register_copy - //SEG1139 [563] phi (byte) gfx_init_plane_charset8::col#6 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#1] -- register_copy - //SEG1140 [563] phi (byte*) gfx_init_plane_charset8::gfxa#6 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#2] -- register_copy - //SEG1141 [563] phi (byte*) gfx_init_plane_charset8::chargen#3 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#3] -- register_copy + //SEG1139 [564] phi (byte) gfx_init_plane_charset8::ch#8 = (byte) gfx_init_plane_charset8::ch#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#0] -- register_copy + //SEG1140 [564] phi (byte) gfx_init_plane_charset8::col#6 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#1] -- register_copy + //SEG1141 [564] phi (byte*) gfx_init_plane_charset8::gfxa#6 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#2] -- register_copy + //SEG1142 [564] phi (byte*) gfx_init_plane_charset8::chargen#3 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#3] -- register_copy jmp b1 - //SEG1142 gfx_init_plane_charset8::@1 + //SEG1143 gfx_init_plane_charset8::@1 b1: - //SEG1143 [564] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] + //SEG1144 [565] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] b2_from_b1: - //SEG1144 [564] phi (byte) gfx_init_plane_charset8::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#0] -- vbuz1=vbuc1 + //SEG1145 [565] phi (byte) gfx_init_plane_charset8::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#0] -- vbuz1=vbuc1 lda #0 sta cr - //SEG1145 [564] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#1] -- register_copy - //SEG1146 [564] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#2] -- register_copy - //SEG1147 [564] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#3 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#3] -- register_copy + //SEG1146 [565] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#1] -- register_copy + //SEG1147 [565] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#2] -- register_copy + //SEG1148 [565] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#3 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#3] -- register_copy jmp b2 - //SEG1148 [564] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] + //SEG1149 [565] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] b2_from_b6: - //SEG1149 [564] phi (byte) gfx_init_plane_charset8::cr#6 = (byte) gfx_init_plane_charset8::cr#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#0] -- register_copy - //SEG1150 [564] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#1] -- register_copy - //SEG1151 [564] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#2] -- register_copy - //SEG1152 [564] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#3] -- register_copy + //SEG1150 [565] phi (byte) gfx_init_plane_charset8::cr#6 = (byte) gfx_init_plane_charset8::cr#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#0] -- register_copy + //SEG1151 [565] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#1] -- register_copy + //SEG1152 [565] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#2] -- register_copy + //SEG1153 [565] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#3] -- register_copy jmp b2 - //SEG1153 gfx_init_plane_charset8::@2 + //SEG1154 gfx_init_plane_charset8::@2 b2: - //SEG1154 [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG1155 [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG1155 [566] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1156 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1156 [567] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] + //SEG1157 [568] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] b3_from_b2: - //SEG1157 [567] phi (byte) gfx_init_plane_charset8::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#0] -- vbuxx=vbuc1 + //SEG1158 [568] phi (byte) gfx_init_plane_charset8::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG1158 [567] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#1] -- register_copy - //SEG1159 [567] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#2] -- register_copy - //SEG1160 [567] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#3] -- register_copy + //SEG1159 [568] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#1] -- register_copy + //SEG1160 [568] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#2] -- register_copy + //SEG1161 [568] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#3] -- register_copy jmp b3 - //SEG1161 [567] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] + //SEG1162 [568] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] b3_from_b4: - //SEG1162 [567] phi (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#0] -- register_copy - //SEG1163 [567] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#1] -- register_copy - //SEG1164 [567] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#2] -- register_copy - //SEG1165 [567] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#3] -- register_copy + //SEG1163 [568] phi (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#0] -- register_copy + //SEG1164 [568] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#1] -- register_copy + //SEG1165 [568] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#2] -- register_copy + //SEG1166 [568] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#3] -- register_copy jmp b3 - //SEG1166 gfx_init_plane_charset8::@3 + //SEG1167 gfx_init_plane_charset8::@3 b3: - //SEG1167 [568] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG1168 [569] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG1168 [569] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuaa_eq_0_then_la1 + //SEG1169 [570] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b3 jmp b5 - //SEG1169 gfx_init_plane_charset8::@5 + //SEG1170 gfx_init_plane_charset8::@5 b5: - //SEG1170 [570] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 + //SEG1171 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 lda col - //SEG1171 [571] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] + //SEG1172 [572] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] b4_from_b5: - //SEG1172 [571] phi (byte) gfx_init_plane_charset8::c#2 = (byte~) gfx_init_plane_charset8::c#3 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4#0] -- register_copy + //SEG1173 [572] phi (byte) gfx_init_plane_charset8::c#2 = (byte~) gfx_init_plane_charset8::c#3 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4#0] -- register_copy jmp b4 - //SEG1173 [571] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] + //SEG1174 [572] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] b4_from_b3: - //SEG1174 [571] phi (byte) gfx_init_plane_charset8::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4#0] -- vbuaa=vbuc1 + //SEG1175 [572] phi (byte) gfx_init_plane_charset8::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4#0] -- vbuaa=vbuc1 lda #0 jmp b4 - //SEG1175 gfx_init_plane_charset8::@4 + //SEG1176 gfx_init_plane_charset8::@4 b4: - //SEG1176 [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa + //SEG1177 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG1177 [573] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1178 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1178 [574] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG1179 [575] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG1179 [575] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG1180 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1180 [576] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx + //SEG1181 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx inx - //SEG1181 [577] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1182 [578] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3_from_b4 jmp b6 - //SEG1182 gfx_init_plane_charset8::@6 + //SEG1183 gfx_init_plane_charset8::@6 b6: - //SEG1183 [578] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG1184 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG1184 [579] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1185 [580] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1 lda cr cmp #8 bne b2_from_b6 jmp b7 - //SEG1185 gfx_init_plane_charset8::@7 + //SEG1186 gfx_init_plane_charset8::@7 b7: - //SEG1186 [580] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG1187 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG1187 [581] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 -- vbuz1_neq_0_then_la1 + //SEG1188 [582] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 -- vbuz1_neq_0_then_la1 lda ch cmp #0 bne b1_from_b7 jmp b8 - //SEG1188 gfx_init_plane_charset8::@8 + //SEG1189 gfx_init_plane_charset8::@8 b8: - //SEG1189 [582] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1190 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1190 [583] call dtvSetCpuBankSegment1 - //SEG1191 [504] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG1191 [584] call dtvSetCpuBankSegment1 + //SEG1192 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b8: - //SEG1192 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1193 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1193 gfx_init_plane_charset8::@return + //SEG1194 gfx_init_plane_charset8::@return breturn: - //SEG1194 [584] return + //SEG1195 [585] return rts } -//SEG1195 gfx_init_plane_8bppchunky +//SEG1196 gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky: { .label _6 = $10 .label gfxb = 5 .label x = 3 .label y = 2 - //SEG1196 [586] call dtvSetCpuBankSegment1 - //SEG1197 [504] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] + //SEG1197 [587] call dtvSetCpuBankSegment1 + //SEG1198 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_gfx_init_plane_8bppchunky: - //SEG1198 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1199 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #PLANE_8BPP_CHUNKY/$4000 jsr dtvSetCpuBankSegment1 - //SEG1199 [587] phi from gfx_init_plane_8bppchunky to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1] + //SEG1200 [588] phi from gfx_init_plane_8bppchunky to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1] b1_from_gfx_init_plane_8bppchunky: - //SEG1200 [587] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = ++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#0] -- vbuxx=vbuc1 + //SEG1201 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = ++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#0] -- vbuxx=vbuc1 ldx #PLANE_8BPP_CHUNKY/$4000+1 - //SEG1201 [587] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#1] -- vbuz1=vbuc1 + //SEG1202 [588] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG1202 [587] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#2] -- pbuz1=pbuc1 + //SEG1203 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b1 - //SEG1203 [587] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1] + //SEG1204 [588] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1] b1_from_b5: - //SEG1204 [587] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#0] -- register_copy - //SEG1205 [587] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte) gfx_init_plane_8bppchunky::y#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#1] -- register_copy - //SEG1206 [587] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#2] -- register_copy + //SEG1205 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#0] -- register_copy + //SEG1206 [588] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte) gfx_init_plane_8bppchunky::y#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#1] -- register_copy + //SEG1207 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#2] -- register_copy jmp b1 - //SEG1207 gfx_init_plane_8bppchunky::@1 + //SEG1208 gfx_init_plane_8bppchunky::@1 b1: - //SEG1208 [588] phi from gfx_init_plane_8bppchunky::@1 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2] + //SEG1209 [589] phi from gfx_init_plane_8bppchunky::@1 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2] b2_from_b1: - //SEG1209 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#0] -- register_copy - //SEG1210 [588] phi (word) gfx_init_plane_8bppchunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#1] -- vwuz1=vbuc1 + //SEG1210 [589] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#0] -- register_copy + //SEG1211 [589] phi (word) gfx_init_plane_8bppchunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#1] -- vwuz1=vbuc1 lda #<0 sta x lda #>0 sta x+1 - //SEG1211 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#5 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#2] -- register_copy + //SEG1212 [589] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#5 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#2] -- register_copy jmp b2 - //SEG1212 [588] phi from gfx_init_plane_8bppchunky::@3 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2] + //SEG1213 [589] phi from gfx_init_plane_8bppchunky::@3 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2] b2_from_b3: - //SEG1213 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#0] -- register_copy - //SEG1214 [588] phi (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#1] -- register_copy - //SEG1215 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#2] -- register_copy + //SEG1214 [589] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#0] -- register_copy + //SEG1215 [589] phi (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#1] -- register_copy + //SEG1216 [589] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#2] -- register_copy jmp b2 - //SEG1216 gfx_init_plane_8bppchunky::@2 + //SEG1217 gfx_init_plane_8bppchunky::@2 b2: - //SEG1217 [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 -- pbuz1_neq_vwuc1_then_la1 + //SEG1218 [590] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b3_from_b2 @@ -23657,37 +24554,37 @@ gfx_init_plane_8bppchunky: { cmp #<$8000 bne b3_from_b2 jmp b4 - //SEG1218 gfx_init_plane_8bppchunky::@4 + //SEG1219 gfx_init_plane_8bppchunky::@4 b4: - //SEG1219 [590] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG1220 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //SEG1220 [591] call dtvSetCpuBankSegment1 - //SEG1221 [504] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] + //SEG1221 [592] call dtvSetCpuBankSegment1 + //SEG1222 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b4: - //SEG1222 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG1223 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 jmp b8 - //SEG1223 gfx_init_plane_8bppchunky::@8 + //SEG1224 gfx_init_plane_8bppchunky::@8 b8: - //SEG1224 [592] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx + //SEG1225 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //SEG1225 [593] phi from gfx_init_plane_8bppchunky::@8 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3] + //SEG1226 [594] phi from gfx_init_plane_8bppchunky::@8 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3] b3_from_b8: - //SEG1226 [593] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#0] -- register_copy - //SEG1227 [593] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#1] -- pbuz1=pbuc1 + //SEG1227 [594] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#0] -- register_copy + //SEG1228 [594] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 jmp b3 - //SEG1228 [593] phi from gfx_init_plane_8bppchunky::@2 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3] + //SEG1229 [594] phi from gfx_init_plane_8bppchunky::@2 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3] b3_from_b2: - //SEG1229 [593] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#0] -- register_copy - //SEG1230 [593] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = (byte*) gfx_init_plane_8bppchunky::gfxb#3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#1] -- register_copy + //SEG1230 [594] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#0] -- register_copy + //SEG1231 [594] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = (byte*) gfx_init_plane_8bppchunky::gfxb#3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#1] -- register_copy jmp b3 - //SEG1231 gfx_init_plane_8bppchunky::@3 + //SEG1232 gfx_init_plane_8bppchunky::@3 b3: - //SEG1232 [594] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG1233 [595] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -23695,22 +24592,22 @@ gfx_init_plane_8bppchunky: { lda #0 adc x+1 sta _6+1 - //SEG1233 [595] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 + //SEG1234 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 lda _6 - //SEG1234 [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa + //SEG1235 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG1235 [597] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG1236 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1236 [598] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG1237 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG1237 [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 -- vwuz1_neq_vwuc1_then_la1 + //SEG1238 [600] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b2_from_b3 @@ -23718,372 +24615,372 @@ gfx_init_plane_8bppchunky: { cmp #<$140 bne b2_from_b3 jmp b5 - //SEG1238 gfx_init_plane_8bppchunky::@5 + //SEG1239 gfx_init_plane_8bppchunky::@5 b5: - //SEG1239 [600] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG1240 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1240 [601] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1241 [602] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$c8 bne b1_from_b5 - //SEG1241 [602] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@6 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@6] + //SEG1242 [603] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@6 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@6] b6_from_b5: jmp b6 - //SEG1242 gfx_init_plane_8bppchunky::@6 + //SEG1243 gfx_init_plane_8bppchunky::@6 b6: - //SEG1243 [603] call dtvSetCpuBankSegment1 - //SEG1244 [504] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] + //SEG1244 [604] call dtvSetCpuBankSegment1 + //SEG1245 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] dtvSetCpuBankSegment1_from_b6: - //SEG1245 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1246 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 jmp breturn - //SEG1246 gfx_init_plane_8bppchunky::@return + //SEG1247 gfx_init_plane_8bppchunky::@return breturn: - //SEG1247 [604] return + //SEG1248 [605] return rts } -//SEG1248 gfx_init_vic_bitmap +//SEG1249 gfx_init_vic_bitmap gfx_init_vic_bitmap: { .const lines_cnt = 9 .label l = 2 - //SEG1249 [606] call bitmap_init - //SEG1250 [758] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] + //SEG1250 [607] call bitmap_init + //SEG1251 [759] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] bitmap_init_from_gfx_init_vic_bitmap: jsr bitmap_init - //SEG1251 [607] phi from gfx_init_vic_bitmap to gfx_init_vic_bitmap::@3 [phi:gfx_init_vic_bitmap->gfx_init_vic_bitmap::@3] + //SEG1252 [608] phi from gfx_init_vic_bitmap to gfx_init_vic_bitmap::@3 [phi:gfx_init_vic_bitmap->gfx_init_vic_bitmap::@3] b3_from_gfx_init_vic_bitmap: jmp b3 - //SEG1252 gfx_init_vic_bitmap::@3 + //SEG1253 gfx_init_vic_bitmap::@3 b3: - //SEG1253 [608] call bitmap_clear + //SEG1254 [609] call bitmap_clear jsr bitmap_clear - //SEG1254 [609] phi from gfx_init_vic_bitmap::@3 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1] + //SEG1255 [610] phi from gfx_init_vic_bitmap::@3 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1] b1_from_b3: - //SEG1255 [609] phi (byte) gfx_init_vic_bitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1#0] -- vbuz1=vbuc1 + //SEG1256 [610] phi (byte) gfx_init_vic_bitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1#0] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG1256 [609] phi from gfx_init_vic_bitmap::@5 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1] + //SEG1257 [610] phi from gfx_init_vic_bitmap::@5 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1] b1_from_b5: - //SEG1257 [609] phi (byte) gfx_init_vic_bitmap::l#2 = (byte) gfx_init_vic_bitmap::l#1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1#0] -- register_copy + //SEG1258 [610] phi (byte) gfx_init_vic_bitmap::l#2 = (byte) gfx_init_vic_bitmap::l#1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1#0] -- register_copy jmp b1 - //SEG1258 gfx_init_vic_bitmap::@1 + //SEG1259 gfx_init_vic_bitmap::@1 b1: - //SEG1259 [610] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1260 [611] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG1260 [611] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1261 [612] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x+1,y sta bitmap_line.x1 - //SEG1261 [612] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1262 [613] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_y,y sta bitmap_line.y0 - //SEG1262 [613] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG1263 [614] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx l ldy lines_y+1,x - //SEG1263 [614] call bitmap_line + //SEG1264 [615] call bitmap_line jsr bitmap_line jmp b5 - //SEG1264 gfx_init_vic_bitmap::@5 + //SEG1265 gfx_init_vic_bitmap::@5 b5: - //SEG1265 [615] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1266 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG1266 [616] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG1267 [617] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b1_from_b5 jmp breturn - //SEG1267 gfx_init_vic_bitmap::@return + //SEG1268 gfx_init_vic_bitmap::@return breturn: - //SEG1268 [617] return + //SEG1269 [618] return rts lines_x: .byte 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80 lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } -//SEG1269 bitmap_line +//SEG1270 bitmap_line bitmap_line: { .label xd = 8 .label yd = 7 .label x0 = 9 .label x1 = $12 .label y0 = $f - //SEG1270 [618] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG1271 [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 lda x0 cmp x1 bcc b1 jmp b15 - //SEG1271 bitmap_line::@15 + //SEG1272 bitmap_line::@15 b15: - //SEG1272 [619] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1273 [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 lda x0 sec sbc x1 sta xd - //SEG1273 [620] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG1274 [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 tya cmp y0 beq !+ bcs b2 !: jmp b16 - //SEG1274 bitmap_line::@16 + //SEG1275 bitmap_line::@16 b16: - //SEG1275 [621] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1276 [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy tya eor #$ff sec adc y0 sta yd - //SEG1276 [622] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1277 [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 lda yd cmp xd bcc b3 jmp b17 - //SEG1277 bitmap_line::@17 + //SEG1278 bitmap_line::@17 b17: - //SEG1278 [623] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1279 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG1279 [624] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1280 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1280 [625] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG1281 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_ydxi::y1#0 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1281 [626] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1282 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 // (byte) bitmap_line_ydxi::yd#0 = (byte) bitmap_line::yd#1 // register copy zp ZP_BYTE:7 - //SEG1282 [627] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1283 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_ydxi::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1283 [628] call bitmap_line_ydxi - //SEG1284 [702] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1284 [629] call bitmap_line_ydxi + //SEG1285 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] bitmap_line_ydxi_from_b17: - //SEG1285 [702] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG1286 [702] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG1287 [702] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG1288 [702] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG1289 [702] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG1286 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1287 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1288 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1289 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1290 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi jmp breturn - //SEG1290 bitmap_line::@return + //SEG1291 bitmap_line::@return breturn: - //SEG1291 [629] return + //SEG1292 [630] return rts - //SEG1292 bitmap_line::@3 + //SEG1293 bitmap_line::@3 b3: - //SEG1293 [630] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1294 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1294 [631] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1295 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG1295 [632] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG1296 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 // (byte) bitmap_line_xdyi::x1#0 = (byte) bitmap_line::x0#0 // register copy zp ZP_BYTE:9 - //SEG1296 [633] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1297 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_xdyi::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1297 [634] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1298 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 // (byte) bitmap_line_xdyi::yd#0 = (byte) bitmap_line::yd#1 // register copy zp ZP_BYTE:7 - //SEG1298 [635] call bitmap_line_xdyi - //SEG1299 [680] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1299 [636] call bitmap_line_xdyi + //SEG1300 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] bitmap_line_xdyi_from_b3: - //SEG1300 [680] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG1301 [680] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG1302 [680] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG1303 [680] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG1304 [680] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG1301 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1302 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1303 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1304 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1305 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi jmp breturn - //SEG1305 bitmap_line::@2 + //SEG1306 bitmap_line::@2 b2: - //SEG1306 [636] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1307 [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 tya sec sbc y0 sta yd - //SEG1307 [637] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1308 [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 lda yd cmp xd bcc b6 jmp b20 - //SEG1308 bitmap_line::@20 + //SEG1309 bitmap_line::@20 b20: - //SEG1309 [638] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1310 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1310 [639] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1311 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1311 [640] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1312 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG1312 [641] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1313 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 // (byte) bitmap_line_ydxd::yd#0 = (byte) bitmap_line::yd#0 // register copy zp ZP_BYTE:7 - //SEG1313 [642] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1314 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_ydxd::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1314 [643] call bitmap_line_ydxd - //SEG1315 [732] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1315 [644] call bitmap_line_ydxd + //SEG1316 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] bitmap_line_ydxd_from_b20: - //SEG1316 [732] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG1317 [732] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG1318 [732] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG1319 [732] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG1320 [732] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG1317 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1318 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1319 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1320 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1321 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd jmp breturn - //SEG1321 bitmap_line::@6 + //SEG1322 bitmap_line::@6 b6: - //SEG1322 [644] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1323 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1323 [645] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1324 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG1324 [646] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1325 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1325 [647] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1326 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_xdyd::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1326 [648] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1327 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 // (byte) bitmap_line_xdyd::yd#0 = (byte) bitmap_line::yd#0 // register copy zp ZP_BYTE:7 - //SEG1327 [649] call bitmap_line_xdyd - //SEG1328 [717] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1328 [650] call bitmap_line_xdyd + //SEG1329 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] bitmap_line_xdyd_from_b6: - //SEG1329 [717] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG1330 [717] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG1331 [717] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG1332 [717] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG1333 [717] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG1330 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1331 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1332 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1333 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1334 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd jmp breturn - //SEG1334 bitmap_line::@1 + //SEG1335 bitmap_line::@1 b1: - //SEG1335 [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1336 [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 lda x1 sec sbc x0 sta xd - //SEG1336 [651] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG1337 [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 tya cmp y0 beq !+ bcs b9 !: jmp b23 - //SEG1337 bitmap_line::@23 + //SEG1338 bitmap_line::@23 b23: - //SEG1338 [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1339 [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy tya eor #$ff sec adc y0 sta yd - //SEG1339 [653] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1340 [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 lda yd cmp xd bcc b10 jmp b24 - //SEG1340 bitmap_line::@24 + //SEG1341 bitmap_line::@24 b24: - //SEG1341 [654] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1342 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG1342 [655] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1343 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1343 [656] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG1344 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_ydxd::y1#1 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1344 [657] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1345 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 // (byte) bitmap_line_ydxd::yd#1 = (byte) bitmap_line::yd#3 // register copy zp ZP_BYTE:7 - //SEG1345 [658] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1346 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_ydxd::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1346 [659] call bitmap_line_ydxd - //SEG1347 [732] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1347 [660] call bitmap_line_ydxd + //SEG1348 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] bitmap_line_ydxd_from_b24: - //SEG1348 [732] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG1349 [732] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG1350 [732] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG1351 [732] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG1352 [732] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG1349 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1350 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1351 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1352 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1353 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd jmp breturn - //SEG1353 bitmap_line::@10 + //SEG1354 bitmap_line::@10 b10: - //SEG1354 [660] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1355 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1355 [661] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG1356 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_xdyd::y#1 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1356 [662] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG1357 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 // (byte) bitmap_line_xdyd::x1#1 = (byte) bitmap_line::x1#0 // register copy zp ZP_BYTE:18 - //SEG1357 [663] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1358 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_xdyd::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1358 [664] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1359 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 // (byte) bitmap_line_xdyd::yd#1 = (byte) bitmap_line::yd#3 // register copy zp ZP_BYTE:7 - //SEG1359 [665] call bitmap_line_xdyd - //SEG1360 [717] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1360 [666] call bitmap_line_xdyd + //SEG1361 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] bitmap_line_xdyd_from_b10: - //SEG1361 [717] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG1362 [717] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG1363 [717] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG1364 [717] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG1365 [717] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG1362 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1363 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1364 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1365 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1366 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd jmp breturn - //SEG1366 bitmap_line::@9 + //SEG1367 bitmap_line::@9 b9: - //SEG1367 [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1368 [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 tya sec sbc y0 sta yd - //SEG1368 [667] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1369 [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 lda yd cmp xd bcc b13 jmp b27 - //SEG1369 bitmap_line::@27 + //SEG1370 bitmap_line::@27 b27: - //SEG1370 [668] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1371 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1371 [669] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1372 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1372 [670] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1373 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG1373 [671] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1374 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 // (byte) bitmap_line_ydxi::yd#1 = (byte) bitmap_line::yd#10 // register copy zp ZP_BYTE:7 - //SEG1374 [672] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1375 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_ydxi::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1375 [673] call bitmap_line_ydxi - //SEG1376 [702] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1376 [674] call bitmap_line_ydxi + //SEG1377 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] bitmap_line_ydxi_from_b27: - //SEG1377 [702] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG1378 [702] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG1379 [702] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG1380 [702] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG1381 [702] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG1378 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1379 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1380 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1381 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1382 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi jmp breturn - //SEG1382 bitmap_line::@13 + //SEG1383 bitmap_line::@13 b13: - //SEG1383 [674] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1384 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1384 [675] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG1385 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_xdyi::y#1 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1385 [676] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1386 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1386 [677] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1387 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_xdyi::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1387 [678] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1388 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 // (byte) bitmap_line_xdyi::yd#1 = (byte) bitmap_line::yd#10 // register copy zp ZP_BYTE:7 - //SEG1388 [679] call bitmap_line_xdyi - //SEG1389 [680] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1389 [680] call bitmap_line_xdyi + //SEG1390 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] bitmap_line_xdyi_from_b13: - //SEG1390 [680] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG1391 [680] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG1392 [680] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG1393 [680] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG1394 [680] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG1391 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1392 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1393 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1394 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1395 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi jmp breturn } -//SEG1395 bitmap_line_xdyi +//SEG1396 bitmap_line_xdyi bitmap_line_xdyi: { .label x = $e .label y = $f @@ -24091,89 +24988,89 @@ bitmap_line_xdyi: { .label xd = 8 .label yd = 7 .label e = $12 - //SEG1396 [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1397 [682] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG1397 [682] phi from bitmap_line_xdyi bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] + //SEG1398 [683] phi from bitmap_line_xdyi bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] b1_from_bitmap_line_xdyi: b1_from_b2: - //SEG1398 [682] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#0 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy - //SEG1399 [682] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#5 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy - //SEG1400 [682] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#6 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy + //SEG1399 [683] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#0 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy + //SEG1400 [683] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#5 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy + //SEG1401 [683] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#6 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy jmp b1 - //SEG1401 bitmap_line_xdyi::@1 + //SEG1402 bitmap_line_xdyi::@1 b1: - //SEG1402 [683] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 + //SEG1403 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx x - //SEG1403 [684] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG1404 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1404 [685] call bitmap_plot - //SEG1405 [695] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1405 [686] call bitmap_plot + //SEG1406 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1406 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG1407 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG1407 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1408 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1408 bitmap_line_xdyi::@5 + //SEG1409 bitmap_line_xdyi::@5 b5: - //SEG1409 [686] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1410 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1410 [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1411 [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG1411 [688] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1412 [689] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG1412 bitmap_line_xdyi::@3 + //SEG1413 bitmap_line_xdyi::@3 b3: - //SEG1413 [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1414 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1414 [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1415 [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG1415 [691] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2] + //SEG1416 [692] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2] b2_from_b3: b2_from_b5: - //SEG1416 [691] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#0] -- register_copy - //SEG1417 [691] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#1] -- register_copy + //SEG1417 [692] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#0] -- register_copy + //SEG1418 [692] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#1] -- register_copy jmp b2 - //SEG1418 bitmap_line_xdyi::@2 + //SEG1419 bitmap_line_xdyi::@2 b2: - //SEG1419 [692] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1420 [693] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx x1 inx - //SEG1420 [693] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 + //SEG1421 [694] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 cpx x bne b1_from_b2 jmp breturn - //SEG1421 bitmap_line_xdyi::@return + //SEG1422 bitmap_line_xdyi::@return breturn: - //SEG1422 [694] return + //SEG1423 [695] return rts } -//SEG1423 bitmap_plot +//SEG1424 bitmap_plot bitmap_plot: { .label _0 = 3 .label plotter_x = 3 .label plotter_y = 5 - //SEG1424 [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + //SEG1425 [697] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_xhi,x sta plotter_x+1 lda bitmap_plot_xlo,x sta plotter_x - //SEG1425 [697] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + //SEG1426 [698] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta plotter_y+1 lda bitmap_plot_ylo,y sta plotter_y - //SEG1426 [698] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG1427 [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda _0 clc adc plotter_y @@ -24181,95 +25078,95 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //SEG1427 [699] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + //SEG1428 [700] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (_0),y - //SEG1428 [700] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG1429 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (_0),y jmp breturn - //SEG1429 bitmap_plot::@return + //SEG1430 bitmap_plot::@return breturn: - //SEG1430 [701] return + //SEG1431 [702] return rts } -//SEG1431 bitmap_line_ydxi +//SEG1432 bitmap_line_ydxi bitmap_line_ydxi: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //SEG1432 [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1433 [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG1433 [704] phi from bitmap_line_ydxi bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] + //SEG1434 [705] phi from bitmap_line_ydxi bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] b1_from_bitmap_line_ydxi: b1_from_b2: - //SEG1434 [704] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy - //SEG1435 [704] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#6 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy - //SEG1436 [704] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#5 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy + //SEG1435 [705] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy + //SEG1436 [705] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#6 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy + //SEG1437 [705] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#5 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy jmp b1 - //SEG1437 bitmap_line_ydxi::@1 + //SEG1438 bitmap_line_ydxi::@1 b1: - //SEG1438 [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG1439 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 // (byte) bitmap_plot::x#2 = (byte) bitmap_line_ydxi::x#3 // register copy reg byte x - //SEG1439 [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG1440 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1440 [707] call bitmap_plot - //SEG1441 [695] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1441 [708] call bitmap_plot + //SEG1442 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1442 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG1443 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG1443 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1444 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1444 bitmap_line_ydxi::@5 + //SEG1445 bitmap_line_ydxi::@5 b5: - //SEG1445 [708] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1446 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1446 [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1447 [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG1447 [710] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1448 [711] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2_from_b5 jmp b3 - //SEG1448 bitmap_line_ydxi::@3 + //SEG1449 bitmap_line_ydxi::@3 b3: - //SEG1449 [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG1450 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG1450 [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1451 [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG1451 [713] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2] + //SEG1452 [714] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2] b2_from_b3: b2_from_b5: - //SEG1452 [713] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#0] -- register_copy - //SEG1453 [713] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#1] -- register_copy + //SEG1453 [714] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#0] -- register_copy + //SEG1454 [714] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#1] -- register_copy jmp b2 - //SEG1454 bitmap_line_ydxi::@2 + //SEG1455 bitmap_line_ydxi::@2 b2: - //SEG1455 [714] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG1456 [715] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda y1 clc adc #1 - //SEG1456 [715] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 + //SEG1457 [716] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 cmp y bne b1_from_b2 jmp breturn - //SEG1457 bitmap_line_ydxi::@return + //SEG1458 bitmap_line_ydxi::@return breturn: - //SEG1458 [716] return + //SEG1459 [717] return rts } -//SEG1459 bitmap_line_xdyd +//SEG1460 bitmap_line_xdyd bitmap_line_xdyd: { .label x = $e .label y = $f @@ -24277,305 +25174,305 @@ bitmap_line_xdyd: { .label xd = 8 .label yd = 7 .label e = 9 - //SEG1460 [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1461 [719] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG1461 [719] phi from bitmap_line_xdyd bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] + //SEG1462 [720] phi from bitmap_line_xdyd bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] b1_from_bitmap_line_xdyd: b1_from_b2: - //SEG1462 [719] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#0 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy - //SEG1463 [719] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#5 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy - //SEG1464 [719] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#6 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy + //SEG1463 [720] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#0 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy + //SEG1464 [720] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#5 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy + //SEG1465 [720] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#6 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy jmp b1 - //SEG1465 bitmap_line_xdyd::@1 + //SEG1466 bitmap_line_xdyd::@1 b1: - //SEG1466 [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 + //SEG1467 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx x - //SEG1467 [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG1468 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //SEG1468 [722] call bitmap_plot - //SEG1469 [695] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1469 [723] call bitmap_plot + //SEG1470 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1470 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG1471 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG1471 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1472 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1472 bitmap_line_xdyd::@5 + //SEG1473 bitmap_line_xdyd::@5 b5: - //SEG1473 [723] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1474 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1474 [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1475 [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG1475 [725] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1476 [726] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG1476 bitmap_line_xdyd::@3 + //SEG1477 bitmap_line_xdyd::@3 b3: - //SEG1477 [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1478 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1478 [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1479 [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG1479 [728] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2] + //SEG1480 [729] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2] b2_from_b3: b2_from_b5: - //SEG1480 [728] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#0] -- register_copy - //SEG1481 [728] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#1] -- register_copy + //SEG1481 [729] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#0] -- register_copy + //SEG1482 [729] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#1] -- register_copy jmp b2 - //SEG1482 bitmap_line_xdyd::@2 + //SEG1483 bitmap_line_xdyd::@2 b2: - //SEG1483 [729] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1484 [730] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx x1 inx - //SEG1484 [730] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 + //SEG1485 [731] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 cpx x bne b1_from_b2 jmp breturn - //SEG1485 bitmap_line_xdyd::@return + //SEG1486 bitmap_line_xdyd::@return breturn: - //SEG1486 [731] return + //SEG1487 [732] return rts } -//SEG1487 bitmap_line_ydxd +//SEG1488 bitmap_line_ydxd bitmap_line_ydxd: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //SEG1488 [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1489 [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG1489 [734] phi from bitmap_line_ydxd bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] + //SEG1490 [735] phi from bitmap_line_ydxd bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] b1_from_bitmap_line_ydxd: b1_from_b2: - //SEG1490 [734] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy - //SEG1491 [734] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#7 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy - //SEG1492 [734] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#5 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy + //SEG1491 [735] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy + //SEG1492 [735] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#7 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy + //SEG1493 [735] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#5 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy jmp b1 - //SEG1493 bitmap_line_ydxd::@1 + //SEG1494 bitmap_line_ydxd::@1 b1: - //SEG1494 [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG1495 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 // (byte) bitmap_plot::x#3 = (byte) bitmap_line_ydxd::x#3 // register copy reg byte x - //SEG1495 [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG1496 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //SEG1496 [737] call bitmap_plot - //SEG1497 [695] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1497 [738] call bitmap_plot + //SEG1498 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from_b1: - //SEG1498 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG1499 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG1499 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1500 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp b5 - //SEG1500 bitmap_line_ydxd::@5 + //SEG1501 bitmap_line_ydxd::@5 b5: - //SEG1501 [738] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1502 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1502 [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1503 [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG1503 [740] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1504 [741] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2_from_b5 jmp b3 - //SEG1504 bitmap_line_ydxd::@3 + //SEG1505 bitmap_line_ydxd::@3 b3: - //SEG1505 [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG1506 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG1506 [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1507 [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG1507 [743] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2] + //SEG1508 [744] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2] b2_from_b3: b2_from_b5: - //SEG1508 [743] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#0] -- register_copy - //SEG1509 [743] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#1] -- register_copy + //SEG1509 [744] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#0] -- register_copy + //SEG1510 [744] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#1] -- register_copy jmp b2 - //SEG1510 bitmap_line_ydxd::@2 + //SEG1511 bitmap_line_ydxd::@2 b2: - //SEG1511 [744] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG1512 [745] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda y1 clc adc #1 - //SEG1512 [745] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 + //SEG1513 [746] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 cmp y bne b1_from_b2 jmp breturn - //SEG1513 bitmap_line_ydxd::@return + //SEG1514 bitmap_line_ydxd::@return breturn: - //SEG1514 [746] return + //SEG1515 [747] return rts } -//SEG1515 bitmap_clear +//SEG1516 bitmap_clear bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //SEG1516 [747] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG1517 [748] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta _3 lda bitmap_plot_xhi sta _3+1 - //SEG1517 [748] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG1518 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3 - //SEG1518 [749] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1519 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG1519 [749] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG1520 [750] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1520 [749] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG1521 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1521 [749] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1522 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG1522 [749] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG1523 [749] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG1523 [750] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1524 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG1524 bitmap_clear::@1 + //SEG1525 bitmap_clear::@1 b1: - //SEG1525 [750] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1526 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG1526 [750] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG1527 [751] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1527 [750] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG1528 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1528 [750] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1529 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG1529 [750] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG1530 [750] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG1530 [751] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1531 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG1531 bitmap_clear::@2 + //SEG1532 bitmap_clear::@2 b2: - //SEG1532 [751] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1533 [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG1533 [752] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1534 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1534 [753] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG1535 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1535 [754] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1536 [755] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2_from_b2 jmp b3 - //SEG1536 bitmap_clear::@3 + //SEG1537 bitmap_clear::@3 b3: - //SEG1537 [755] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1538 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG1538 [756] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1539 [757] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG1539 bitmap_clear::@return + //SEG1540 bitmap_clear::@return breturn: - //SEG1540 [757] return + //SEG1541 [758] return rts } -//SEG1541 bitmap_init +//SEG1542 bitmap_init bitmap_init: { .label _6 = 2 .label yoffs = 3 - //SEG1542 [759] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1543 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG1543 [759] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 + //SEG1544 [760] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG1544 [759] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 + //SEG1545 [760] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG1545 [759] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1546 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG1546 [759] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG1547 [759] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG1547 [760] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1548 [760] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG1548 bitmap_init::@1 + //SEG1549 bitmap_init::@1 b1: - //SEG1549 [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG1550 [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG1550 [761] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1551 [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_xlo,x - //SEG1551 [762] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1552 [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>VIC_BITMAP sta bitmap_plot_xhi,x - //SEG1552 [763] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG1553 [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta bitmap_plot_bit,x - //SEG1553 [764] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG1554 [765] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG1554 [765] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuyy_neq_0_then_la1 + //SEG1555 [766] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuyy_neq_0_then_la1 cpy #0 bne b10_from_b1 - //SEG1555 [766] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1556 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG1556 [766] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 + //SEG1557 [767] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 ldy #$80 jmp b2 - //SEG1557 bitmap_init::@2 + //SEG1558 bitmap_init::@2 b2: - //SEG1558 [767] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG1559 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1559 [768] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG1560 [769] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG1560 [769] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1561 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG1561 [769] phi (byte*) bitmap_init::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG1562 [770] phi (byte*) bitmap_init::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG1562 [769] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG1563 [770] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG1563 [769] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1564 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG1564 [769] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG1565 [769] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG1565 [770] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1566 [770] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG1566 bitmap_init::@3 + //SEG1567 bitmap_init::@3 b3: - //SEG1567 [770] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG1568 [771] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG1568 [771] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG1569 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG1569 [772] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG1570 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG1570 [773] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1571 [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG1571 [774] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG1572 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG1572 [775] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1573 [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG1573 [776] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG1574 [777] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG1574 [777] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG1575 [778] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG1575 bitmap_init::@7 + //SEG1576 bitmap_init::@7 b7: - //SEG1576 [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG1577 [779] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -24583,507 +25480,507 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG1577 [779] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG1578 [780] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG1578 [779] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG1579 [780] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG1579 bitmap_init::@4 + //SEG1580 bitmap_init::@4 b4: - //SEG1580 [780] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG1581 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG1581 [781] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG1582 [782] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG1582 bitmap_init::@return + //SEG1583 bitmap_init::@return breturn: - //SEG1583 [782] return + //SEG1584 [783] return rts - //SEG1584 [783] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1585 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG1585 bitmap_init::@10 + //SEG1586 bitmap_init::@10 b10: - //SEG1586 [766] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1587 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG1587 [766] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1588 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG1588 gfx_init_charset +//SEG1589 gfx_init_charset gfx_init_charset: { .label charset = 5 .label chargen = 3 .label c = 2 - //SEG1589 [784] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG1590 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG1590 [785] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] + //SEG1591 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] b1_from_gfx_init_charset: - //SEG1591 [785] phi (byte) gfx_init_charset::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset->gfx_init_charset::@1#0] -- vbuz1=vbuc1 + //SEG1592 [786] phi (byte) gfx_init_charset::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset->gfx_init_charset::@1#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG1592 [785] phi (byte*) gfx_init_charset::charset#3 = (const byte*) VIC_CHARSET_ROM#0 [phi:gfx_init_charset->gfx_init_charset::@1#1] -- pbuz1=pbuc1 + //SEG1593 [786] phi (byte*) gfx_init_charset::charset#3 = (const byte*) VIC_CHARSET_ROM#0 [phi:gfx_init_charset->gfx_init_charset::@1#1] -- pbuz1=pbuc1 lda #VIC_CHARSET_ROM sta charset+1 - //SEG1593 [785] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 + //SEG1594 [786] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG1594 [785] phi from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] + //SEG1595 [786] phi from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] b1_from_b3: - //SEG1595 [785] phi (byte) gfx_init_charset::c#4 = (byte) gfx_init_charset::c#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#0] -- register_copy - //SEG1596 [785] phi (byte*) gfx_init_charset::charset#3 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#1] -- register_copy - //SEG1597 [785] phi (byte*) gfx_init_charset::chargen#3 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#2] -- register_copy + //SEG1596 [786] phi (byte) gfx_init_charset::c#4 = (byte) gfx_init_charset::c#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#0] -- register_copy + //SEG1597 [786] phi (byte*) gfx_init_charset::charset#3 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#1] -- register_copy + //SEG1598 [786] phi (byte*) gfx_init_charset::chargen#3 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#2] -- register_copy jmp b1 - //SEG1598 gfx_init_charset::@1 + //SEG1599 gfx_init_charset::@1 b1: - //SEG1599 [786] phi from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] + //SEG1600 [787] phi from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] b2_from_b1: - //SEG1600 [786] phi (byte) gfx_init_charset::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset::@1->gfx_init_charset::@2#0] -- vbuxx=vbuc1 + //SEG1601 [787] phi (byte) gfx_init_charset::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset::@1->gfx_init_charset::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1601 [786] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#1] -- register_copy - //SEG1602 [786] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#2] -- register_copy + //SEG1602 [787] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#1] -- register_copy + //SEG1603 [787] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#2] -- register_copy jmp b2 - //SEG1603 [786] phi from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] + //SEG1604 [787] phi from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] b2_from_b2: - //SEG1604 [786] phi (byte) gfx_init_charset::l#2 = (byte) gfx_init_charset::l#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#0] -- register_copy - //SEG1605 [786] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#1] -- register_copy - //SEG1606 [786] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#2] -- register_copy + //SEG1605 [787] phi (byte) gfx_init_charset::l#2 = (byte) gfx_init_charset::l#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#0] -- register_copy + //SEG1606 [787] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#1] -- register_copy + //SEG1607 [787] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#2] -- register_copy jmp b2 - //SEG1607 gfx_init_charset::@2 + //SEG1608 gfx_init_charset::@2 b2: - //SEG1608 [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1609 [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargen),y ldy #0 sta (charset),y - //SEG1609 [788] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 + //SEG1610 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 inc charset bne !+ inc charset+1 !: - //SEG1610 [789] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1611 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1611 [790] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx + //SEG1612 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx inx - //SEG1612 [791] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1613 [792] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2_from_b2 jmp b3 - //SEG1613 gfx_init_charset::@3 + //SEG1614 gfx_init_charset::@3 b3: - //SEG1614 [792] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 + //SEG1615 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 inc c - //SEG1615 [793] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 -- vbuz1_neq_0_then_la1 + //SEG1616 [794] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b1_from_b3 jmp b4 - //SEG1616 gfx_init_charset::@4 + //SEG1617 gfx_init_charset::@4 b4: - //SEG1617 [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG1618 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT jmp breturn - //SEG1618 gfx_init_charset::@return + //SEG1619 gfx_init_charset::@return breturn: - //SEG1619 [795] return + //SEG1620 [796] return rts } -//SEG1620 gfx_init_screen4 +//SEG1621 gfx_init_screen4 gfx_init_screen4: { .label ch = 3 .label cy = 2 - //SEG1621 [797] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] + //SEG1622 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] b1_from_gfx_init_screen4: - //SEG1622 [797] phi (byte) gfx_init_screen4::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4->gfx_init_screen4::@1#0] -- vbuz1=vbuc1 + //SEG1623 [798] phi (byte) gfx_init_screen4::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4->gfx_init_screen4::@1#0] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1623 [797] phi (byte*) gfx_init_screen4::ch#3 = (const byte*) VIC_SCREEN4#0 [phi:gfx_init_screen4->gfx_init_screen4::@1#1] -- pbuz1=pbuc1 + //SEG1624 [798] phi (byte*) gfx_init_screen4::ch#3 = (const byte*) VIC_SCREEN4#0 [phi:gfx_init_screen4->gfx_init_screen4::@1#1] -- pbuz1=pbuc1 lda #VIC_SCREEN4 sta ch+1 jmp b1 - //SEG1624 [797] phi from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] + //SEG1625 [798] phi from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] b1_from_b3: - //SEG1625 [797] phi (byte) gfx_init_screen4::cy#4 = (byte) gfx_init_screen4::cy#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#0] -- register_copy - //SEG1626 [797] phi (byte*) gfx_init_screen4::ch#3 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#1] -- register_copy + //SEG1626 [798] phi (byte) gfx_init_screen4::cy#4 = (byte) gfx_init_screen4::cy#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#0] -- register_copy + //SEG1627 [798] phi (byte*) gfx_init_screen4::ch#3 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#1] -- register_copy jmp b1 - //SEG1627 gfx_init_screen4::@1 + //SEG1628 gfx_init_screen4::@1 b1: - //SEG1628 [798] phi from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] + //SEG1629 [799] phi from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] b2_from_b1: - //SEG1629 [798] phi (byte) gfx_init_screen4::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#0] -- vbuxx=vbuc1 + //SEG1630 [799] phi (byte) gfx_init_screen4::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1630 [798] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#3 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#1] -- register_copy + //SEG1631 [799] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#3 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#1] -- register_copy jmp b2 - //SEG1631 [798] phi from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] + //SEG1632 [799] phi from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] b2_from_b2: - //SEG1632 [798] phi (byte) gfx_init_screen4::cx#2 = (byte) gfx_init_screen4::cx#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#0] -- register_copy - //SEG1633 [798] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#1] -- register_copy + //SEG1633 [799] phi (byte) gfx_init_screen4::cx#2 = (byte) gfx_init_screen4::cx#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#0] -- register_copy + //SEG1634 [799] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#1] -- register_copy jmp b2 - //SEG1634 gfx_init_screen4::@2 + //SEG1635 gfx_init_screen4::@2 b2: - //SEG1635 [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1636 [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (ch),y - //SEG1636 [800] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1637 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1637 [801] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx + //SEG1638 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1638 [802] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1639 [803] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG1639 gfx_init_screen4::@3 + //SEG1640 gfx_init_screen4::@3 b3: - //SEG1640 [803] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1641 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1641 [804] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1642 [805] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1642 gfx_init_screen4::@return + //SEG1643 gfx_init_screen4::@return breturn: - //SEG1643 [805] return + //SEG1644 [806] return rts } -//SEG1644 gfx_init_screen3 +//SEG1645 gfx_init_screen3 gfx_init_screen3: { .label _1 = 7 .label ch = 3 .label cy = 2 - //SEG1645 [807] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] + //SEG1646 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] b1_from_gfx_init_screen3: - //SEG1646 [807] phi (byte*) gfx_init_screen3::ch#3 = (const byte*) VIC_SCREEN3#0 [phi:gfx_init_screen3->gfx_init_screen3::@1#0] -- pbuz1=pbuc1 + //SEG1647 [808] phi (byte*) gfx_init_screen3::ch#3 = (const byte*) VIC_SCREEN3#0 [phi:gfx_init_screen3->gfx_init_screen3::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN3 sta ch+1 - //SEG1647 [807] phi (byte) gfx_init_screen3::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3->gfx_init_screen3::@1#1] -- vbuz1=vbuc1 + //SEG1648 [808] phi (byte) gfx_init_screen3::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3->gfx_init_screen3::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1648 [807] phi from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] + //SEG1649 [808] phi from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] b1_from_b3: - //SEG1649 [807] phi (byte*) gfx_init_screen3::ch#3 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#0] -- register_copy - //SEG1650 [807] phi (byte) gfx_init_screen3::cy#4 = (byte) gfx_init_screen3::cy#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#1] -- register_copy + //SEG1650 [808] phi (byte*) gfx_init_screen3::ch#3 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#0] -- register_copy + //SEG1651 [808] phi (byte) gfx_init_screen3::cy#4 = (byte) gfx_init_screen3::cy#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#1] -- register_copy jmp b1 - //SEG1651 gfx_init_screen3::@1 + //SEG1652 gfx_init_screen3::@1 b1: - //SEG1652 [808] phi from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] + //SEG1653 [809] phi from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] b2_from_b1: - //SEG1653 [808] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#3 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#0] -- register_copy - //SEG1654 [808] phi (byte) gfx_init_screen3::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#1] -- vbuxx=vbuc1 + //SEG1654 [809] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#3 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#0] -- register_copy + //SEG1655 [809] phi (byte) gfx_init_screen3::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#1] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG1655 [808] phi from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] + //SEG1656 [809] phi from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] b2_from_b2: - //SEG1656 [808] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#0] -- register_copy - //SEG1657 [808] phi (byte) gfx_init_screen3::cx#2 = (byte) gfx_init_screen3::cx#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#1] -- register_copy + //SEG1657 [809] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#0] -- register_copy + //SEG1658 [809] phi (byte) gfx_init_screen3::cx#2 = (byte) gfx_init_screen3::cx#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#1] -- register_copy jmp b2 - //SEG1658 gfx_init_screen3::@2 + //SEG1659 gfx_init_screen3::@2 b2: - //SEG1659 [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 + //SEG1660 [810] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 txa and #3 - //SEG1660 [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1661 [811] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _1 - //SEG1661 [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 + //SEG1662 [812] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 lda #3 and cy - //SEG1662 [812] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1663 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1663 [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa + //SEG1664 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1664 [814] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1665 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1665 [815] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx + //SEG1666 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1666 [816] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1667 [817] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG1667 gfx_init_screen3::@3 + //SEG1668 gfx_init_screen3::@3 b3: - //SEG1668 [817] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1669 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1669 [818] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1670 [819] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1670 gfx_init_screen3::@return + //SEG1671 gfx_init_screen3::@return breturn: - //SEG1671 [819] return + //SEG1672 [820] return rts } -//SEG1672 gfx_init_screen2 +//SEG1673 gfx_init_screen2 gfx_init_screen2: { .label col2 = 7 .label ch = 3 .label cy = 2 - //SEG1673 [821] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] + //SEG1674 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] b1_from_gfx_init_screen2: - //SEG1674 [821] phi (byte*) gfx_init_screen2::ch#3 = (const byte*) VIC_SCREEN2#0 [phi:gfx_init_screen2->gfx_init_screen2::@1#0] -- pbuz1=pbuc1 + //SEG1675 [822] phi (byte*) gfx_init_screen2::ch#3 = (const byte*) VIC_SCREEN2#0 [phi:gfx_init_screen2->gfx_init_screen2::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN2 sta ch+1 - //SEG1675 [821] phi (byte) gfx_init_screen2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2->gfx_init_screen2::@1#1] -- vbuz1=vbuc1 + //SEG1676 [822] phi (byte) gfx_init_screen2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2->gfx_init_screen2::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1676 [821] phi from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] + //SEG1677 [822] phi from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] b1_from_b3: - //SEG1677 [821] phi (byte*) gfx_init_screen2::ch#3 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#0] -- register_copy - //SEG1678 [821] phi (byte) gfx_init_screen2::cy#4 = (byte) gfx_init_screen2::cy#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#1] -- register_copy + //SEG1678 [822] phi (byte*) gfx_init_screen2::ch#3 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#0] -- register_copy + //SEG1679 [822] phi (byte) gfx_init_screen2::cy#4 = (byte) gfx_init_screen2::cy#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#1] -- register_copy jmp b1 - //SEG1679 gfx_init_screen2::@1 + //SEG1680 gfx_init_screen2::@1 b1: - //SEG1680 [822] phi from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] + //SEG1681 [823] phi from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] b2_from_b1: - //SEG1681 [822] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#3 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#0] -- register_copy - //SEG1682 [822] phi (byte) gfx_init_screen2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#1] -- vbuxx=vbuc1 + //SEG1682 [823] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#3 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#0] -- register_copy + //SEG1683 [823] phi (byte) gfx_init_screen2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#1] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG1683 [822] phi from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] + //SEG1684 [823] phi from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] b2_from_b2: - //SEG1684 [822] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#0] -- register_copy - //SEG1685 [822] phi (byte) gfx_init_screen2::cx#2 = (byte) gfx_init_screen2::cx#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#1] -- register_copy + //SEG1685 [823] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#0] -- register_copy + //SEG1686 [823] phi (byte) gfx_init_screen2::cx#2 = (byte) gfx_init_screen2::cx#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#1] -- register_copy jmp b2 - //SEG1686 gfx_init_screen2::@2 + //SEG1687 gfx_init_screen2::@2 b2: - //SEG1687 [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1688 [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1688 [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 + //SEG1689 [825] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 and #$f tay - //SEG1689 [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 -- vbuz1=vbuc1_minus_vbuyy + //SEG1690 [826] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 -- vbuz1=vbuc1_minus_vbuyy tya eor #$ff clc adc #$f+1 sta col2 - //SEG1690 [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 + //SEG1691 [827] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 tya asl asl asl asl - //SEG1691 [827] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 + //SEG1692 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 ora col2 - //SEG1692 [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa + //SEG1693 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1693 [829] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1694 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1694 [830] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx + //SEG1695 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1695 [831] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1696 [832] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG1696 gfx_init_screen2::@3 + //SEG1697 gfx_init_screen2::@3 b3: - //SEG1697 [832] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1698 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1698 [833] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1699 [834] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1699 gfx_init_screen2::@return + //SEG1700 gfx_init_screen2::@return breturn: - //SEG1700 [834] return + //SEG1701 [835] return rts } -//SEG1701 gfx_init_screen1 +//SEG1702 gfx_init_screen1 gfx_init_screen1: { .label ch = 3 .label cy = 2 - //SEG1702 [836] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] + //SEG1703 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] b1_from_gfx_init_screen1: - //SEG1703 [836] phi (byte*) gfx_init_screen1::ch#3 = (const byte*) VIC_SCREEN1#0 [phi:gfx_init_screen1->gfx_init_screen1::@1#0] -- pbuz1=pbuc1 + //SEG1704 [837] phi (byte*) gfx_init_screen1::ch#3 = (const byte*) VIC_SCREEN1#0 [phi:gfx_init_screen1->gfx_init_screen1::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN1 sta ch+1 - //SEG1704 [836] phi (byte) gfx_init_screen1::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1->gfx_init_screen1::@1#1] -- vbuz1=vbuc1 + //SEG1705 [837] phi (byte) gfx_init_screen1::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1->gfx_init_screen1::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1705 [836] phi from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] + //SEG1706 [837] phi from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] b1_from_b3: - //SEG1706 [836] phi (byte*) gfx_init_screen1::ch#3 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#0] -- register_copy - //SEG1707 [836] phi (byte) gfx_init_screen1::cy#4 = (byte) gfx_init_screen1::cy#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#1] -- register_copy + //SEG1707 [837] phi (byte*) gfx_init_screen1::ch#3 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#0] -- register_copy + //SEG1708 [837] phi (byte) gfx_init_screen1::cy#4 = (byte) gfx_init_screen1::cy#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#1] -- register_copy jmp b1 - //SEG1708 gfx_init_screen1::@1 + //SEG1709 gfx_init_screen1::@1 b1: - //SEG1709 [837] phi from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] + //SEG1710 [838] phi from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] b2_from_b1: - //SEG1710 [837] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#3 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#0] -- register_copy - //SEG1711 [837] phi (byte) gfx_init_screen1::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#1] -- vbuxx=vbuc1 + //SEG1711 [838] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#3 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#0] -- register_copy + //SEG1712 [838] phi (byte) gfx_init_screen1::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#1] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG1712 [837] phi from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] + //SEG1713 [838] phi from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] b2_from_b2: - //SEG1713 [837] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#0] -- register_copy - //SEG1714 [837] phi (byte) gfx_init_screen1::cx#2 = (byte) gfx_init_screen1::cx#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#1] -- register_copy + //SEG1714 [838] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#0] -- register_copy + //SEG1715 [838] phi (byte) gfx_init_screen1::cx#2 = (byte) gfx_init_screen1::cx#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#1] -- register_copy jmp b2 - //SEG1715 gfx_init_screen1::@2 + //SEG1716 gfx_init_screen1::@2 b2: - //SEG1716 [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1717 [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1717 [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1718 [840] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1718 [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa + //SEG1719 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1719 [841] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1720 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1720 [842] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx + //SEG1721 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1721 [843] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1722 [844] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG1722 gfx_init_screen1::@3 + //SEG1723 gfx_init_screen1::@3 b3: - //SEG1723 [844] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1724 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1724 [845] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1725 [846] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1725 gfx_init_screen1::@return + //SEG1726 gfx_init_screen1::@return breturn: - //SEG1726 [846] return + //SEG1727 [847] return rts } -//SEG1727 gfx_init_screen0 +//SEG1728 gfx_init_screen0 gfx_init_screen0: { .label _1 = 7 .label ch = 3 .label cy = 2 - //SEG1728 [848] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG1729 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] b1_from_gfx_init_screen0: - //SEG1729 [848] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) VIC_SCREEN0#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 + //SEG1730 [849] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) VIC_SCREEN0#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN0 sta ch+1 - //SEG1730 [848] phi (byte) gfx_init_screen0::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0->gfx_init_screen0::@1#1] -- vbuz1=vbuc1 + //SEG1731 [849] phi (byte) gfx_init_screen0::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0->gfx_init_screen0::@1#1] -- vbuz1=vbuc1 lda #0 sta cy jmp b1 - //SEG1731 [848] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] + //SEG1732 [849] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] b1_from_b3: - //SEG1732 [848] phi (byte*) gfx_init_screen0::ch#3 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#0] -- register_copy - //SEG1733 [848] phi (byte) gfx_init_screen0::cy#4 = (byte) gfx_init_screen0::cy#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#1] -- register_copy + //SEG1733 [849] phi (byte*) gfx_init_screen0::ch#3 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#0] -- register_copy + //SEG1734 [849] phi (byte) gfx_init_screen0::cy#4 = (byte) gfx_init_screen0::cy#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#1] -- register_copy jmp b1 - //SEG1734 gfx_init_screen0::@1 + //SEG1735 gfx_init_screen0::@1 b1: - //SEG1735 [849] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] + //SEG1736 [850] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] b2_from_b1: - //SEG1736 [849] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#3 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#0] -- register_copy - //SEG1737 [849] phi (byte) gfx_init_screen0::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#1] -- vbuxx=vbuc1 + //SEG1737 [850] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#3 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#0] -- register_copy + //SEG1738 [850] phi (byte) gfx_init_screen0::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#1] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG1738 [849] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] + //SEG1739 [850] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] b2_from_b2: - //SEG1739 [849] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#0] -- register_copy - //SEG1740 [849] phi (byte) gfx_init_screen0::cx#2 = (byte) gfx_init_screen0::cx#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#1] -- register_copy + //SEG1740 [850] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#0] -- register_copy + //SEG1741 [850] phi (byte) gfx_init_screen0::cx#2 = (byte) gfx_init_screen0::cx#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#1] -- register_copy jmp b2 - //SEG1741 gfx_init_screen0::@2 + //SEG1742 gfx_init_screen0::@2 b2: - //SEG1742 [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1743 [851] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1743 [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1744 [852] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _1 - //SEG1744 [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1745 [853] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1745 [853] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1746 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1746 [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa + //SEG1747 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1747 [855] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1748 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1748 [856] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx + //SEG1749 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1749 [857] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1750 [858] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG1750 gfx_init_screen0::@3 + //SEG1751 gfx_init_screen0::@3 b3: - //SEG1751 [858] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1752 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1752 [859] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1753 [860] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1_from_b3 jmp breturn - //SEG1753 gfx_init_screen0::@return + //SEG1754 gfx_init_screen0::@return breturn: - //SEG1754 [860] return + //SEG1755 [861] return rts } -//SEG1755 keyboard_init +//SEG1756 keyboard_init keyboard_init: { - //SEG1756 [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG1757 [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta CIA1_PORT_A_DDR - //SEG1757 [862] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1758 [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta CIA1_PORT_B_DDR jmp breturn - //SEG1758 keyboard_init::@return + //SEG1759 keyboard_init::@return breturn: - //SEG1759 [863] return + //SEG1760 [864] return rts } DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a @@ -25118,7 +26015,7 @@ keyboard_init: { FORM_COLS: .text "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm @"+" nnnnnnnnnnnn jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+"@" ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b67 +Removing instruction jmp b68 Removing instruction jmp bend Removing instruction jmp b7 Removing instruction jmp b1 @@ -25543,8 +26440,8 @@ Replacing label b1_from_b3 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b3 with b1 Removing instruction bbegin: -Removing instruction b67_from_bbegin: -Removing instruction bend_from_b67: +Removing instruction b68_from_bbegin: +Removing instruction bend_from_b68: Removing instruction b7_from_main: Removing instruction gfx_init_from_b7: Removing instruction b1: @@ -25759,7 +26656,7 @@ Removing instruction b1_from_b3: Removing instruction b2_from_b1: Removing instruction b2_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b67: +Removing instruction b68: Removing instruction bend: Removing instruction b7: Removing instruction b1_from_b7: @@ -26189,7 +27086,7 @@ Fixing long branch [723] beq b13 to bne Fixing long branch [1247] bmi b2 to bpl FINAL SYMBOL TABLE -(label) @67 +(label) @68 (label) @begin (label) @end (byte*) BGCOL @@ -26202,10 +27099,14 @@ FINAL SYMBOL TABLE (const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283 (byte*) BGCOL4 (const byte*) BGCOL4#0 BGCOL4 = ((byte*))(word/dword/signed dword) 53284 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -26214,12 +27115,86 @@ FINAL SYMBOL TABLE (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 (byte*) CIA1_PORT_B_DDR (const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323 +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_CHUNKY @@ -26236,8 +27211,10 @@ FINAL SYMBOL TABLE (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK (byte*) DTV_GRAPHICS_VIC_BANK (const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) 53309 (byte) DTV_HIGHCOLOR @@ -26274,6 +27251,7 @@ FINAL SYMBOL TABLE (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK (byte*) FORM_CHARSET (const byte*) FORM_CHARSET#0 FORM_CHARSET = ((byte*))(word/signed word/dword/signed dword) 6144 (byte[]) FORM_COLS @@ -26284,6 +27262,35 @@ FINAL SYMBOL TABLE (const byte*) FORM_SCREEN#0 FORM_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) FORM_TEXT (const byte[]) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@" +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA (byte) KEY_COMMODORE (const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61 (byte) KEY_CRSR_DOWN @@ -26292,8 +27299,27 @@ FINAL SYMBOL TABLE (const byte) KEY_CRSR_RIGHT#0 KEY_CRSR_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) KEY_CTRL (const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58 +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L (byte) KEY_LSHIFT (const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15 +(byte) KEY_M +(byte) KEY_MINUS (byte) KEY_MODIFIER_COMMODORE (const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_MODIFIER_CTRL @@ -26304,10 +27330,36 @@ FINAL SYMBOL TABLE (const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) KEY_MODIFIER_SHIFT (const byte) KEY_MODIFIER_SHIFT#0 KEY_MODIFIER_SHIFT = (const byte) KEY_MODIFIER_LSHIFT#0|(const byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN (byte) KEY_RSHIFT (const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 52 +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (dword) PLANE_8BPP_CHUNKY (const dword) PLANE_8BPP_CHUNKY#0 PLANE_8BPP_CHUNKY = (dword/signed dword) 131072 (dword) PLANE_BLANK @@ -26326,16 +27378,33 @@ FINAL SYMBOL TABLE (const dword) PLANE_VERTICAL2#0 PLANE_VERTICAL2 = (dword/signed dword) 221184 (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte*) VIC_BITMAP (const byte*) VIC_BITMAP#0 VIC_BITMAP = ((byte*))(word/signed word/dword/signed dword) 24576 (byte) VIC_BMM @@ -26358,6 +27427,7 @@ FINAL SYMBOL TABLE (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 (byte*) VIC_SCREEN0 (const byte*) VIC_SCREEN0#0 VIC_SCREEN0 = ((byte*))(word/signed word/dword/signed dword) 16384 (byte*) VIC_SCREEN1 @@ -26368,6 +27438,8 @@ FINAL SYMBOL TABLE (const byte*) VIC_SCREEN3#0 VIC_SCREEN3 = ((byte*))(word/signed word/dword/signed dword) 19456 (byte*) VIC_SCREEN4 (const byte*) VIC_SCREEN4#0 VIC_SCREEN4 = ((byte*))(word/signed word/dword/signed dword) 20480 +(byte) WHITE +(byte) YELLOW (void()) apply_preset((byte) apply_preset::idx) (label) apply_preset::@22 (label) apply_preset::@23 @@ -27038,16 +28110,17 @@ FINAL SYMBOL TABLE (byte) gfx_init_plane_fill::by#1 by zp ZP_BYTE:7 16.5 (byte) gfx_init_plane_fill::by#4 by zp ZP_BYTE:7 3.6666666666666665 (byte) gfx_init_plane_fill::fill -(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.611111111111111 +(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.315789473684211 (byte*) gfx_init_plane_fill::gfxb (byte*) gfx_init_plane_fill::gfxb#1 gfxb zp ZP_WORD:3 42.599999999999994 (byte*) gfx_init_plane_fill::gfxb#2 gfxb zp ZP_WORD:3 157.0 (byte*) gfx_init_plane_fill::gfxb#3 gfxb zp ZP_WORD:3 24.0 (byte*~) gfx_init_plane_fill::gfxb#6 gfxb zp ZP_WORD:3 4.0 (byte) gfx_init_plane_fill::gfxbCpuBank -(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 4.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte x 2.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#1 reg byte x 20.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.6666666666666666 +(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.5714285714285714 (void()) gfx_init_plane_full() (label) gfx_init_plane_full::@return (void()) gfx_init_plane_horisontal() @@ -27348,6 +28421,7 @@ FINAL SYMBOL TABLE (byte) gfx_mode::vic_control#5 reg byte y 2.0 (byte) gfx_mode::vic_control2 (byte) gfx_mode::vic_control2#2 reg byte a 2.0 +(byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return @@ -27683,7 +28757,8 @@ reg byte a [ form_set_screen::$0 ] reg byte a [ form_set_screen::$1 ] reg byte a [ print_str_lines::ch#0 ] zp ZP_DWORD:19 [ gfx_init_plane_fill::$0 ] -reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ] +reg byte x [ gfx_init_plane_fill::gfxbCpuBank#0 ] +reg byte x [ gfx_init_plane_fill::gfxbCpuBank#1 ] reg byte a [ gfx_init_plane_horisontal2::$5 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] reg byte a [ gfx_init_plane_horisontal::$5 ] @@ -27715,7 +28790,7 @@ reg byte a [ gfx_init_screen0::$3 ] FINAL ASSEMBLER -Score: 11370517 +Score: 11370523 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -27849,11 +28924,11 @@ Score: 11370517 .label keyboard_modifiers = 2 .label form_cursor_count = $e //SEG2 @begin -//SEG3 [1] phi from @begin to @67 [phi:@begin->@67] -//SEG4 @67 +//SEG3 [1] phi from @begin to @68 [phi:@begin->@68] +//SEG4 @68 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @67 to @end [phi:@67->@end] +//SEG6 [3] phi from @68 to @end [phi:@68->@end] //SEG7 @end //SEG8 main main: { @@ -30084,27 +31159,27 @@ print_set_screen: { //SEG892 gfx_init gfx_init: { //SEG893 [450] call gfx_init_screen0 - //SEG894 [847] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] + //SEG894 [848] phi from gfx_init to gfx_init_screen0 [phi:gfx_init->gfx_init_screen0] jsr gfx_init_screen0 //SEG895 [451] phi from gfx_init to gfx_init::@1 [phi:gfx_init->gfx_init::@1] //SEG896 gfx_init::@1 //SEG897 [452] call gfx_init_screen1 - //SEG898 [835] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] + //SEG898 [836] phi from gfx_init::@1 to gfx_init_screen1 [phi:gfx_init::@1->gfx_init_screen1] jsr gfx_init_screen1 //SEG899 [453] phi from gfx_init::@1 to gfx_init::@2 [phi:gfx_init::@1->gfx_init::@2] //SEG900 gfx_init::@2 //SEG901 [454] call gfx_init_screen2 - //SEG902 [820] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] + //SEG902 [821] phi from gfx_init::@2 to gfx_init_screen2 [phi:gfx_init::@2->gfx_init_screen2] jsr gfx_init_screen2 //SEG903 [455] phi from gfx_init::@2 to gfx_init::@3 [phi:gfx_init::@2->gfx_init::@3] //SEG904 gfx_init::@3 //SEG905 [456] call gfx_init_screen3 - //SEG906 [806] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] + //SEG906 [807] phi from gfx_init::@3 to gfx_init_screen3 [phi:gfx_init::@3->gfx_init_screen3] jsr gfx_init_screen3 //SEG907 [457] phi from gfx_init::@3 to gfx_init::@4 [phi:gfx_init::@3->gfx_init::@4] //SEG908 gfx_init::@4 //SEG909 [458] call gfx_init_screen4 - //SEG910 [796] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] + //SEG910 [797] phi from gfx_init::@4 to gfx_init_screen4 [phi:gfx_init::@4->gfx_init_screen4] jsr gfx_init_screen4 //SEG911 [459] phi from gfx_init::@4 to gfx_init::@5 [phi:gfx_init::@4->gfx_init::@5] //SEG912 gfx_init::@5 @@ -30113,42 +31188,42 @@ gfx_init: { //SEG914 [461] phi from gfx_init::@5 to gfx_init::@6 [phi:gfx_init::@5->gfx_init::@6] //SEG915 gfx_init::@6 //SEG916 [462] call gfx_init_vic_bitmap - //SEG917 [605] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] + //SEG917 [606] phi from gfx_init::@6 to gfx_init_vic_bitmap [phi:gfx_init::@6->gfx_init_vic_bitmap] jsr gfx_init_vic_bitmap //SEG918 [463] phi from gfx_init::@6 to gfx_init::@7 [phi:gfx_init::@6->gfx_init::@7] //SEG919 gfx_init::@7 //SEG920 [464] call gfx_init_plane_8bppchunky - //SEG921 [585] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] + //SEG921 [586] phi from gfx_init::@7 to gfx_init_plane_8bppchunky [phi:gfx_init::@7->gfx_init_plane_8bppchunky] jsr gfx_init_plane_8bppchunky //SEG922 [465] phi from gfx_init::@7 to gfx_init::@8 [phi:gfx_init::@7->gfx_init::@8] //SEG923 gfx_init::@8 //SEG924 [466] call gfx_init_plane_charset8 - //SEG925 [560] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] + //SEG925 [561] phi from gfx_init::@8 to gfx_init_plane_charset8 [phi:gfx_init::@8->gfx_init_plane_charset8] jsr gfx_init_plane_charset8 //SEG926 [467] phi from gfx_init::@8 to gfx_init::@9 [phi:gfx_init::@8->gfx_init::@9] //SEG927 gfx_init::@9 //SEG928 [468] call gfx_init_plane_horisontal - //SEG929 [542] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] + //SEG929 [543] phi from gfx_init::@9 to gfx_init_plane_horisontal [phi:gfx_init::@9->gfx_init_plane_horisontal] jsr gfx_init_plane_horisontal //SEG930 [469] phi from gfx_init::@9 to gfx_init::@10 [phi:gfx_init::@9->gfx_init::@10] //SEG931 gfx_init::@10 //SEG932 [470] call gfx_init_plane_vertical - //SEG933 [529] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] + //SEG933 [530] phi from gfx_init::@10 to gfx_init_plane_vertical [phi:gfx_init::@10->gfx_init_plane_vertical] jsr gfx_init_plane_vertical //SEG934 [471] phi from gfx_init::@10 to gfx_init::@11 [phi:gfx_init::@10->gfx_init::@11] //SEG935 gfx_init::@11 //SEG936 [472] call gfx_init_plane_horisontal2 - //SEG937 [514] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] + //SEG937 [515] phi from gfx_init::@11 to gfx_init_plane_horisontal2 [phi:gfx_init::@11->gfx_init_plane_horisontal2] jsr gfx_init_plane_horisontal2 //SEG938 [473] phi from gfx_init::@11 to gfx_init::@12 [phi:gfx_init::@11->gfx_init::@12] //SEG939 gfx_init::@12 //SEG940 [474] call gfx_init_plane_vertical2 - //SEG941 [511] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] + //SEG941 [512] phi from gfx_init::@12 to gfx_init_plane_vertical2 [phi:gfx_init::@12->gfx_init_plane_vertical2] jsr gfx_init_plane_vertical2 //SEG942 [475] phi from gfx_init::@12 to gfx_init::@13 [phi:gfx_init::@12->gfx_init::@13] //SEG943 gfx_init::@13 //SEG944 [476] call gfx_init_plane_blank - //SEG945 [508] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] + //SEG945 [509] phi from gfx_init::@13 to gfx_init_plane_blank [phi:gfx_init::@13->gfx_init_plane_blank] jsr gfx_init_plane_blank //SEG946 [477] phi from gfx_init::@13 to gfx_init::@14 [phi:gfx_init::@13->gfx_init::@14] //SEG947 gfx_init::@14 @@ -30213,28 +31288,31 @@ gfx_init_plane_fill: { sta _1 lda _0+3 sta _1+1 - //SEG962 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuaa=_lo_vwuz1 + //SEG962 [486] (byte) gfx_init_plane_fill::gfxbCpuBank#0 ← < (word~) gfx_init_plane_fill::$1 -- vbuxx=_lo_vwuz1 lda _1 - //SEG963 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 - // (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 = (byte) gfx_init_plane_fill::gfxbCpuBank#0 // register copy reg byte a + tax + //SEG963 [487] (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 ← (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuaa=vbuxx + txa //SEG964 [488] call dtvSetCpuBankSegment1 - //SEG965 [504] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] - //SEG966 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy + //SEG965 [505] phi from gfx_init_plane_fill to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1] + //SEG966 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#11 [phi:gfx_init_plane_fill->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 //SEG967 gfx_init_plane_fill::@5 - //SEG968 [489] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 -- vwuz1=_lo_vduz2 + //SEG968 [489] (byte) gfx_init_plane_fill::gfxbCpuBank#1 ← ++ (byte) gfx_init_plane_fill::gfxbCpuBank#0 -- vbuxx=_inc_vbuxx + inx + //SEG969 [490] (word~) gfx_init_plane_fill::$4 ← < (dword) gfx_init_plane_fill::plane_addr#3 -- vwuz1=_lo_vduz2 lda plane_addr sta _4 lda plane_addr+1 sta _4+1 - //SEG969 [490] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 + //SEG970 [491] (word~) gfx_init_plane_fill::$5 ← (word~) gfx_init_plane_fill::$4 & (word/signed word/dword/signed dword) 16383 -- vwuz1=vwuz1_band_vwuc1 lda _5 and #<$3fff sta _5 lda _5+1 and #>$3fff sta _5+1 - //SEG970 [491] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 -- vwuz1=vwuc1_plus_vwuz1 + //SEG971 [492] (word/signed dword/dword~) gfx_init_plane_fill::$6 ← (word/signed word/dword/signed dword) 16384 + (word~) gfx_init_plane_fill::$5 -- vwuz1=vwuc1_plus_vwuz1 clc lda _6 adc #<$4000 @@ -30242,80 +31320,80 @@ gfx_init_plane_fill: { lda _6+1 adc #>$4000 sta _6+1 - //SEG971 [492] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 + //SEG972 [493] (byte*~) gfx_init_plane_fill::gfxb#6 ← (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 // (byte*~) gfx_init_plane_fill::gfxb#6 = (byte*)(word/signed dword/dword~) gfx_init_plane_fill::$6 // register copy zp ZP_WORD:3 - //SEG972 [493] phi from gfx_init_plane_fill::@5 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1] - //SEG973 [493] phi (byte) gfx_init_plane_fill::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#0] -- vbuz1=vbuc1 + //SEG973 [494] phi from gfx_init_plane_fill::@5 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1] + //SEG974 [494] phi (byte) gfx_init_plane_fill::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG974 [493] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*~) gfx_init_plane_fill::gfxb#6 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#1] -- register_copy - //SEG975 [493] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1] - //SEG976 [493] phi (byte) gfx_init_plane_fill::by#4 = (byte) gfx_init_plane_fill::by#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#0] -- register_copy - //SEG977 [493] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#1] -- register_copy - //SEG978 gfx_init_plane_fill::@1 + //SEG975 [494] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*~) gfx_init_plane_fill::gfxb#6 [phi:gfx_init_plane_fill::@5->gfx_init_plane_fill::@1#1] -- register_copy + //SEG976 [494] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1] + //SEG977 [494] phi (byte) gfx_init_plane_fill::by#4 = (byte) gfx_init_plane_fill::by#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#0] -- register_copy + //SEG978 [494] phi (byte*) gfx_init_plane_fill::gfxb#3 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@1#1] -- register_copy + //SEG979 gfx_init_plane_fill::@1 b1: - //SEG979 [494] phi from gfx_init_plane_fill::@1 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2] - //SEG980 [494] phi (byte) gfx_init_plane_fill::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#0] -- vbuxx=vbuc1 + //SEG980 [495] phi from gfx_init_plane_fill::@1 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2] + //SEG981 [495] phi (byte) gfx_init_plane_fill::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG981 [494] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#3 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#1] -- register_copy - //SEG982 [494] phi from gfx_init_plane_fill::@2 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2] - //SEG983 [494] phi (byte) gfx_init_plane_fill::bx#2 = (byte) gfx_init_plane_fill::bx#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#0] -- register_copy - //SEG984 [494] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#1] -- register_copy - //SEG985 gfx_init_plane_fill::@2 + //SEG982 [495] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#3 [phi:gfx_init_plane_fill::@1->gfx_init_plane_fill::@2#1] -- register_copy + //SEG983 [495] phi from gfx_init_plane_fill::@2 to gfx_init_plane_fill::@2 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2] + //SEG984 [495] phi (byte) gfx_init_plane_fill::bx#2 = (byte) gfx_init_plane_fill::bx#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#0] -- register_copy + //SEG985 [495] phi (byte*) gfx_init_plane_fill::gfxb#2 = (byte*) gfx_init_plane_fill::gfxb#1 [phi:gfx_init_plane_fill::@2->gfx_init_plane_fill::@2#1] -- register_copy + //SEG986 gfx_init_plane_fill::@2 b2: - //SEG986 [495] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 + //SEG987 [496] *((byte*) gfx_init_plane_fill::gfxb#2) ← (byte) gfx_init_plane_fill::fill#6 -- _deref_pbuz1=vbuz2 lda fill ldy #0 sta (gfxb),y - //SEG987 [496] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG988 [497] (byte*) gfx_init_plane_fill::gfxb#1 ← ++ (byte*) gfx_init_plane_fill::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG988 [497] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx + //SEG989 [498] (byte) gfx_init_plane_fill::bx#1 ← ++ (byte) gfx_init_plane_fill::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG989 [498] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG990 [499] if((byte) gfx_init_plane_fill::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_fill::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG990 gfx_init_plane_fill::@3 - //SEG991 [499] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 + //SEG991 gfx_init_plane_fill::@3 + //SEG992 [500] (byte) gfx_init_plane_fill::by#1 ← ++ (byte) gfx_init_plane_fill::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG992 [500] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG993 [501] if((byte) gfx_init_plane_fill::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b1 - //SEG993 [501] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@4 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@4] - //SEG994 gfx_init_plane_fill::@4 - //SEG995 [502] call dtvSetCpuBankSegment1 - //SEG996 [504] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] - //SEG997 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG994 [502] phi from gfx_init_plane_fill::@3 to gfx_init_plane_fill::@4 [phi:gfx_init_plane_fill::@3->gfx_init_plane_fill::@4] + //SEG995 gfx_init_plane_fill::@4 + //SEG996 [503] call dtvSetCpuBankSegment1 + //SEG997 [505] phi from gfx_init_plane_fill::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1] + //SEG998 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_fill::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG998 gfx_init_plane_fill::@return - //SEG999 [503] return + //SEG999 gfx_init_plane_fill::@return + //SEG1000 [504] return rts } -//SEG1000 dtvSetCpuBankSegment1 +//SEG1001 dtvSetCpuBankSegment1 dtvSetCpuBankSegment1: { .label cpuBank = $ff - //SEG1001 [505] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa + //SEG1002 [506] *((const byte*) dtvSetCpuBankSegment1::cpuBank#0) ← (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 -- _deref_pbuc1=vbuaa sta cpuBank - //SEG1002 asm { .byte$32,$dd lda$ff .byte$32,$00 } + //SEG1003 asm { .byte$32,$dd lda$ff .byte$32,$00 } .byte $32, $dd lda $ff .byte $32, $00 - //SEG1003 dtvSetCpuBankSegment1::@return - //SEG1004 [507] return + //SEG1004 dtvSetCpuBankSegment1::@return + //SEG1005 [508] return rts } -//SEG1005 gfx_init_plane_blank +//SEG1006 gfx_init_plane_blank gfx_init_plane_blank: { - //SEG1006 [509] call gfx_init_plane_fill - //SEG1007 [483] phi from gfx_init_plane_blank to gfx_init_plane_fill [phi:gfx_init_plane_blank->gfx_init_plane_fill] - //SEG1008 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG1007 [510] call gfx_init_plane_fill + //SEG1008 [483] phi from gfx_init_plane_blank to gfx_init_plane_fill [phi:gfx_init_plane_blank->gfx_init_plane_fill] + //SEG1009 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #0 sta gfx_init_plane_fill.fill - //SEG1009 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_BLANK#0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG1010 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_BLANK#0 [phi:gfx_init_plane_blank->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_BLANK @@ -30325,18 +31403,18 @@ gfx_init_plane_blank: { lda #>PLANE_BLANK>>$10 sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill - //SEG1010 gfx_init_plane_blank::@return - //SEG1011 [510] return + //SEG1011 gfx_init_plane_blank::@return + //SEG1012 [511] return rts } -//SEG1012 gfx_init_plane_vertical2 +//SEG1013 gfx_init_plane_vertical2 gfx_init_plane_vertical2: { - //SEG1013 [512] call gfx_init_plane_fill - //SEG1014 [483] phi from gfx_init_plane_vertical2 to gfx_init_plane_fill [phi:gfx_init_plane_vertical2->gfx_init_plane_fill] - //SEG1015 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 27 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#0] -- vbuz1=vbuc1 + //SEG1014 [513] call gfx_init_plane_fill + //SEG1015 [483] phi from gfx_init_plane_vertical2 to gfx_init_plane_fill [phi:gfx_init_plane_vertical2->gfx_init_plane_fill] + //SEG1016 [483] phi (byte) gfx_init_plane_fill::fill#6 = (byte/signed byte/word/signed word/dword/signed dword) 27 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#0] -- vbuz1=vbuc1 lda #$1b sta gfx_init_plane_fill.fill - //SEG1016 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_VERTICAL2#0 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#1] -- vduz1=vduc1 + //SEG1017 [483] phi (dword) gfx_init_plane_fill::plane_addr#3 = (const dword) PLANE_VERTICAL2#0 [phi:gfx_init_plane_vertical2->gfx_init_plane_fill#1] -- vduz1=vduc1 lda #PLANE_VERTICAL2 @@ -30346,236 +31424,236 @@ gfx_init_plane_vertical2: { lda #>PLANE_VERTICAL2>>$10 sta gfx_init_plane_fill.plane_addr+3 jsr gfx_init_plane_fill - //SEG1017 gfx_init_plane_vertical2::@return - //SEG1018 [513] return + //SEG1018 gfx_init_plane_vertical2::@return + //SEG1019 [514] return rts } -//SEG1019 gfx_init_plane_horisontal2 +//SEG1020 gfx_init_plane_horisontal2 gfx_init_plane_horisontal2: { .const gfxbCpuBank = PLANE_HORISONTAL2/$4000 .label gfxa = 3 .label ay = 2 - //SEG1020 [515] call dtvSetCpuBankSegment1 - //SEG1021 [504] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] - //SEG1022 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1021 [516] call dtvSetCpuBankSegment1 + //SEG1022 [505] phi from gfx_init_plane_horisontal2 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1] + //SEG1023 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal2::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal2->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG1023 [516] phi from gfx_init_plane_horisontal2 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1] - //SEG1024 [516] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#0] -- pbuz1=pbuc1 + //SEG1024 [517] phi from gfx_init_plane_horisontal2 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1] + //SEG1025 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL2#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#0] -- pbuz1=pbuc1 lda #<$4000+(PLANE_HORISONTAL2&$3fff) sta gfxa lda #>$4000+(PLANE_HORISONTAL2&$3fff) sta gfxa+1 - //SEG1025 [516] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#1] -- vbuz1=vbuc1 + //SEG1026 [517] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2->gfx_init_plane_horisontal2::@1#1] -- vbuz1=vbuc1 lda #0 sta ay - //SEG1026 [516] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1] - //SEG1027 [516] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#0] -- register_copy - //SEG1028 [516] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte) gfx_init_plane_horisontal2::ay#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#1] -- register_copy - //SEG1029 gfx_init_plane_horisontal2::@1 + //SEG1027 [517] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1] + //SEG1028 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#3 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#0] -- register_copy + //SEG1029 [517] phi (byte) gfx_init_plane_horisontal2::ay#4 = (byte) gfx_init_plane_horisontal2::ay#1 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@1#1] -- register_copy + //SEG1030 gfx_init_plane_horisontal2::@1 b1: - //SEG1030 [517] phi from gfx_init_plane_horisontal2::@1 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2] - //SEG1031 [517] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#0] -- vbuxx=vbuc1 + //SEG1031 [518] phi from gfx_init_plane_horisontal2::@1 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2] + //SEG1032 [518] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1032 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#3 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#1] -- register_copy - //SEG1033 [517] phi from gfx_init_plane_horisontal2::@2 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2] - //SEG1034 [517] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte) gfx_init_plane_horisontal2::ax#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#0] -- register_copy - //SEG1035 [517] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#1] -- register_copy - //SEG1036 gfx_init_plane_horisontal2::@2 + //SEG1033 [518] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#3 [phi:gfx_init_plane_horisontal2::@1->gfx_init_plane_horisontal2::@2#1] -- register_copy + //SEG1034 [518] phi from gfx_init_plane_horisontal2::@2 to gfx_init_plane_horisontal2::@2 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2] + //SEG1035 [518] phi (byte) gfx_init_plane_horisontal2::ax#2 = (byte) gfx_init_plane_horisontal2::ax#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#0] -- register_copy + //SEG1036 [518] phi (byte*) gfx_init_plane_horisontal2::gfxa#2 = (byte*) gfx_init_plane_horisontal2::gfxa#1 [phi:gfx_init_plane_horisontal2::@2->gfx_init_plane_horisontal2::@2#1] -- register_copy + //SEG1037 gfx_init_plane_horisontal2::@2 b2: - //SEG1037 [518] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 + //SEG1038 [519] (byte~) gfx_init_plane_horisontal2::$5 ← (byte) gfx_init_plane_horisontal2::ay#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_ror_1 lda ay lsr - //SEG1038 [519] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 + //SEG1039 [520] (byte) gfx_init_plane_horisontal2::row#0 ← (byte~) gfx_init_plane_horisontal2::$5 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuaa_band_vbuc1 and #3 - //SEG1039 [520] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa + //SEG1040 [521] *((byte*) gfx_init_plane_horisontal2::gfxa#2) ← *((const byte[]) gfx_init_plane_horisontal2::row_bitmask#0 + (byte) gfx_init_plane_horisontal2::row#0) -- _deref_pbuz1=pbuc1_derefidx_vbuaa tay lda row_bitmask,y ldy #0 sta (gfxa),y - //SEG1040 [521] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1041 [522] (byte*) gfx_init_plane_horisontal2::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal2::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1041 [522] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx + //SEG1042 [523] (byte) gfx_init_plane_horisontal2::ax#1 ← ++ (byte) gfx_init_plane_horisontal2::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG1042 [523] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1043 [524] if((byte) gfx_init_plane_horisontal2::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal2::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1043 gfx_init_plane_horisontal2::@3 - //SEG1044 [524] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1044 gfx_init_plane_horisontal2::@3 + //SEG1045 [525] (byte) gfx_init_plane_horisontal2::ay#1 ← ++ (byte) gfx_init_plane_horisontal2::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG1045 [525] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1046 [526] if((byte) gfx_init_plane_horisontal2::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal2::@1 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b1 - //SEG1046 [526] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@4 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@4] - //SEG1047 gfx_init_plane_horisontal2::@4 - //SEG1048 [527] call dtvSetCpuBankSegment1 - //SEG1049 [504] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] - //SEG1050 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1047 [527] phi from gfx_init_plane_horisontal2::@3 to gfx_init_plane_horisontal2::@4 [phi:gfx_init_plane_horisontal2::@3->gfx_init_plane_horisontal2::@4] + //SEG1048 gfx_init_plane_horisontal2::@4 + //SEG1049 [528] call dtvSetCpuBankSegment1 + //SEG1050 [505] phi from gfx_init_plane_horisontal2::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1] + //SEG1051 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal2::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG1051 gfx_init_plane_horisontal2::@return - //SEG1052 [528] return + //SEG1052 gfx_init_plane_horisontal2::@return + //SEG1053 [529] return rts row_bitmask: .byte 0, $55, $aa, $ff } -//SEG1053 gfx_init_plane_vertical +//SEG1054 gfx_init_plane_vertical gfx_init_plane_vertical: { .const gfxbCpuBank = PLANE_VERTICAL/$4000 .label gfxb = 3 .label by = 2 - //SEG1054 [530] call dtvSetCpuBankSegment1 - //SEG1055 [504] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] - //SEG1056 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1055 [531] call dtvSetCpuBankSegment1 + //SEG1056 [505] phi from gfx_init_plane_vertical to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1] + //SEG1057 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_vertical::gfxbCpuBank#0 [phi:gfx_init_plane_vertical->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG1057 [531] phi from gfx_init_plane_vertical to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1] - //SEG1058 [531] phi (byte) gfx_init_plane_vertical::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#0] -- vbuz1=vbuc1 + //SEG1058 [532] phi from gfx_init_plane_vertical to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1] + //SEG1059 [532] phi (byte) gfx_init_plane_vertical::by#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#0] -- vbuz1=vbuc1 lda #0 sta by - //SEG1059 [531] phi (byte*) gfx_init_plane_vertical::gfxb#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#1] -- pbuz1=pbuc1 + //SEG1060 [532] phi (byte*) gfx_init_plane_vertical::gfxb#3 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_VERTICAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_vertical->gfx_init_plane_vertical::@1#1] -- pbuz1=pbuc1 lda #<$4000+(PLANE_VERTICAL&$3fff) sta gfxb lda #>$4000+(PLANE_VERTICAL&$3fff) sta gfxb+1 - //SEG1060 [531] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1] - //SEG1061 [531] phi (byte) gfx_init_plane_vertical::by#4 = (byte) gfx_init_plane_vertical::by#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#0] -- register_copy - //SEG1062 [531] phi (byte*) gfx_init_plane_vertical::gfxb#3 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#1] -- register_copy - //SEG1063 gfx_init_plane_vertical::@1 + //SEG1061 [532] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1] + //SEG1062 [532] phi (byte) gfx_init_plane_vertical::by#4 = (byte) gfx_init_plane_vertical::by#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#0] -- register_copy + //SEG1063 [532] phi (byte*) gfx_init_plane_vertical::gfxb#3 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@1#1] -- register_copy + //SEG1064 gfx_init_plane_vertical::@1 b1: - //SEG1064 [532] phi from gfx_init_plane_vertical::@1 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2] - //SEG1065 [532] phi (byte) gfx_init_plane_vertical::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#0] -- vbuxx=vbuc1 + //SEG1065 [533] phi from gfx_init_plane_vertical::@1 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2] + //SEG1066 [533] phi (byte) gfx_init_plane_vertical::bx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1066 [532] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#3 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#1] -- register_copy - //SEG1067 [532] phi from gfx_init_plane_vertical::@2 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2] - //SEG1068 [532] phi (byte) gfx_init_plane_vertical::bx#2 = (byte) gfx_init_plane_vertical::bx#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#0] -- register_copy - //SEG1069 [532] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#1] -- register_copy - //SEG1070 gfx_init_plane_vertical::@2 + //SEG1067 [533] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#3 [phi:gfx_init_plane_vertical::@1->gfx_init_plane_vertical::@2#1] -- register_copy + //SEG1068 [533] phi from gfx_init_plane_vertical::@2 to gfx_init_plane_vertical::@2 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2] + //SEG1069 [533] phi (byte) gfx_init_plane_vertical::bx#2 = (byte) gfx_init_plane_vertical::bx#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#0] -- register_copy + //SEG1070 [533] phi (byte*) gfx_init_plane_vertical::gfxb#2 = (byte*) gfx_init_plane_vertical::gfxb#1 [phi:gfx_init_plane_vertical::@2->gfx_init_plane_vertical::@2#1] -- register_copy + //SEG1071 gfx_init_plane_vertical::@2 b2: - //SEG1071 [533] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 + //SEG1072 [534] *((byte*) gfx_init_plane_vertical::gfxb#2) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuz1=vbuc1 lda #$f ldy #0 sta (gfxb),y - //SEG1072 [534] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 + //SEG1073 [535] (byte*) gfx_init_plane_vertical::gfxb#1 ← ++ (byte*) gfx_init_plane_vertical::gfxb#2 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1073 [535] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx + //SEG1074 [536] (byte) gfx_init_plane_vertical::bx#1 ← ++ (byte) gfx_init_plane_vertical::bx#2 -- vbuxx=_inc_vbuxx inx - //SEG1074 [536] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1075 [537] if((byte) gfx_init_plane_vertical::bx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_vertical::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1075 gfx_init_plane_vertical::@3 - //SEG1076 [537] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 + //SEG1076 gfx_init_plane_vertical::@3 + //SEG1077 [538] (byte) gfx_init_plane_vertical::by#1 ← ++ (byte) gfx_init_plane_vertical::by#4 -- vbuz1=_inc_vbuz1 inc by - //SEG1077 [538] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1078 [539] if((byte) gfx_init_plane_vertical::by#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_vertical::@1 -- vbuz1_neq_vbuc1_then_la1 lda by cmp #$c8 bne b1 - //SEG1078 [539] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@4 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@4] - //SEG1079 gfx_init_plane_vertical::@4 - //SEG1080 [540] call dtvSetCpuBankSegment1 - //SEG1081 [504] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] - //SEG1082 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1079 [540] phi from gfx_init_plane_vertical::@3 to gfx_init_plane_vertical::@4 [phi:gfx_init_plane_vertical::@3->gfx_init_plane_vertical::@4] + //SEG1080 gfx_init_plane_vertical::@4 + //SEG1081 [541] call dtvSetCpuBankSegment1 + //SEG1082 [505] phi from gfx_init_plane_vertical::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1] + //SEG1083 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_vertical::@4->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG1083 gfx_init_plane_vertical::@return - //SEG1084 [541] return + //SEG1084 gfx_init_plane_vertical::@return + //SEG1085 [542] return rts } -//SEG1085 gfx_init_plane_horisontal +//SEG1086 gfx_init_plane_horisontal gfx_init_plane_horisontal: { .const gfxbCpuBank = PLANE_HORISONTAL/$4000 .label gfxa = 3 .label ay = 2 - //SEG1086 [543] call dtvSetCpuBankSegment1 - //SEG1087 [504] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] - //SEG1088 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1087 [544] call dtvSetCpuBankSegment1 + //SEG1088 [505] phi from gfx_init_plane_horisontal to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1] + //SEG1089 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_horisontal::gfxbCpuBank#0 [phi:gfx_init_plane_horisontal->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG1089 [544] phi from gfx_init_plane_horisontal to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1] - //SEG1090 [544] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#0] -- pbuz1=pbuc1 + //SEG1090 [545] phi from gfx_init_plane_horisontal to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1] + //SEG1091 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_HORISONTAL#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#0] -- pbuz1=pbuc1 lda #<$4000+(PLANE_HORISONTAL&$3fff) sta gfxa lda #>$4000+(PLANE_HORISONTAL&$3fff) sta gfxa+1 - //SEG1091 [544] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#1] -- vbuz1=vbuc1 + //SEG1092 [545] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal->gfx_init_plane_horisontal::@1#1] -- vbuz1=vbuc1 lda #0 sta ay - //SEG1092 [544] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1] - //SEG1093 [544] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#0] -- register_copy - //SEG1094 [544] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte) gfx_init_plane_horisontal::ay#1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#1] -- register_copy - //SEG1095 gfx_init_plane_horisontal::@1 + //SEG1093 [545] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1] + //SEG1094 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#6 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#0] -- register_copy + //SEG1095 [545] phi (byte) gfx_init_plane_horisontal::ay#4 = (byte) gfx_init_plane_horisontal::ay#1 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@1#1] -- register_copy + //SEG1096 gfx_init_plane_horisontal::@1 b1: - //SEG1096 [545] phi from gfx_init_plane_horisontal::@1 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2] - //SEG1097 [545] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#0] -- vbuxx=vbuc1 + //SEG1097 [546] phi from gfx_init_plane_horisontal::@1 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2] + //SEG1098 [546] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1098 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#6 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#1] -- register_copy - //SEG1099 [545] phi from gfx_init_plane_horisontal::@4 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2] - //SEG1100 [545] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#1 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#0] -- register_copy - //SEG1101 [545] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#1] -- register_copy - //SEG1102 gfx_init_plane_horisontal::@2 + //SEG1099 [546] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#6 [phi:gfx_init_plane_horisontal::@1->gfx_init_plane_horisontal::@2#1] -- register_copy + //SEG1100 [546] phi from gfx_init_plane_horisontal::@4 to gfx_init_plane_horisontal::@2 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2] + //SEG1101 [546] phi (byte) gfx_init_plane_horisontal::ax#2 = (byte) gfx_init_plane_horisontal::ax#1 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#0] -- register_copy + //SEG1102 [546] phi (byte*) gfx_init_plane_horisontal::gfxa#3 = (byte*) gfx_init_plane_horisontal::gfxa#7 [phi:gfx_init_plane_horisontal::@4->gfx_init_plane_horisontal::@2#1] -- register_copy + //SEG1103 gfx_init_plane_horisontal::@2 b2: - //SEG1103 [546] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 + //SEG1104 [547] (byte~) gfx_init_plane_horisontal::$5 ← (byte) gfx_init_plane_horisontal::ay#4 & (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuz1_band_vbuc1 lda #4 and ay - //SEG1104 [547] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 -- vbuaa_eq_0_then_la1 + //SEG1105 [548] if((byte~) gfx_init_plane_horisontal::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_horisontal::@3 -- vbuaa_eq_0_then_la1 cmp #0 beq b3 - //SEG1105 gfx_init_plane_horisontal::@5 - //SEG1106 [548] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 + //SEG1106 gfx_init_plane_horisontal::@5 + //SEG1107 [549] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuz1=vbuc1 lda #$ff ldy #0 sta (gfxa),y - //SEG1107 [549] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1108 [550] (byte*) gfx_init_plane_horisontal::gfxa#2 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1108 [550] phi from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 to gfx_init_plane_horisontal::@4 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4] - //SEG1109 [550] phi (byte*) gfx_init_plane_horisontal::gfxa#7 = (byte*) gfx_init_plane_horisontal::gfxa#1 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4#0] -- register_copy - //SEG1110 gfx_init_plane_horisontal::@4 + //SEG1109 [551] phi from gfx_init_plane_horisontal::@3 gfx_init_plane_horisontal::@5 to gfx_init_plane_horisontal::@4 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4] + //SEG1110 [551] phi (byte*) gfx_init_plane_horisontal::gfxa#7 = (byte*) gfx_init_plane_horisontal::gfxa#1 [phi:gfx_init_plane_horisontal::@3/gfx_init_plane_horisontal::@5->gfx_init_plane_horisontal::@4#0] -- register_copy + //SEG1111 gfx_init_plane_horisontal::@4 b4: - //SEG1111 [551] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx + //SEG1112 [552] (byte) gfx_init_plane_horisontal::ax#1 ← ++ (byte) gfx_init_plane_horisontal::ax#2 -- vbuxx=_inc_vbuxx inx - //SEG1112 [552] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1113 [553] if((byte) gfx_init_plane_horisontal::ax#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_plane_horisontal::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1113 gfx_init_plane_horisontal::@7 - //SEG1114 [553] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 + //SEG1114 gfx_init_plane_horisontal::@7 + //SEG1115 [554] (byte) gfx_init_plane_horisontal::ay#1 ← ++ (byte) gfx_init_plane_horisontal::ay#4 -- vbuz1=_inc_vbuz1 inc ay - //SEG1115 [554] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1116 [555] if((byte) gfx_init_plane_horisontal::ay#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_horisontal::@1 -- vbuz1_neq_vbuc1_then_la1 lda ay cmp #$c8 bne b1 - //SEG1116 [555] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@8 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@8] - //SEG1117 gfx_init_plane_horisontal::@8 - //SEG1118 [556] call dtvSetCpuBankSegment1 - //SEG1119 [504] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] - //SEG1120 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1117 [556] phi from gfx_init_plane_horisontal::@7 to gfx_init_plane_horisontal::@8 [phi:gfx_init_plane_horisontal::@7->gfx_init_plane_horisontal::@8] + //SEG1118 gfx_init_plane_horisontal::@8 + //SEG1119 [557] call dtvSetCpuBankSegment1 + //SEG1120 [505] phi from gfx_init_plane_horisontal::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1] + //SEG1121 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_horisontal::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG1121 gfx_init_plane_horisontal::@return - //SEG1122 [557] return + //SEG1122 gfx_init_plane_horisontal::@return + //SEG1123 [558] return rts - //SEG1123 gfx_init_plane_horisontal::@3 + //SEG1124 gfx_init_plane_horisontal::@3 b3: - //SEG1124 [558] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1125 [559] *((byte*) gfx_init_plane_horisontal::gfxa#3) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (gfxa),y - //SEG1125 [559] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 + //SEG1126 [560] (byte*) gfx_init_plane_horisontal::gfxa#1 ← ++ (byte*) gfx_init_plane_horisontal::gfxa#3 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: jmp b4 } -//SEG1126 gfx_init_plane_charset8 +//SEG1127 gfx_init_plane_charset8 gfx_init_plane_charset8: { .const gfxbCpuBank = PLANE_CHARSET8/$4000 .label bits = 8 @@ -30584,207 +31662,207 @@ gfx_init_plane_charset8: { .label col = 9 .label cr = 7 .label ch = 2 - //SEG1127 [561] call dtvSetCpuBankSegment1 - //SEG1128 [504] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] - //SEG1129 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1128 [562] call dtvSetCpuBankSegment1 + //SEG1129 [505] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1] + //SEG1130 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (const byte) gfx_init_plane_charset8::gfxbCpuBank#0 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #gfxbCpuBank jsr dtvSetCpuBankSegment1 - //SEG1130 gfx_init_plane_charset8::@9 - //SEG1131 [562] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 + //SEG1131 gfx_init_plane_charset8::@9 + //SEG1132 [563] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_CHARROM sta PROCPORT - //SEG1132 [563] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] - //SEG1133 [563] phi (byte) gfx_init_plane_charset8::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#0] -- vbuz1=vbuc1 + //SEG1133 [564] phi from gfx_init_plane_charset8::@9 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1] + //SEG1134 [564] phi (byte) gfx_init_plane_charset8::ch#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#0] -- vbuz1=vbuc1 lda #0 sta ch - //SEG1134 [563] phi (byte) gfx_init_plane_charset8::col#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#1] -- vbuz1=vbuc1 + //SEG1135 [564] phi (byte) gfx_init_plane_charset8::col#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#1] -- vbuz1=vbuc1 sta col - //SEG1135 [563] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 + //SEG1136 [564] phi (byte*) gfx_init_plane_charset8::gfxa#6 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#2] -- pbuz1=pbuc1 lda #<$4000+(PLANE_CHARSET8&$3fff) sta gfxa lda #>$4000+(PLANE_CHARSET8&$3fff) sta gfxa+1 - //SEG1136 [563] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 + //SEG1137 [564] phi (byte*) gfx_init_plane_charset8::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_plane_charset8::@9->gfx_init_plane_charset8::@1#3] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 - //SEG1137 [563] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] - //SEG1138 [563] phi (byte) gfx_init_plane_charset8::ch#8 = (byte) gfx_init_plane_charset8::ch#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#0] -- register_copy - //SEG1139 [563] phi (byte) gfx_init_plane_charset8::col#6 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#1] -- register_copy - //SEG1140 [563] phi (byte*) gfx_init_plane_charset8::gfxa#6 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#2] -- register_copy - //SEG1141 [563] phi (byte*) gfx_init_plane_charset8::chargen#3 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#3] -- register_copy - //SEG1142 gfx_init_plane_charset8::@1 + //SEG1138 [564] phi from gfx_init_plane_charset8::@7 to gfx_init_plane_charset8::@1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1] + //SEG1139 [564] phi (byte) gfx_init_plane_charset8::ch#8 = (byte) gfx_init_plane_charset8::ch#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#0] -- register_copy + //SEG1140 [564] phi (byte) gfx_init_plane_charset8::col#6 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#1] -- register_copy + //SEG1141 [564] phi (byte*) gfx_init_plane_charset8::gfxa#6 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#2] -- register_copy + //SEG1142 [564] phi (byte*) gfx_init_plane_charset8::chargen#3 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@7->gfx_init_plane_charset8::@1#3] -- register_copy + //SEG1143 gfx_init_plane_charset8::@1 b1: - //SEG1143 [564] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] - //SEG1144 [564] phi (byte) gfx_init_plane_charset8::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#0] -- vbuz1=vbuc1 + //SEG1144 [565] phi from gfx_init_plane_charset8::@1 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2] + //SEG1145 [565] phi (byte) gfx_init_plane_charset8::cr#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#0] -- vbuz1=vbuc1 lda #0 sta cr - //SEG1145 [564] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#1] -- register_copy - //SEG1146 [564] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#2] -- register_copy - //SEG1147 [564] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#3 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#3] -- register_copy - //SEG1148 [564] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] - //SEG1149 [564] phi (byte) gfx_init_plane_charset8::cr#6 = (byte) gfx_init_plane_charset8::cr#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#0] -- register_copy - //SEG1150 [564] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#1] -- register_copy - //SEG1151 [564] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#2] -- register_copy - //SEG1152 [564] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#3] -- register_copy - //SEG1153 gfx_init_plane_charset8::@2 + //SEG1146 [565] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#1] -- register_copy + //SEG1147 [565] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#6 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#2] -- register_copy + //SEG1148 [565] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#3 [phi:gfx_init_plane_charset8::@1->gfx_init_plane_charset8::@2#3] -- register_copy + //SEG1149 [565] phi from gfx_init_plane_charset8::@6 to gfx_init_plane_charset8::@2 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2] + //SEG1150 [565] phi (byte) gfx_init_plane_charset8::cr#6 = (byte) gfx_init_plane_charset8::cr#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#0] -- register_copy + //SEG1151 [565] phi (byte) gfx_init_plane_charset8::col#5 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#1] -- register_copy + //SEG1152 [565] phi (byte*) gfx_init_plane_charset8::gfxa#5 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#2] -- register_copy + //SEG1153 [565] phi (byte*) gfx_init_plane_charset8::chargen#2 = (byte*) gfx_init_plane_charset8::chargen#1 [phi:gfx_init_plane_charset8::@6->gfx_init_plane_charset8::@2#3] -- register_copy + //SEG1154 gfx_init_plane_charset8::@2 b2: - //SEG1154 [565] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 + //SEG1155 [566] (byte) gfx_init_plane_charset8::bits#0 ← *((byte*) gfx_init_plane_charset8::chargen#2) -- vbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta bits - //SEG1155 [566] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1156 [567] (byte*) gfx_init_plane_charset8::chargen#1 ← ++ (byte*) gfx_init_plane_charset8::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1156 [567] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] - //SEG1157 [567] phi (byte) gfx_init_plane_charset8::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#0] -- vbuxx=vbuc1 + //SEG1157 [568] phi from gfx_init_plane_charset8::@2 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3] + //SEG1158 [568] phi (byte) gfx_init_plane_charset8::cp#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG1158 [567] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#1] -- register_copy - //SEG1159 [567] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#2] -- register_copy - //SEG1160 [567] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#3] -- register_copy - //SEG1161 [567] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] - //SEG1162 [567] phi (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#0] -- register_copy - //SEG1163 [567] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#1] -- register_copy - //SEG1164 [567] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#2] -- register_copy - //SEG1165 [567] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#3] -- register_copy - //SEG1166 gfx_init_plane_charset8::@3 + //SEG1159 [568] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#1] -- register_copy + //SEG1160 [568] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#5 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#2] -- register_copy + //SEG1161 [568] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#0 [phi:gfx_init_plane_charset8::@2->gfx_init_plane_charset8::@3#3] -- register_copy + //SEG1162 [568] phi from gfx_init_plane_charset8::@4 to gfx_init_plane_charset8::@3 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3] + //SEG1163 [568] phi (byte) gfx_init_plane_charset8::cp#2 = (byte) gfx_init_plane_charset8::cp#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#0] -- register_copy + //SEG1164 [568] phi (byte) gfx_init_plane_charset8::col#2 = (byte) gfx_init_plane_charset8::col#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#1] -- register_copy + //SEG1165 [568] phi (byte*) gfx_init_plane_charset8::gfxa#2 = (byte*) gfx_init_plane_charset8::gfxa#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#2] -- register_copy + //SEG1166 [568] phi (byte) gfx_init_plane_charset8::bits#2 = (byte) gfx_init_plane_charset8::bits#1 [phi:gfx_init_plane_charset8::@4->gfx_init_plane_charset8::@3#3] -- register_copy + //SEG1167 gfx_init_plane_charset8::@3 b3: - //SEG1167 [568] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG1168 [569] (byte~) gfx_init_plane_charset8::$5 ← (byte) gfx_init_plane_charset8::bits#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and bits - //SEG1168 [569] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuaa_eq_0_then_la1 + //SEG1169 [570] if((byte~) gfx_init_plane_charset8::$5==(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG1169 gfx_init_plane_charset8::@5 - //SEG1170 [570] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 + //SEG1170 gfx_init_plane_charset8::@5 + //SEG1171 [571] (byte~) gfx_init_plane_charset8::c#3 ← (byte) gfx_init_plane_charset8::col#2 -- vbuaa=vbuz1 lda col - //SEG1171 [571] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] - //SEG1172 [571] phi (byte) gfx_init_plane_charset8::c#2 = (byte~) gfx_init_plane_charset8::c#3 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4#0] -- register_copy + //SEG1172 [572] phi from gfx_init_plane_charset8::@5 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4] + //SEG1173 [572] phi (byte) gfx_init_plane_charset8::c#2 = (byte~) gfx_init_plane_charset8::c#3 [phi:gfx_init_plane_charset8::@5->gfx_init_plane_charset8::@4#0] -- register_copy jmp b4 - //SEG1173 [571] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] + //SEG1174 [572] phi from gfx_init_plane_charset8::@3 to gfx_init_plane_charset8::@4 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4] b5: - //SEG1174 [571] phi (byte) gfx_init_plane_charset8::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4#0] -- vbuaa=vbuc1 + //SEG1175 [572] phi (byte) gfx_init_plane_charset8::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_charset8::@3->gfx_init_plane_charset8::@4#0] -- vbuaa=vbuc1 lda #0 - //SEG1175 gfx_init_plane_charset8::@4 + //SEG1176 gfx_init_plane_charset8::@4 b4: - //SEG1176 [572] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa + //SEG1177 [573] *((byte*) gfx_init_plane_charset8::gfxa#2) ← (byte) gfx_init_plane_charset8::c#2 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxa),y - //SEG1177 [573] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 + //SEG1178 [574] (byte*) gfx_init_plane_charset8::gfxa#1 ← ++ (byte*) gfx_init_plane_charset8::gfxa#2 -- pbuz1=_inc_pbuz1 inc gfxa bne !+ inc gfxa+1 !: - //SEG1178 [574] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG1179 [575] (byte) gfx_init_plane_charset8::bits#1 ← (byte) gfx_init_plane_charset8::bits#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl bits - //SEG1179 [575] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 + //SEG1180 [576] (byte) gfx_init_plane_charset8::col#1 ← ++ (byte) gfx_init_plane_charset8::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG1180 [576] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx + //SEG1181 [577] (byte) gfx_init_plane_charset8::cp#1 ← ++ (byte) gfx_init_plane_charset8::cp#2 -- vbuxx=_inc_vbuxx inx - //SEG1181 [577] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG1182 [578] if((byte) gfx_init_plane_charset8::cp#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b3 - //SEG1182 gfx_init_plane_charset8::@6 - //SEG1183 [578] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 + //SEG1183 gfx_init_plane_charset8::@6 + //SEG1184 [579] (byte) gfx_init_plane_charset8::cr#1 ← ++ (byte) gfx_init_plane_charset8::cr#6 -- vbuz1=_inc_vbuz1 inc cr - //SEG1184 [579] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG1185 [580] if((byte) gfx_init_plane_charset8::cr#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_plane_charset8::@2 -- vbuz1_neq_vbuc1_then_la1 lda cr cmp #8 bne b2 - //SEG1185 gfx_init_plane_charset8::@7 - //SEG1186 [580] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 + //SEG1186 gfx_init_plane_charset8::@7 + //SEG1187 [581] (byte) gfx_init_plane_charset8::ch#1 ← ++ (byte) gfx_init_plane_charset8::ch#8 -- vbuz1=_inc_vbuz1 inc ch - //SEG1187 [581] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 -- vbuz1_neq_0_then_la1 + //SEG1188 [582] if((byte) gfx_init_plane_charset8::ch#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_plane_charset8::@1 -- vbuz1_neq_0_then_la1 lda ch cmp #0 bne b1 - //SEG1188 gfx_init_plane_charset8::@8 - //SEG1189 [582] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 + //SEG1189 gfx_init_plane_charset8::@8 + //SEG1190 [583] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2 lda #PROCPORT_RAM_IO sta PROCPORT - //SEG1190 [583] call dtvSetCpuBankSegment1 - //SEG1191 [504] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] - //SEG1192 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1191 [584] call dtvSetCpuBankSegment1 + //SEG1192 [505] phi from gfx_init_plane_charset8::@8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1] + //SEG1193 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_charset8::@8->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG1193 gfx_init_plane_charset8::@return - //SEG1194 [584] return + //SEG1194 gfx_init_plane_charset8::@return + //SEG1195 [585] return rts } -//SEG1195 gfx_init_plane_8bppchunky +//SEG1196 gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky: { .label _6 = $10 .label gfxb = 5 .label x = 3 .label y = 2 - //SEG1196 [586] call dtvSetCpuBankSegment1 - //SEG1197 [504] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] - //SEG1198 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1197 [587] call dtvSetCpuBankSegment1 + //SEG1198 [505] phi from gfx_init_plane_8bppchunky to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1] + //SEG1199 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #PLANE_8BPP_CHUNKY/$4000 jsr dtvSetCpuBankSegment1 - //SEG1199 [587] phi from gfx_init_plane_8bppchunky to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1] - //SEG1200 [587] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = ++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#0] -- vbuxx=vbuc1 + //SEG1200 [588] phi from gfx_init_plane_8bppchunky to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1] + //SEG1201 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = ++((byte))(const dword) PLANE_8BPP_CHUNKY#0/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#0] -- vbuxx=vbuc1 ldx #PLANE_8BPP_CHUNKY/$4000+1 - //SEG1201 [587] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#1] -- vbuz1=vbuc1 + //SEG1202 [588] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG1202 [587] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#2] -- pbuz1=pbuc1 + //SEG1203 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky->gfx_init_plane_8bppchunky::@1#2] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 - //SEG1203 [587] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1] - //SEG1204 [587] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#0] -- register_copy - //SEG1205 [587] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte) gfx_init_plane_8bppchunky::y#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#1] -- register_copy - //SEG1206 [587] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#2] -- register_copy - //SEG1207 gfx_init_plane_8bppchunky::@1 + //SEG1204 [588] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1] + //SEG1205 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#0] -- register_copy + //SEG1206 [588] phi (byte) gfx_init_plane_8bppchunky::y#6 = (byte) gfx_init_plane_8bppchunky::y#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#1] -- register_copy + //SEG1207 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#5 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@1#2] -- register_copy + //SEG1208 gfx_init_plane_8bppchunky::@1 b1: - //SEG1208 [588] phi from gfx_init_plane_8bppchunky::@1 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2] - //SEG1209 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#0] -- register_copy - //SEG1210 [588] phi (word) gfx_init_plane_8bppchunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#1] -- vwuz1=vbuc1 + //SEG1209 [589] phi from gfx_init_plane_8bppchunky::@1 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2] + //SEG1210 [589] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#7 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#0] -- register_copy + //SEG1211 [589] phi (word) gfx_init_plane_8bppchunky::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#1] -- vwuz1=vbuc1 lda #<0 sta x sta x+1 - //SEG1211 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#5 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#2] -- register_copy - //SEG1212 [588] phi from gfx_init_plane_8bppchunky::@3 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2] - //SEG1213 [588] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#0] -- register_copy - //SEG1214 [588] phi (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#1] -- register_copy - //SEG1215 [588] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#2] -- register_copy - //SEG1216 gfx_init_plane_8bppchunky::@2 + //SEG1212 [589] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#5 [phi:gfx_init_plane_8bppchunky::@1->gfx_init_plane_8bppchunky::@2#2] -- register_copy + //SEG1213 [589] phi from gfx_init_plane_8bppchunky::@3 to gfx_init_plane_8bppchunky::@2 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2] + //SEG1214 [589] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#0] -- register_copy + //SEG1215 [589] phi (word) gfx_init_plane_8bppchunky::x#2 = (word) gfx_init_plane_8bppchunky::x#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#1] -- register_copy + //SEG1216 [589] phi (byte*) gfx_init_plane_8bppchunky::gfxb#3 = (byte*) gfx_init_plane_8bppchunky::gfxb#1 [phi:gfx_init_plane_8bppchunky::@3->gfx_init_plane_8bppchunky::@2#2] -- register_copy + //SEG1217 gfx_init_plane_8bppchunky::@2 b2: - //SEG1217 [589] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 -- pbuz1_neq_vwuc1_then_la1 + //SEG1218 [590] if((byte*) gfx_init_plane_8bppchunky::gfxb#3!=(word/dword/signed dword) 32768) goto gfx_init_plane_8bppchunky::@3 -- pbuz1_neq_vwuc1_then_la1 lda gfxb+1 cmp #>$8000 bne b3 lda gfxb cmp #<$8000 bne b3 - //SEG1218 gfx_init_plane_8bppchunky::@4 - //SEG1219 [590] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx + //SEG1219 gfx_init_plane_8bppchunky::@4 + //SEG1220 [591] (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 ← (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuaa=vbuxx txa - //SEG1220 [591] call dtvSetCpuBankSegment1 - //SEG1221 [504] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] - //SEG1222 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy + //SEG1221 [592] call dtvSetCpuBankSegment1 + //SEG1222 [505] phi from gfx_init_plane_8bppchunky::@4 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1] + //SEG1223 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = (byte) dtvSetCpuBankSegment1::cpuBankIdx#1 [phi:gfx_init_plane_8bppchunky::@4->dtvSetCpuBankSegment1#0] -- register_copy jsr dtvSetCpuBankSegment1 - //SEG1223 gfx_init_plane_8bppchunky::@8 - //SEG1224 [592] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx + //SEG1224 gfx_init_plane_8bppchunky::@8 + //SEG1225 [593] (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 ← ++ (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 -- vbuxx=_inc_vbuxx inx - //SEG1225 [593] phi from gfx_init_plane_8bppchunky::@8 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3] - //SEG1226 [593] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#0] -- register_copy - //SEG1227 [593] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#1] -- pbuz1=pbuc1 + //SEG1226 [594] phi from gfx_init_plane_8bppchunky::@8 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3] + //SEG1227 [594] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#2 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#0] -- register_copy + //SEG1228 [594] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = ((byte*))(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@8->gfx_init_plane_8bppchunky::@3#1] -- pbuz1=pbuc1 lda #<$4000 sta gfxb lda #>$4000 sta gfxb+1 - //SEG1228 [593] phi from gfx_init_plane_8bppchunky::@2 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3] - //SEG1229 [593] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#0] -- register_copy - //SEG1230 [593] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = (byte*) gfx_init_plane_8bppchunky::gfxb#3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#1] -- register_copy - //SEG1231 gfx_init_plane_8bppchunky::@3 + //SEG1229 [594] phi from gfx_init_plane_8bppchunky::@2 to gfx_init_plane_8bppchunky::@3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3] + //SEG1230 [594] phi (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#8 = (byte) gfx_init_plane_8bppchunky::gfxbCpuBank#4 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#0] -- register_copy + //SEG1231 [594] phi (byte*) gfx_init_plane_8bppchunky::gfxb#4 = (byte*) gfx_init_plane_8bppchunky::gfxb#3 [phi:gfx_init_plane_8bppchunky::@2->gfx_init_plane_8bppchunky::@3#1] -- register_copy + //SEG1232 gfx_init_plane_8bppchunky::@3 b3: - //SEG1232 [594] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 + //SEG1233 [595] (word~) gfx_init_plane_8bppchunky::$6 ← (word) gfx_init_plane_8bppchunky::x#2 + (byte) gfx_init_plane_8bppchunky::y#6 -- vwuz1=vwuz2_plus_vbuz3 lda y clc adc x @@ -30792,345 +31870,345 @@ gfx_init_plane_8bppchunky: { lda #0 adc x+1 sta _6+1 - //SEG1233 [595] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 + //SEG1234 [596] (byte) gfx_init_plane_8bppchunky::c#0 ← ((byte)) (word~) gfx_init_plane_8bppchunky::$6 -- vbuaa=_byte_vwuz1 lda _6 - //SEG1234 [596] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa + //SEG1235 [597] *((byte*) gfx_init_plane_8bppchunky::gfxb#4) ← (byte) gfx_init_plane_8bppchunky::c#0 -- _deref_pbuz1=vbuaa ldy #0 sta (gfxb),y - //SEG1235 [597] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 + //SEG1236 [598] (byte*) gfx_init_plane_8bppchunky::gfxb#1 ← ++ (byte*) gfx_init_plane_8bppchunky::gfxb#4 -- pbuz1=_inc_pbuz1 inc gfxb bne !+ inc gfxb+1 !: - //SEG1236 [598] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 + //SEG1237 [599] (word) gfx_init_plane_8bppchunky::x#1 ← ++ (word) gfx_init_plane_8bppchunky::x#2 -- vwuz1=_inc_vwuz1 inc x bne !+ inc x+1 !: - //SEG1237 [599] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 -- vwuz1_neq_vwuc1_then_la1 + //SEG1238 [600] if((word) gfx_init_plane_8bppchunky::x#1!=(word/signed word/dword/signed dword) 320) goto gfx_init_plane_8bppchunky::@2 -- vwuz1_neq_vwuc1_then_la1 lda x+1 cmp #>$140 bne b2 lda x cmp #<$140 bne b2 - //SEG1238 gfx_init_plane_8bppchunky::@5 - //SEG1239 [600] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 + //SEG1239 gfx_init_plane_8bppchunky::@5 + //SEG1240 [601] (byte) gfx_init_plane_8bppchunky::y#1 ← ++ (byte) gfx_init_plane_8bppchunky::y#6 -- vbuz1=_inc_vbuz1 inc y - //SEG1240 [601] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1241 [602] if((byte) gfx_init_plane_8bppchunky::y#1!=(byte/word/signed word/dword/signed dword) 200) goto gfx_init_plane_8bppchunky::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$c8 bne b1 - //SEG1241 [602] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@6 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@6] - //SEG1242 gfx_init_plane_8bppchunky::@6 - //SEG1243 [603] call dtvSetCpuBankSegment1 - //SEG1244 [504] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] - //SEG1245 [504] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 + //SEG1242 [603] phi from gfx_init_plane_8bppchunky::@5 to gfx_init_plane_8bppchunky::@6 [phi:gfx_init_plane_8bppchunky::@5->gfx_init_plane_8bppchunky::@6] + //SEG1243 gfx_init_plane_8bppchunky::@6 + //SEG1244 [604] call dtvSetCpuBankSegment1 + //SEG1245 [505] phi from gfx_init_plane_8bppchunky::@6 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1] + //SEG1246 [505] phi (byte) dtvSetCpuBankSegment1::cpuBankIdx#13 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 [phi:gfx_init_plane_8bppchunky::@6->dtvSetCpuBankSegment1#0] -- vbuaa=vbuc1 lda #$4000/$4000 jsr dtvSetCpuBankSegment1 - //SEG1246 gfx_init_plane_8bppchunky::@return - //SEG1247 [604] return + //SEG1247 gfx_init_plane_8bppchunky::@return + //SEG1248 [605] return rts } -//SEG1248 gfx_init_vic_bitmap +//SEG1249 gfx_init_vic_bitmap gfx_init_vic_bitmap: { .const lines_cnt = 9 .label l = 2 - //SEG1249 [606] call bitmap_init - //SEG1250 [758] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] + //SEG1250 [607] call bitmap_init + //SEG1251 [759] phi from gfx_init_vic_bitmap to bitmap_init [phi:gfx_init_vic_bitmap->bitmap_init] jsr bitmap_init - //SEG1251 [607] phi from gfx_init_vic_bitmap to gfx_init_vic_bitmap::@3 [phi:gfx_init_vic_bitmap->gfx_init_vic_bitmap::@3] - //SEG1252 gfx_init_vic_bitmap::@3 - //SEG1253 [608] call bitmap_clear + //SEG1252 [608] phi from gfx_init_vic_bitmap to gfx_init_vic_bitmap::@3 [phi:gfx_init_vic_bitmap->gfx_init_vic_bitmap::@3] + //SEG1253 gfx_init_vic_bitmap::@3 + //SEG1254 [609] call bitmap_clear jsr bitmap_clear - //SEG1254 [609] phi from gfx_init_vic_bitmap::@3 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1] - //SEG1255 [609] phi (byte) gfx_init_vic_bitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1#0] -- vbuz1=vbuc1 + //SEG1255 [610] phi from gfx_init_vic_bitmap::@3 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1] + //SEG1256 [610] phi (byte) gfx_init_vic_bitmap::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_vic_bitmap::@3->gfx_init_vic_bitmap::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG1256 [609] phi from gfx_init_vic_bitmap::@5 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1] - //SEG1257 [609] phi (byte) gfx_init_vic_bitmap::l#2 = (byte) gfx_init_vic_bitmap::l#1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1#0] -- register_copy - //SEG1258 gfx_init_vic_bitmap::@1 + //SEG1257 [610] phi from gfx_init_vic_bitmap::@5 to gfx_init_vic_bitmap::@1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1] + //SEG1258 [610] phi (byte) gfx_init_vic_bitmap::l#2 = (byte) gfx_init_vic_bitmap::l#1 [phi:gfx_init_vic_bitmap::@5->gfx_init_vic_bitmap::@1#0] -- register_copy + //SEG1259 gfx_init_vic_bitmap::@1 b1: - //SEG1259 [610] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1260 [611] (byte) bitmap_line::x0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy l lda lines_x,y sta bitmap_line.x0 - //SEG1260 [611] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1261 [612] (byte) bitmap_line::x1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_x#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_x+1,y sta bitmap_line.x1 - //SEG1261 [612] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG1262 [613] (byte) bitmap_line::y0#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0 + (byte) gfx_init_vic_bitmap::l#2) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_y,y sta bitmap_line.y0 - //SEG1262 [613] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG1263 [614] (byte) bitmap_line::y1#0 ← *((const byte[]) gfx_init_vic_bitmap::lines_y#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) gfx_init_vic_bitmap::l#2) -- vbuyy=pbuc1_derefidx_vbuz1 ldx l ldy lines_y+1,x - //SEG1263 [614] call bitmap_line + //SEG1264 [615] call bitmap_line jsr bitmap_line - //SEG1264 gfx_init_vic_bitmap::@5 - //SEG1265 [615] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 + //SEG1265 gfx_init_vic_bitmap::@5 + //SEG1266 [616] (byte) gfx_init_vic_bitmap::l#1 ← ++ (byte) gfx_init_vic_bitmap::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG1266 [616] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 -- vbuz1_lt_vbuc1_then_la1 + //SEG1267 [617] if((byte) gfx_init_vic_bitmap::l#1<(const byte) gfx_init_vic_bitmap::lines_cnt#0) goto gfx_init_vic_bitmap::@1 -- vbuz1_lt_vbuc1_then_la1 lda l cmp #lines_cnt bcc b1 - //SEG1267 gfx_init_vic_bitmap::@return - //SEG1268 [617] return + //SEG1268 gfx_init_vic_bitmap::@return + //SEG1269 [618] return rts lines_x: .byte 0, $ff, $ff, 0, 0, $80, $ff, $80, 0, $80 lines_y: .byte 0, 0, $c7, $c7, 0, 0, $64, $c7, $64, 0 } -//SEG1269 bitmap_line +//SEG1270 bitmap_line bitmap_line: { .label xd = 8 .label yd = 7 .label x0 = 9 .label x1 = $12 .label y0 = $f - //SEG1270 [618] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 + //SEG1271 [619] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuz1_lt_vbuz2_then_la1 lda x0 cmp x1 bcc b1 - //SEG1271 bitmap_line::@15 - //SEG1272 [619] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1272 bitmap_line::@15 + //SEG1273 [620] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 -- vbuz1=vbuz2_minus_vbuz3 sec sbc x1 sta xd - //SEG1273 [620] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 + //SEG1274 [621] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@2 -- vbuz1_lt_vbuyy_then_la1 tya cmp y0 beq !+ bcs b2 !: - //SEG1274 bitmap_line::@16 - //SEG1275 [621] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1275 bitmap_line::@16 + //SEG1276 [622] (byte) bitmap_line::yd#1 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy tya eor #$ff sec adc y0 sta yd - //SEG1276 [622] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 + //SEG1277 [623] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#1) goto bitmap_line::@3 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b3 - //SEG1277 bitmap_line::@17 - //SEG1278 [623] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1278 bitmap_line::@17 + //SEG1279 [624] (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y - //SEG1279 [624] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1280 [625] (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1280 [625] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 + //SEG1281 [626] (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_ydxi::y1#0 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1281 [626] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1282 [627] (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#1 // (byte) bitmap_line_ydxi::yd#0 = (byte) bitmap_line::yd#1 // register copy zp ZP_BYTE:7 - //SEG1282 [627] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1283 [628] (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_ydxi::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1283 [628] call bitmap_line_ydxi - //SEG1284 [702] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] - //SEG1285 [702] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy - //SEG1286 [702] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy - //SEG1287 [702] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy - //SEG1288 [702] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy - //SEG1289 [702] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy + //SEG1284 [629] call bitmap_line_ydxi + //SEG1285 [703] phi from bitmap_line::@17 to bitmap_line_ydxi [phi:bitmap_line::@17->bitmap_line_ydxi] + //SEG1286 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#0 [phi:bitmap_line::@17->bitmap_line_ydxi#0] -- register_copy + //SEG1287 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#1] -- register_copy + //SEG1288 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#0 [phi:bitmap_line::@17->bitmap_line_ydxi#2] -- register_copy + //SEG1289 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#0 [phi:bitmap_line::@17->bitmap_line_ydxi#3] -- register_copy + //SEG1290 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#0 [phi:bitmap_line::@17->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi - //SEG1290 bitmap_line::@return + //SEG1291 bitmap_line::@return breturn: - //SEG1291 [629] return + //SEG1292 [630] return rts - //SEG1292 bitmap_line::@3 + //SEG1293 bitmap_line::@3 b3: - //SEG1293 [630] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1294 [631] (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x - //SEG1294 [631] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1295 [632] (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyi.y - //SEG1295 [632] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 + //SEG1296 [633] (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#0 // (byte) bitmap_line_xdyi::x1#0 = (byte) bitmap_line::x0#0 // register copy zp ZP_BYTE:9 - //SEG1296 [633] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1297 [634] (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_xdyi::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1297 [634] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 + //SEG1298 [635] (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#1 // (byte) bitmap_line_xdyi::yd#0 = (byte) bitmap_line::yd#1 // register copy zp ZP_BYTE:7 - //SEG1298 [635] call bitmap_line_xdyi - //SEG1299 [680] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] - //SEG1300 [680] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy - //SEG1301 [680] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy - //SEG1302 [680] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy - //SEG1303 [680] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy - //SEG1304 [680] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy + //SEG1299 [636] call bitmap_line_xdyi + //SEG1300 [681] phi from bitmap_line::@3 to bitmap_line_xdyi [phi:bitmap_line::@3->bitmap_line_xdyi] + //SEG1301 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#0 [phi:bitmap_line::@3->bitmap_line_xdyi#0] -- register_copy + //SEG1302 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#1] -- register_copy + //SEG1303 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#0 [phi:bitmap_line::@3->bitmap_line_xdyi#2] -- register_copy + //SEG1304 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#0 [phi:bitmap_line::@3->bitmap_line_xdyi#3] -- register_copy + //SEG1305 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#0 [phi:bitmap_line::@3->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi jmp breturn - //SEG1305 bitmap_line::@2 + //SEG1306 bitmap_line::@2 b2: - //SEG1306 [636] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1307 [637] (byte) bitmap_line::yd#0 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 tya sec sbc y0 sta yd - //SEG1307 [637] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 + //SEG1308 [638] if((byte) bitmap_line::yd#0<(byte) bitmap_line::xd#1) goto bitmap_line::@6 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b6 - //SEG1308 bitmap_line::@20 - //SEG1309 [638] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1309 bitmap_line::@20 + //SEG1310 [639] (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxd.y - //SEG1310 [639] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1311 [640] (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1311 [640] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1312 [641] (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y1 - //SEG1312 [641] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1313 [642] (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#0 // (byte) bitmap_line_ydxd::yd#0 = (byte) bitmap_line::yd#0 // register copy zp ZP_BYTE:7 - //SEG1313 [642] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1314 [643] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_ydxd::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1314 [643] call bitmap_line_ydxd - //SEG1315 [732] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] - //SEG1316 [732] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy - //SEG1317 [732] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy - //SEG1318 [732] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy - //SEG1319 [732] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy - //SEG1320 [732] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy + //SEG1315 [644] call bitmap_line_ydxd + //SEG1316 [733] phi from bitmap_line::@20 to bitmap_line_ydxd [phi:bitmap_line::@20->bitmap_line_ydxd] + //SEG1317 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#0 [phi:bitmap_line::@20->bitmap_line_ydxd#0] -- register_copy + //SEG1318 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#1] -- register_copy + //SEG1319 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#0 [phi:bitmap_line::@20->bitmap_line_ydxd#2] -- register_copy + //SEG1320 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#0 [phi:bitmap_line::@20->bitmap_line_ydxd#3] -- register_copy + //SEG1321 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#0 [phi:bitmap_line::@20->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd jmp breturn - //SEG1321 bitmap_line::@6 + //SEG1322 bitmap_line::@6 b6: - //SEG1322 [644] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1323 [645] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyd.x - //SEG1323 [645] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1324 [646] (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_xdyd.y - //SEG1324 [646] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1325 [647] (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x1 - //SEG1325 [647] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 + //SEG1326 [648] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#1 // (byte) bitmap_line_xdyd::xd#0 = (byte) bitmap_line::xd#1 // register copy zp ZP_BYTE:8 - //SEG1326 [648] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 + //SEG1327 [649] (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#0 // (byte) bitmap_line_xdyd::yd#0 = (byte) bitmap_line::yd#0 // register copy zp ZP_BYTE:7 - //SEG1327 [649] call bitmap_line_xdyd - //SEG1328 [717] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] - //SEG1329 [717] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy - //SEG1330 [717] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy - //SEG1331 [717] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy - //SEG1332 [717] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy - //SEG1333 [717] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy + //SEG1328 [650] call bitmap_line_xdyd + //SEG1329 [718] phi from bitmap_line::@6 to bitmap_line_xdyd [phi:bitmap_line::@6->bitmap_line_xdyd] + //SEG1330 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#0 [phi:bitmap_line::@6->bitmap_line_xdyd#0] -- register_copy + //SEG1331 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#1] -- register_copy + //SEG1332 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#0 [phi:bitmap_line::@6->bitmap_line_xdyd#2] -- register_copy + //SEG1333 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line::@6->bitmap_line_xdyd#3] -- register_copy + //SEG1334 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#0 [phi:bitmap_line::@6->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd jmp breturn - //SEG1334 bitmap_line::@1 + //SEG1335 bitmap_line::@1 b1: - //SEG1335 [650] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG1336 [651] (byte) bitmap_line::xd#0 ← (byte) bitmap_line::x1#0 - (byte) bitmap_line::x0#0 -- vbuz1=vbuz2_minus_vbuz3 lda x1 sec sbc x0 sta xd - //SEG1336 [651] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 + //SEG1337 [652] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@9 -- vbuz1_lt_vbuyy_then_la1 tya cmp y0 beq !+ bcs b9 !: - //SEG1337 bitmap_line::@23 - //SEG1338 [652] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy + //SEG1338 bitmap_line::@23 + //SEG1339 [653] (byte) bitmap_line::yd#3 ← (byte) bitmap_line::y0#0 - (byte) bitmap_line::y1#0 -- vbuz1=vbuz2_minus_vbuyy tya eor #$ff sec adc y0 sta yd - //SEG1339 [653] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 + //SEG1340 [654] if((byte) bitmap_line::yd#3<(byte) bitmap_line::xd#0) goto bitmap_line::@10 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b10 - //SEG1340 bitmap_line::@24 - //SEG1341 [654] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1341 bitmap_line::@24 + //SEG1342 [655] (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxd.y - //SEG1342 [655] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 + //SEG1343 [656] (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG1343 [656] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 + //SEG1344 [657] (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_ydxd::y1#1 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1344 [657] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1345 [658] (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#3 // (byte) bitmap_line_ydxd::yd#1 = (byte) bitmap_line::yd#3 // register copy zp ZP_BYTE:7 - //SEG1345 [658] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1346 [659] (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_ydxd::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1346 [659] call bitmap_line_ydxd - //SEG1347 [732] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] - //SEG1348 [732] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy - //SEG1349 [732] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy - //SEG1350 [732] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy - //SEG1351 [732] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy - //SEG1352 [732] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy + //SEG1347 [660] call bitmap_line_ydxd + //SEG1348 [733] phi from bitmap_line::@24 to bitmap_line_ydxd [phi:bitmap_line::@24->bitmap_line_ydxd] + //SEG1349 [733] phi (byte) bitmap_line_ydxd::y1#6 = (byte) bitmap_line_ydxd::y1#1 [phi:bitmap_line::@24->bitmap_line_ydxd#0] -- register_copy + //SEG1350 [733] phi (byte) bitmap_line_ydxd::yd#5 = (byte) bitmap_line_ydxd::yd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#1] -- register_copy + //SEG1351 [733] phi (byte) bitmap_line_ydxd::y#7 = (byte) bitmap_line_ydxd::y#1 [phi:bitmap_line::@24->bitmap_line_ydxd#2] -- register_copy + //SEG1352 [733] phi (byte) bitmap_line_ydxd::x#5 = (byte) bitmap_line_ydxd::x#1 [phi:bitmap_line::@24->bitmap_line_ydxd#3] -- register_copy + //SEG1353 [733] phi (byte) bitmap_line_ydxd::xd#2 = (byte) bitmap_line_ydxd::xd#1 [phi:bitmap_line::@24->bitmap_line_ydxd#4] -- register_copy jsr bitmap_line_ydxd jmp breturn - //SEG1353 bitmap_line::@10 + //SEG1354 bitmap_line::@10 b10: - //SEG1354 [660] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1355 [661] (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyd.x - //SEG1355 [661] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 + //SEG1356 [662] (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_xdyd::y#1 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1356 [662] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 + //SEG1357 [663] (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#0 // (byte) bitmap_line_xdyd::x1#1 = (byte) bitmap_line::x1#0 // register copy zp ZP_BYTE:18 - //SEG1357 [663] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1358 [664] (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_xdyd::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1358 [664] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 + //SEG1359 [665] (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#3 // (byte) bitmap_line_xdyd::yd#1 = (byte) bitmap_line::yd#3 // register copy zp ZP_BYTE:7 - //SEG1359 [665] call bitmap_line_xdyd - //SEG1360 [717] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] - //SEG1361 [717] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy - //SEG1362 [717] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy - //SEG1363 [717] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy - //SEG1364 [717] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy - //SEG1365 [717] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy + //SEG1360 [666] call bitmap_line_xdyd + //SEG1361 [718] phi from bitmap_line::@10 to bitmap_line_xdyd [phi:bitmap_line::@10->bitmap_line_xdyd] + //SEG1362 [718] phi (byte) bitmap_line_xdyd::x1#6 = (byte) bitmap_line_xdyd::x1#1 [phi:bitmap_line::@10->bitmap_line_xdyd#0] -- register_copy + //SEG1363 [718] phi (byte) bitmap_line_xdyd::xd#5 = (byte) bitmap_line_xdyd::xd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#1] -- register_copy + //SEG1364 [718] phi (byte) bitmap_line_xdyd::y#5 = (byte) bitmap_line_xdyd::y#1 [phi:bitmap_line::@10->bitmap_line_xdyd#2] -- register_copy + //SEG1365 [718] phi (byte) bitmap_line_xdyd::x#6 = (byte) bitmap_line_xdyd::x#1 [phi:bitmap_line::@10->bitmap_line_xdyd#3] -- register_copy + //SEG1366 [718] phi (byte) bitmap_line_xdyd::yd#2 = (byte) bitmap_line_xdyd::yd#1 [phi:bitmap_line::@10->bitmap_line_xdyd#4] -- register_copy jsr bitmap_line_xdyd jmp breturn - //SEG1366 bitmap_line::@9 + //SEG1367 bitmap_line::@9 b9: - //SEG1367 [666] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 + //SEG1368 [667] (byte) bitmap_line::yd#10 ← (byte) bitmap_line::y1#0 - (byte) bitmap_line::y0#0 -- vbuz1=vbuyy_minus_vbuz2 tya sec sbc y0 sta yd - //SEG1368 [667] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 + //SEG1369 [668] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#0) goto bitmap_line::@13 -- vbuz1_lt_vbuz2_then_la1 cmp xd bcc b13 - //SEG1369 bitmap_line::@27 - //SEG1370 [668] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 + //SEG1370 bitmap_line::@27 + //SEG1371 [669] (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#0 -- vbuz1=vbuz2 lda y0 sta bitmap_line_ydxi.y - //SEG1371 [669] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 + //SEG1372 [670] (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#0 -- vbuxx=vbuz1 ldx x0 - //SEG1372 [670] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy + //SEG1373 [671] (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#0 -- vbuz1=vbuyy sty bitmap_line_ydxi.y1 - //SEG1373 [671] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1374 [672] (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#10 // (byte) bitmap_line_ydxi::yd#1 = (byte) bitmap_line::yd#10 // register copy zp ZP_BYTE:7 - //SEG1374 [672] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1375 [673] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_ydxi::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1375 [673] call bitmap_line_ydxi - //SEG1376 [702] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] - //SEG1377 [702] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy - //SEG1378 [702] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy - //SEG1379 [702] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy - //SEG1380 [702] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy - //SEG1381 [702] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy + //SEG1376 [674] call bitmap_line_ydxi + //SEG1377 [703] phi from bitmap_line::@27 to bitmap_line_ydxi [phi:bitmap_line::@27->bitmap_line_ydxi] + //SEG1378 [703] phi (byte) bitmap_line_ydxi::y1#6 = (byte) bitmap_line_ydxi::y1#1 [phi:bitmap_line::@27->bitmap_line_ydxi#0] -- register_copy + //SEG1379 [703] phi (byte) bitmap_line_ydxi::yd#5 = (byte) bitmap_line_ydxi::yd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#1] -- register_copy + //SEG1380 [703] phi (byte) bitmap_line_ydxi::y#6 = (byte) bitmap_line_ydxi::y#1 [phi:bitmap_line::@27->bitmap_line_ydxi#2] -- register_copy + //SEG1381 [703] phi (byte) bitmap_line_ydxi::x#5 = (byte) bitmap_line_ydxi::x#1 [phi:bitmap_line::@27->bitmap_line_ydxi#3] -- register_copy + //SEG1382 [703] phi (byte) bitmap_line_ydxi::xd#2 = (byte) bitmap_line_ydxi::xd#1 [phi:bitmap_line::@27->bitmap_line_ydxi#4] -- register_copy jsr bitmap_line_ydxi jmp breturn - //SEG1382 bitmap_line::@13 + //SEG1383 bitmap_line::@13 b13: - //SEG1383 [674] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 + //SEG1384 [675] (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#0 -- vbuz1=vbuz2 lda x0 sta bitmap_line_xdyi.x - //SEG1384 [675] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 + //SEG1385 [676] (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#0 // (byte) bitmap_line_xdyi::y#1 = (byte) bitmap_line::y0#0 // register copy zp ZP_BYTE:15 - //SEG1385 [676] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 + //SEG1386 [677] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda x1 sta bitmap_line_xdyi.x1 - //SEG1386 [677] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 + //SEG1387 [678] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#0 // (byte) bitmap_line_xdyi::xd#1 = (byte) bitmap_line::xd#0 // register copy zp ZP_BYTE:8 - //SEG1387 [678] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 + //SEG1388 [679] (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#10 // (byte) bitmap_line_xdyi::yd#1 = (byte) bitmap_line::yd#10 // register copy zp ZP_BYTE:7 - //SEG1388 [679] call bitmap_line_xdyi - //SEG1389 [680] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] - //SEG1390 [680] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy - //SEG1391 [680] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy - //SEG1392 [680] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy - //SEG1393 [680] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy - //SEG1394 [680] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy + //SEG1389 [680] call bitmap_line_xdyi + //SEG1390 [681] phi from bitmap_line::@13 to bitmap_line_xdyi [phi:bitmap_line::@13->bitmap_line_xdyi] + //SEG1391 [681] phi (byte) bitmap_line_xdyi::x1#6 = (byte) bitmap_line_xdyi::x1#1 [phi:bitmap_line::@13->bitmap_line_xdyi#0] -- register_copy + //SEG1392 [681] phi (byte) bitmap_line_xdyi::xd#5 = (byte) bitmap_line_xdyi::xd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#1] -- register_copy + //SEG1393 [681] phi (byte) bitmap_line_xdyi::y#5 = (byte) bitmap_line_xdyi::y#1 [phi:bitmap_line::@13->bitmap_line_xdyi#2] -- register_copy + //SEG1394 [681] phi (byte) bitmap_line_xdyi::x#6 = (byte) bitmap_line_xdyi::x#1 [phi:bitmap_line::@13->bitmap_line_xdyi#3] -- register_copy + //SEG1395 [681] phi (byte) bitmap_line_xdyi::yd#2 = (byte) bitmap_line_xdyi::yd#1 [phi:bitmap_line::@13->bitmap_line_xdyi#4] -- register_copy jsr bitmap_line_xdyi jmp breturn } -//SEG1395 bitmap_line_xdyi +//SEG1396 bitmap_line_xdyi bitmap_line_xdyi: { .label x = $e .label y = $f @@ -31138,76 +32216,76 @@ bitmap_line_xdyi: { .label xd = 8 .label yd = 7 .label e = $12 - //SEG1396 [681] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1397 [682] (byte) bitmap_line_xdyi::e#0 ← (byte) bitmap_line_xdyi::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG1397 [682] phi from bitmap_line_xdyi bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] - //SEG1398 [682] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#0 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy - //SEG1399 [682] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#5 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy - //SEG1400 [682] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#6 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy - //SEG1401 bitmap_line_xdyi::@1 + //SEG1398 [683] phi from bitmap_line_xdyi bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] + //SEG1399 [683] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#0 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy + //SEG1400 [683] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#5 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy + //SEG1401 [683] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#6 [phi:bitmap_line_xdyi/bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy + //SEG1402 bitmap_line_xdyi::@1 b1: - //SEG1402 [683] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 + //SEG1403 [684] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx x - //SEG1403 [684] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 + //SEG1404 [685] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1404 [685] call bitmap_plot - //SEG1405 [695] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] - //SEG1406 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy - //SEG1407 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy + //SEG1405 [686] call bitmap_plot + //SEG1406 [696] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] + //SEG1407 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy + //SEG1408 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1408 bitmap_line_xdyi::@5 - //SEG1409 [686] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 + //SEG1409 bitmap_line_xdyi::@5 + //SEG1410 [687] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1410 [687] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1411 [688] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG1411 [688] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1412 [689] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2 - //SEG1412 bitmap_line_xdyi::@3 - //SEG1413 [689] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1413 bitmap_line_xdyi::@3 + //SEG1414 [690] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1414 [690] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1415 [691] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG1415 [691] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2] - //SEG1416 [691] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#0] -- register_copy - //SEG1417 [691] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#1] -- register_copy - //SEG1418 bitmap_line_xdyi::@2 + //SEG1416 [692] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@5 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2] + //SEG1417 [692] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#0] -- register_copy + //SEG1418 [692] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@5->bitmap_line_xdyi::@2#1] -- register_copy + //SEG1419 bitmap_line_xdyi::@2 b2: - //SEG1419 [692] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1420 [693] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx x1 inx - //SEG1420 [693] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 + //SEG1421 [694] if((byte) bitmap_line_xdyi::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 cpx x bne b1 - //SEG1421 bitmap_line_xdyi::@return - //SEG1422 [694] return + //SEG1422 bitmap_line_xdyi::@return + //SEG1423 [695] return rts } -//SEG1423 bitmap_plot +//SEG1424 bitmap_plot bitmap_plot: { .label _0 = 3 .label plotter_x = 3 .label plotter_y = 5 - //SEG1424 [696] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx + //SEG1425 [697] (word) bitmap_plot::plotter_x#0 ← *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_plot::x#4) w= *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_xhi,x sta plotter_x+1 lda bitmap_plot_xlo,x sta plotter_x - //SEG1425 [697] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + //SEG1426 [698] (word) bitmap_plot::plotter_y#0 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#4) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta plotter_y+1 lda bitmap_plot_ylo,y sta plotter_y - //SEG1426 [698] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG1427 [699] (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda _0 clc adc plotter_y @@ -31215,79 +32293,79 @@ bitmap_plot: { lda _0+1 adc plotter_y+1 sta _0+1 - //SEG1427 [699] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx + //SEG1428 [700] (byte~) bitmap_plot::$1 ← *((byte*)(word~) bitmap_plot::$0) | *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (_0),y - //SEG1428 [700] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa + //SEG1429 [701] *((byte*)(word~) bitmap_plot::$0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa sta (_0),y - //SEG1429 bitmap_plot::@return - //SEG1430 [701] return + //SEG1430 bitmap_plot::@return + //SEG1431 [702] return rts } -//SEG1431 bitmap_line_ydxi +//SEG1432 bitmap_line_ydxi bitmap_line_ydxi: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //SEG1432 [703] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1433 [704] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG1433 [704] phi from bitmap_line_ydxi bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] - //SEG1434 [704] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy - //SEG1435 [704] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#6 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy - //SEG1436 [704] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#5 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy - //SEG1437 bitmap_line_ydxi::@1 + //SEG1434 [705] phi from bitmap_line_ydxi bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] + //SEG1435 [705] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy + //SEG1436 [705] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#6 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy + //SEG1437 [705] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#5 [phi:bitmap_line_ydxi/bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy + //SEG1438 bitmap_line_ydxi::@1 b1: - //SEG1438 [705] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 + //SEG1439 [706] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 // (byte) bitmap_plot::x#2 = (byte) bitmap_line_ydxi::x#3 // register copy reg byte x - //SEG1439 [706] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 + //SEG1440 [707] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy y - //SEG1440 [707] call bitmap_plot - //SEG1441 [695] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] - //SEG1442 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy - //SEG1443 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy + //SEG1441 [708] call bitmap_plot + //SEG1442 [696] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] + //SEG1443 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy + //SEG1444 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1444 bitmap_line_ydxi::@5 - //SEG1445 [708] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 + //SEG1445 bitmap_line_ydxi::@5 + //SEG1446 [709] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc y - //SEG1446 [709] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1447 [710] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG1447 [710] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1448 [711] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2 - //SEG1448 bitmap_line_ydxi::@3 - //SEG1449 [711] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx + //SEG1449 bitmap_line_ydxi::@3 + //SEG1450 [712] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuxx=_inc_vbuxx inx - //SEG1450 [712] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1451 [713] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (byte) bitmap_line_ydxi::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG1451 [713] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2] - //SEG1452 [713] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#0] -- register_copy - //SEG1453 [713] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#1] -- register_copy - //SEG1454 bitmap_line_ydxi::@2 + //SEG1452 [714] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@5 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2] + //SEG1453 [714] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#0] -- register_copy + //SEG1454 [714] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@5->bitmap_line_ydxi::@2#1] -- register_copy + //SEG1455 bitmap_line_ydxi::@2 b2: - //SEG1455 [714] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG1456 [715] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda y1 clc adc #1 - //SEG1456 [715] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 + //SEG1457 [716] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuaa_then_la1 cmp y bne b1 - //SEG1457 bitmap_line_ydxi::@return - //SEG1458 [716] return + //SEG1458 bitmap_line_ydxi::@return + //SEG1459 [717] return rts } -//SEG1459 bitmap_line_xdyd +//SEG1460 bitmap_line_xdyd bitmap_line_xdyd: { .label x = $e .label y = $f @@ -31295,254 +32373,254 @@ bitmap_line_xdyd: { .label xd = 8 .label yd = 7 .label e = 9 - //SEG1460 [718] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1461 [719] (byte) bitmap_line_xdyd::e#0 ← (byte) bitmap_line_xdyd::yd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG1461 [719] phi from bitmap_line_xdyd bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] - //SEG1462 [719] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#0 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy - //SEG1463 [719] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#5 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy - //SEG1464 [719] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#6 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy - //SEG1465 bitmap_line_xdyd::@1 + //SEG1462 [720] phi from bitmap_line_xdyd bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] + //SEG1463 [720] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#0 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy + //SEG1464 [720] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#5 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy + //SEG1465 [720] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#6 [phi:bitmap_line_xdyd/bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy + //SEG1466 bitmap_line_xdyd::@1 b1: - //SEG1466 [720] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 + //SEG1467 [721] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx x - //SEG1467 [721] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 + //SEG1468 [722] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy y - //SEG1468 [722] call bitmap_plot - //SEG1469 [695] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] - //SEG1470 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy - //SEG1471 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy + //SEG1469 [723] call bitmap_plot + //SEG1470 [696] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] + //SEG1471 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy + //SEG1472 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1472 bitmap_line_xdyd::@5 - //SEG1473 [723] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 + //SEG1473 bitmap_line_xdyd::@5 + //SEG1474 [724] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc x - //SEG1474 [724] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1475 [725] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG1475 [725] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1476 [726] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2 - //SEG1476 bitmap_line_xdyd::@3 - //SEG1477 [726] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 + //SEG1477 bitmap_line_xdyd::@3 + //SEG1478 [727] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec y - //SEG1478 [727] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1479 [728] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG1479 [728] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2] - //SEG1480 [728] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#0] -- register_copy - //SEG1481 [728] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#1] -- register_copy - //SEG1482 bitmap_line_xdyd::@2 + //SEG1480 [729] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@5 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2] + //SEG1481 [729] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#0] -- register_copy + //SEG1482 [729] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@5->bitmap_line_xdyd::@2#1] -- register_copy + //SEG1483 bitmap_line_xdyd::@2 b2: - //SEG1483 [729] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 + //SEG1484 [730] (byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1 ldx x1 inx - //SEG1484 [730] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 + //SEG1485 [731] if((byte) bitmap_line_xdyd::x#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuxx_then_la1 cpx x bne b1 - //SEG1485 bitmap_line_xdyd::@return - //SEG1486 [731] return + //SEG1486 bitmap_line_xdyd::@return + //SEG1487 [732] return rts } -//SEG1487 bitmap_line_ydxd +//SEG1488 bitmap_line_ydxd bitmap_line_ydxd: { .label y = $e .label y1 = $f .label yd = 7 .label xd = 8 .label e = 9 - //SEG1488 [733] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG1489 [734] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG1489 [734] phi from bitmap_line_ydxd bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] - //SEG1490 [734] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy - //SEG1491 [734] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#7 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy - //SEG1492 [734] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#5 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy - //SEG1493 bitmap_line_ydxd::@1 + //SEG1490 [735] phi from bitmap_line_ydxd bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] + //SEG1491 [735] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy + //SEG1492 [735] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#7 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy + //SEG1493 [735] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#5 [phi:bitmap_line_ydxd/bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy + //SEG1494 bitmap_line_ydxd::@1 b1: - //SEG1494 [735] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 + //SEG1495 [736] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 // (byte) bitmap_plot::x#3 = (byte) bitmap_line_ydxd::x#3 // register copy reg byte x - //SEG1495 [736] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 + //SEG1496 [737] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy y - //SEG1496 [737] call bitmap_plot - //SEG1497 [695] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] - //SEG1498 [695] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy - //SEG1499 [695] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy + //SEG1497 [738] call bitmap_plot + //SEG1498 [696] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] + //SEG1499 [696] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy + //SEG1500 [696] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot - //SEG1500 bitmap_line_ydxd::@5 - //SEG1501 [738] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 + //SEG1501 bitmap_line_ydxd::@5 + //SEG1502 [739] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG1502 [739] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG1503 [740] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#2 -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG1503 [740] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 + //SEG1504 [741] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2 - //SEG1504 bitmap_line_ydxd::@3 - //SEG1505 [741] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx + //SEG1505 bitmap_line_ydxd::@3 + //SEG1506 [742] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuxx=_dec_vbuxx dex - //SEG1506 [742] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 + //SEG1507 [743] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (byte) bitmap_line_ydxd::yd#5 -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG1507 [743] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2] - //SEG1508 [743] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#0] -- register_copy - //SEG1509 [743] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#1] -- register_copy - //SEG1510 bitmap_line_ydxd::@2 + //SEG1508 [744] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2] + //SEG1509 [744] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#0] -- register_copy + //SEG1510 [744] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@5->bitmap_line_ydxd::@2#1] -- register_copy + //SEG1511 bitmap_line_ydxd::@2 b2: - //SEG1511 [744] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 + //SEG1512 [745] (byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#6 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_plus_1 lda y1 clc adc #1 - //SEG1512 [745] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 + //SEG1513 [746] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuaa_then_la1 cmp y bne b1 - //SEG1513 bitmap_line_ydxd::@return - //SEG1514 [746] return + //SEG1514 bitmap_line_ydxd::@return + //SEG1515 [747] return rts } -//SEG1515 bitmap_clear +//SEG1516 bitmap_clear bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //SEG1516 [747] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG1517 [748] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_xhi#0) w= *((const byte[256]) bitmap_plot_xlo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta _3 lda bitmap_plot_xhi sta _3+1 - //SEG1517 [748] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG1518 [749] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3 - //SEG1518 [749] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] - //SEG1519 [749] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG1519 [750] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG1520 [750] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG1520 [749] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy - //SEG1521 [749] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] - //SEG1522 [749] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG1523 [749] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy - //SEG1524 bitmap_clear::@1 + //SEG1521 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG1522 [750] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG1523 [750] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG1524 [750] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG1525 bitmap_clear::@1 b1: - //SEG1525 [750] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] - //SEG1526 [750] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG1526 [751] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG1527 [751] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1527 [750] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy - //SEG1528 [750] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] - //SEG1529 [750] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG1530 [750] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy - //SEG1531 bitmap_clear::@2 + //SEG1528 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG1529 [751] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG1530 [751] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG1531 [751] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG1532 bitmap_clear::@2 b2: - //SEG1532 [751] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1533 [752] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y - //SEG1533 [752] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG1534 [753] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG1534 [753] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG1535 [754] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1535 [754] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1536 [755] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2 - //SEG1536 bitmap_clear::@3 - //SEG1537 [755] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG1537 bitmap_clear::@3 + //SEG1538 [756] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG1538 [756] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1539 [757] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1 - //SEG1539 bitmap_clear::@return - //SEG1540 [757] return + //SEG1540 bitmap_clear::@return + //SEG1541 [758] return rts } -//SEG1541 bitmap_init +//SEG1542 bitmap_init bitmap_init: { .label _6 = 2 .label yoffs = 3 - //SEG1542 [759] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG1543 [759] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 + //SEG1543 [760] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG1544 [760] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG1544 [759] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 + //SEG1545 [760] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG1545 [759] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG1546 [759] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG1547 [759] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG1548 bitmap_init::@1 + //SEG1546 [760] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG1547 [760] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG1548 [760] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG1549 bitmap_init::@1 b1: - //SEG1549 [760] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 + //SEG1550 [761] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte/word/signed word/dword/signed dword) 248 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG1550 [761] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1551 [762] *((const byte[256]) bitmap_plot_xlo#0 + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_xlo,x - //SEG1551 [762] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG1552 [763] *((const byte[256]) bitmap_plot_xhi#0 + (byte) bitmap_init::x#2) ← >(const byte*) VIC_BITMAP#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #>VIC_BITMAP sta bitmap_plot_xhi,x - //SEG1552 [763] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy + //SEG1553 [764] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta bitmap_plot_bit,x - //SEG1553 [764] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 + //SEG1554 [765] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG1554 [765] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuyy_neq_0_then_la1 + //SEG1555 [766] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuyy_neq_0_then_la1 cpy #0 bne b2 - //SEG1555 [766] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG1556 [766] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 + //SEG1556 [767] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG1557 [767] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 ldy #$80 - //SEG1557 bitmap_init::@2 + //SEG1558 bitmap_init::@2 b2: - //SEG1558 [767] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG1559 [768] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG1559 [768] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG1560 [769] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG1560 [769] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG1561 [769] phi (byte*) bitmap_init::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG1561 [770] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG1562 [770] phi (byte*) bitmap_init::yoffs#2 = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs sta yoffs+1 - //SEG1562 [769] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG1563 [770] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 tax - //SEG1563 [769] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG1564 [769] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG1565 [769] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG1566 bitmap_init::@3 + //SEG1564 [770] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG1565 [770] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG1566 [770] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG1567 bitmap_init::@3 b3: - //SEG1567 [770] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG1568 [771] (byte~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG1568 [771] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG1569 [772] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG1569 [772] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa + //SEG1570 [773] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG1570 [773] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1571 [774] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG1571 [774] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG1572 [775] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG1572 [775] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG1573 [776] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG1573 [776] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG1574 [777] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG1574 [777] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG1575 [778] if((byte~) bitmap_init::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG1575 bitmap_init::@7 - //SEG1576 [778] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG1576 bitmap_init::@7 + //SEG1577 [779] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -31550,420 +32628,420 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG1577 [779] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] - //SEG1578 [779] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy - //SEG1579 bitmap_init::@4 + //SEG1578 [780] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG1579 [780] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG1580 bitmap_init::@4 b4: - //SEG1580 [780] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG1581 [781] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG1581 [781] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG1582 [782] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG1582 bitmap_init::@return - //SEG1583 [782] return + //SEG1583 bitmap_init::@return + //SEG1584 [783] return rts - //SEG1584 [783] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] - //SEG1585 bitmap_init::@10 - //SEG1586 [766] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] - //SEG1587 [766] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG1585 [784] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG1586 bitmap_init::@10 + //SEG1587 [767] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG1588 [767] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } -//SEG1588 gfx_init_charset +//SEG1589 gfx_init_charset gfx_init_charset: { .label charset = 5 .label chargen = 3 .label c = 2 - //SEG1589 [784] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 + //SEG1590 [785] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG1590 [785] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] - //SEG1591 [785] phi (byte) gfx_init_charset::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset->gfx_init_charset::@1#0] -- vbuz1=vbuc1 + //SEG1591 [786] phi from gfx_init_charset to gfx_init_charset::@1 [phi:gfx_init_charset->gfx_init_charset::@1] + //SEG1592 [786] phi (byte) gfx_init_charset::c#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset->gfx_init_charset::@1#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG1592 [785] phi (byte*) gfx_init_charset::charset#3 = (const byte*) VIC_CHARSET_ROM#0 [phi:gfx_init_charset->gfx_init_charset::@1#1] -- pbuz1=pbuc1 + //SEG1593 [786] phi (byte*) gfx_init_charset::charset#3 = (const byte*) VIC_CHARSET_ROM#0 [phi:gfx_init_charset->gfx_init_charset::@1#1] -- pbuz1=pbuc1 lda #VIC_CHARSET_ROM sta charset+1 - //SEG1593 [785] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 + //SEG1594 [786] phi (byte*) gfx_init_charset::chargen#3 = (const byte*) CHARGEN#0 [phi:gfx_init_charset->gfx_init_charset::@1#2] -- pbuz1=pbuc1 lda #CHARGEN sta chargen+1 - //SEG1594 [785] phi from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] - //SEG1595 [785] phi (byte) gfx_init_charset::c#4 = (byte) gfx_init_charset::c#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#0] -- register_copy - //SEG1596 [785] phi (byte*) gfx_init_charset::charset#3 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#1] -- register_copy - //SEG1597 [785] phi (byte*) gfx_init_charset::chargen#3 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#2] -- register_copy - //SEG1598 gfx_init_charset::@1 + //SEG1595 [786] phi from gfx_init_charset::@3 to gfx_init_charset::@1 [phi:gfx_init_charset::@3->gfx_init_charset::@1] + //SEG1596 [786] phi (byte) gfx_init_charset::c#4 = (byte) gfx_init_charset::c#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#0] -- register_copy + //SEG1597 [786] phi (byte*) gfx_init_charset::charset#3 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#1] -- register_copy + //SEG1598 [786] phi (byte*) gfx_init_charset::chargen#3 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@3->gfx_init_charset::@1#2] -- register_copy + //SEG1599 gfx_init_charset::@1 b1: - //SEG1599 [786] phi from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] - //SEG1600 [786] phi (byte) gfx_init_charset::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset::@1->gfx_init_charset::@2#0] -- vbuxx=vbuc1 + //SEG1600 [787] phi from gfx_init_charset::@1 to gfx_init_charset::@2 [phi:gfx_init_charset::@1->gfx_init_charset::@2] + //SEG1601 [787] phi (byte) gfx_init_charset::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_charset::@1->gfx_init_charset::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1601 [786] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#1] -- register_copy - //SEG1602 [786] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#2] -- register_copy - //SEG1603 [786] phi from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] - //SEG1604 [786] phi (byte) gfx_init_charset::l#2 = (byte) gfx_init_charset::l#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#0] -- register_copy - //SEG1605 [786] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#1] -- register_copy - //SEG1606 [786] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#2] -- register_copy - //SEG1607 gfx_init_charset::@2 + //SEG1602 [787] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#1] -- register_copy + //SEG1603 [787] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#3 [phi:gfx_init_charset::@1->gfx_init_charset::@2#2] -- register_copy + //SEG1604 [787] phi from gfx_init_charset::@2 to gfx_init_charset::@2 [phi:gfx_init_charset::@2->gfx_init_charset::@2] + //SEG1605 [787] phi (byte) gfx_init_charset::l#2 = (byte) gfx_init_charset::l#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#0] -- register_copy + //SEG1606 [787] phi (byte*) gfx_init_charset::charset#2 = (byte*) gfx_init_charset::charset#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#1] -- register_copy + //SEG1607 [787] phi (byte*) gfx_init_charset::chargen#2 = (byte*) gfx_init_charset::chargen#1 [phi:gfx_init_charset::@2->gfx_init_charset::@2#2] -- register_copy + //SEG1608 gfx_init_charset::@2 b2: - //SEG1608 [787] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 + //SEG1609 [788] *((byte*) gfx_init_charset::charset#2) ← *((byte*) gfx_init_charset::chargen#2) -- _deref_pbuz1=_deref_pbuz2 ldy #0 lda (chargen),y sta (charset),y - //SEG1609 [788] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 + //SEG1610 [789] (byte*) gfx_init_charset::charset#1 ← ++ (byte*) gfx_init_charset::charset#2 -- pbuz1=_inc_pbuz1 inc charset bne !+ inc charset+1 !: - //SEG1610 [789] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 + //SEG1611 [790] (byte*) gfx_init_charset::chargen#1 ← ++ (byte*) gfx_init_charset::chargen#2 -- pbuz1=_inc_pbuz1 inc chargen bne !+ inc chargen+1 !: - //SEG1611 [790] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx + //SEG1612 [791] (byte) gfx_init_charset::l#1 ← ++ (byte) gfx_init_charset::l#2 -- vbuxx=_inc_vbuxx inx - //SEG1612 [791] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1613 [792] if((byte) gfx_init_charset::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto gfx_init_charset::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG1613 gfx_init_charset::@3 - //SEG1614 [792] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 + //SEG1614 gfx_init_charset::@3 + //SEG1615 [793] (byte) gfx_init_charset::c#1 ← ++ (byte) gfx_init_charset::c#4 -- vbuz1=_inc_vbuz1 inc c - //SEG1615 [793] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 -- vbuz1_neq_0_then_la1 + //SEG1616 [794] if((byte) gfx_init_charset::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto gfx_init_charset::@1 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b1 - //SEG1616 gfx_init_charset::@4 - //SEG1617 [794] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 + //SEG1617 gfx_init_charset::@4 + //SEG1618 [795] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) 55 -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG1618 gfx_init_charset::@return - //SEG1619 [795] return + //SEG1619 gfx_init_charset::@return + //SEG1620 [796] return rts } -//SEG1620 gfx_init_screen4 +//SEG1621 gfx_init_screen4 gfx_init_screen4: { .label ch = 3 .label cy = 2 - //SEG1621 [797] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] - //SEG1622 [797] phi (byte) gfx_init_screen4::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4->gfx_init_screen4::@1#0] -- vbuz1=vbuc1 + //SEG1622 [798] phi from gfx_init_screen4 to gfx_init_screen4::@1 [phi:gfx_init_screen4->gfx_init_screen4::@1] + //SEG1623 [798] phi (byte) gfx_init_screen4::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4->gfx_init_screen4::@1#0] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1623 [797] phi (byte*) gfx_init_screen4::ch#3 = (const byte*) VIC_SCREEN4#0 [phi:gfx_init_screen4->gfx_init_screen4::@1#1] -- pbuz1=pbuc1 + //SEG1624 [798] phi (byte*) gfx_init_screen4::ch#3 = (const byte*) VIC_SCREEN4#0 [phi:gfx_init_screen4->gfx_init_screen4::@1#1] -- pbuz1=pbuc1 lda #VIC_SCREEN4 sta ch+1 - //SEG1624 [797] phi from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] - //SEG1625 [797] phi (byte) gfx_init_screen4::cy#4 = (byte) gfx_init_screen4::cy#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#0] -- register_copy - //SEG1626 [797] phi (byte*) gfx_init_screen4::ch#3 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#1] -- register_copy - //SEG1627 gfx_init_screen4::@1 + //SEG1625 [798] phi from gfx_init_screen4::@3 to gfx_init_screen4::@1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1] + //SEG1626 [798] phi (byte) gfx_init_screen4::cy#4 = (byte) gfx_init_screen4::cy#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#0] -- register_copy + //SEG1627 [798] phi (byte*) gfx_init_screen4::ch#3 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@3->gfx_init_screen4::@1#1] -- register_copy + //SEG1628 gfx_init_screen4::@1 b1: - //SEG1628 [798] phi from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] - //SEG1629 [798] phi (byte) gfx_init_screen4::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#0] -- vbuxx=vbuc1 + //SEG1629 [799] phi from gfx_init_screen4::@1 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2] + //SEG1630 [799] phi (byte) gfx_init_screen4::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG1630 [798] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#3 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#1] -- register_copy - //SEG1631 [798] phi from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] - //SEG1632 [798] phi (byte) gfx_init_screen4::cx#2 = (byte) gfx_init_screen4::cx#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#0] -- register_copy - //SEG1633 [798] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#1] -- register_copy - //SEG1634 gfx_init_screen4::@2 + //SEG1631 [799] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#3 [phi:gfx_init_screen4::@1->gfx_init_screen4::@2#1] -- register_copy + //SEG1632 [799] phi from gfx_init_screen4::@2 to gfx_init_screen4::@2 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2] + //SEG1633 [799] phi (byte) gfx_init_screen4::cx#2 = (byte) gfx_init_screen4::cx#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#0] -- register_copy + //SEG1634 [799] phi (byte*) gfx_init_screen4::ch#2 = (byte*) gfx_init_screen4::ch#1 [phi:gfx_init_screen4::@2->gfx_init_screen4::@2#1] -- register_copy + //SEG1635 gfx_init_screen4::@2 b2: - //SEG1635 [799] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG1636 [800] *((byte*) gfx_init_screen4::ch#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (ch),y - //SEG1636 [800] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1637 [801] (byte*) gfx_init_screen4::ch#1 ← ++ (byte*) gfx_init_screen4::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1637 [801] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx + //SEG1638 [802] (byte) gfx_init_screen4::cx#1 ← ++ (byte) gfx_init_screen4::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1638 [802] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1639 [803] if((byte) gfx_init_screen4::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen4::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1639 gfx_init_screen4::@3 - //SEG1640 [803] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1640 gfx_init_screen4::@3 + //SEG1641 [804] (byte) gfx_init_screen4::cy#1 ← ++ (byte) gfx_init_screen4::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1641 [804] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1642 [805] if((byte) gfx_init_screen4::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen4::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1 - //SEG1642 gfx_init_screen4::@return - //SEG1643 [805] return + //SEG1643 gfx_init_screen4::@return + //SEG1644 [806] return rts } -//SEG1644 gfx_init_screen3 +//SEG1645 gfx_init_screen3 gfx_init_screen3: { .label _1 = 7 .label ch = 3 .label cy = 2 - //SEG1645 [807] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] - //SEG1646 [807] phi (byte*) gfx_init_screen3::ch#3 = (const byte*) VIC_SCREEN3#0 [phi:gfx_init_screen3->gfx_init_screen3::@1#0] -- pbuz1=pbuc1 + //SEG1646 [808] phi from gfx_init_screen3 to gfx_init_screen3::@1 [phi:gfx_init_screen3->gfx_init_screen3::@1] + //SEG1647 [808] phi (byte*) gfx_init_screen3::ch#3 = (const byte*) VIC_SCREEN3#0 [phi:gfx_init_screen3->gfx_init_screen3::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN3 sta ch+1 - //SEG1647 [807] phi (byte) gfx_init_screen3::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3->gfx_init_screen3::@1#1] -- vbuz1=vbuc1 + //SEG1648 [808] phi (byte) gfx_init_screen3::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3->gfx_init_screen3::@1#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1648 [807] phi from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] - //SEG1649 [807] phi (byte*) gfx_init_screen3::ch#3 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#0] -- register_copy - //SEG1650 [807] phi (byte) gfx_init_screen3::cy#4 = (byte) gfx_init_screen3::cy#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#1] -- register_copy - //SEG1651 gfx_init_screen3::@1 + //SEG1649 [808] phi from gfx_init_screen3::@3 to gfx_init_screen3::@1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1] + //SEG1650 [808] phi (byte*) gfx_init_screen3::ch#3 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#0] -- register_copy + //SEG1651 [808] phi (byte) gfx_init_screen3::cy#4 = (byte) gfx_init_screen3::cy#1 [phi:gfx_init_screen3::@3->gfx_init_screen3::@1#1] -- register_copy + //SEG1652 gfx_init_screen3::@1 b1: - //SEG1652 [808] phi from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] - //SEG1653 [808] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#3 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#0] -- register_copy - //SEG1654 [808] phi (byte) gfx_init_screen3::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#1] -- vbuxx=vbuc1 + //SEG1653 [809] phi from gfx_init_screen3::@1 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2] + //SEG1654 [809] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#3 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#0] -- register_copy + //SEG1655 [809] phi (byte) gfx_init_screen3::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen3::@1->gfx_init_screen3::@2#1] -- vbuxx=vbuc1 ldx #0 - //SEG1655 [808] phi from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] - //SEG1656 [808] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#0] -- register_copy - //SEG1657 [808] phi (byte) gfx_init_screen3::cx#2 = (byte) gfx_init_screen3::cx#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#1] -- register_copy - //SEG1658 gfx_init_screen3::@2 + //SEG1656 [809] phi from gfx_init_screen3::@2 to gfx_init_screen3::@2 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2] + //SEG1657 [809] phi (byte*) gfx_init_screen3::ch#2 = (byte*) gfx_init_screen3::ch#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#0] -- register_copy + //SEG1658 [809] phi (byte) gfx_init_screen3::cx#2 = (byte) gfx_init_screen3::cx#1 [phi:gfx_init_screen3::@2->gfx_init_screen3::@2#1] -- register_copy + //SEG1659 gfx_init_screen3::@2 b2: - //SEG1659 [809] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 + //SEG1660 [810] (byte~) gfx_init_screen3::$0 ← (byte) gfx_init_screen3::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuxx_band_vbuc1 txa and #3 - //SEG1660 [810] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1661 [811] (byte~) gfx_init_screen3::$1 ← (byte~) gfx_init_screen3::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _1 - //SEG1661 [811] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 + //SEG1662 [812] (byte~) gfx_init_screen3::$2 ← (byte) gfx_init_screen3::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_band_vbuc1 lda #3 and cy - //SEG1662 [812] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1663 [813] (byte~) gfx_init_screen3::$3 ← (byte~) gfx_init_screen3::$1 | (byte~) gfx_init_screen3::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1663 [813] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa + //SEG1664 [814] *((byte*) gfx_init_screen3::ch#2) ← (byte~) gfx_init_screen3::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1664 [814] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1665 [815] (byte*) gfx_init_screen3::ch#1 ← ++ (byte*) gfx_init_screen3::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1665 [815] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx + //SEG1666 [816] (byte) gfx_init_screen3::cx#1 ← ++ (byte) gfx_init_screen3::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1666 [816] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1667 [817] if((byte) gfx_init_screen3::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen3::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1667 gfx_init_screen3::@3 - //SEG1668 [817] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1668 gfx_init_screen3::@3 + //SEG1669 [818] (byte) gfx_init_screen3::cy#1 ← ++ (byte) gfx_init_screen3::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1669 [818] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1670 [819] if((byte) gfx_init_screen3::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen3::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1 - //SEG1670 gfx_init_screen3::@return - //SEG1671 [819] return + //SEG1671 gfx_init_screen3::@return + //SEG1672 [820] return rts } -//SEG1672 gfx_init_screen2 +//SEG1673 gfx_init_screen2 gfx_init_screen2: { .label col2 = 7 .label ch = 3 .label cy = 2 - //SEG1673 [821] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] - //SEG1674 [821] phi (byte*) gfx_init_screen2::ch#3 = (const byte*) VIC_SCREEN2#0 [phi:gfx_init_screen2->gfx_init_screen2::@1#0] -- pbuz1=pbuc1 + //SEG1674 [822] phi from gfx_init_screen2 to gfx_init_screen2::@1 [phi:gfx_init_screen2->gfx_init_screen2::@1] + //SEG1675 [822] phi (byte*) gfx_init_screen2::ch#3 = (const byte*) VIC_SCREEN2#0 [phi:gfx_init_screen2->gfx_init_screen2::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN2 sta ch+1 - //SEG1675 [821] phi (byte) gfx_init_screen2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2->gfx_init_screen2::@1#1] -- vbuz1=vbuc1 + //SEG1676 [822] phi (byte) gfx_init_screen2::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2->gfx_init_screen2::@1#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1676 [821] phi from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] - //SEG1677 [821] phi (byte*) gfx_init_screen2::ch#3 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#0] -- register_copy - //SEG1678 [821] phi (byte) gfx_init_screen2::cy#4 = (byte) gfx_init_screen2::cy#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#1] -- register_copy - //SEG1679 gfx_init_screen2::@1 + //SEG1677 [822] phi from gfx_init_screen2::@3 to gfx_init_screen2::@1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1] + //SEG1678 [822] phi (byte*) gfx_init_screen2::ch#3 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#0] -- register_copy + //SEG1679 [822] phi (byte) gfx_init_screen2::cy#4 = (byte) gfx_init_screen2::cy#1 [phi:gfx_init_screen2::@3->gfx_init_screen2::@1#1] -- register_copy + //SEG1680 gfx_init_screen2::@1 b1: - //SEG1680 [822] phi from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] - //SEG1681 [822] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#3 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#0] -- register_copy - //SEG1682 [822] phi (byte) gfx_init_screen2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#1] -- vbuxx=vbuc1 + //SEG1681 [823] phi from gfx_init_screen2::@1 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2] + //SEG1682 [823] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#3 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#0] -- register_copy + //SEG1683 [823] phi (byte) gfx_init_screen2::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen2::@1->gfx_init_screen2::@2#1] -- vbuxx=vbuc1 ldx #0 - //SEG1683 [822] phi from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] - //SEG1684 [822] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#0] -- register_copy - //SEG1685 [822] phi (byte) gfx_init_screen2::cx#2 = (byte) gfx_init_screen2::cx#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#1] -- register_copy - //SEG1686 gfx_init_screen2::@2 + //SEG1684 [823] phi from gfx_init_screen2::@2 to gfx_init_screen2::@2 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2] + //SEG1685 [823] phi (byte*) gfx_init_screen2::ch#2 = (byte*) gfx_init_screen2::ch#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#0] -- register_copy + //SEG1686 [823] phi (byte) gfx_init_screen2::cx#2 = (byte) gfx_init_screen2::cx#1 [phi:gfx_init_screen2::@2->gfx_init_screen2::@2#1] -- register_copy + //SEG1687 gfx_init_screen2::@2 b2: - //SEG1687 [823] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1688 [824] (byte~) gfx_init_screen2::$0 ← (byte) gfx_init_screen2::cx#2 + (byte) gfx_init_screen2::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1688 [824] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 + //SEG1689 [825] (byte) gfx_init_screen2::col#0 ← (byte~) gfx_init_screen2::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuyy=vbuaa_band_vbuc1 and #$f tay - //SEG1689 [825] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 -- vbuz1=vbuc1_minus_vbuyy + //SEG1690 [826] (byte) gfx_init_screen2::col2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - (byte) gfx_init_screen2::col#0 -- vbuz1=vbuc1_minus_vbuyy tya eor #$ff clc adc #$f+1 sta col2 - //SEG1690 [826] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 + //SEG1691 [827] (byte~) gfx_init_screen2::$3 ← (byte) gfx_init_screen2::col#0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuyy_rol_4 tya asl asl asl asl - //SEG1691 [827] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 + //SEG1692 [828] (byte~) gfx_init_screen2::$4 ← (byte~) gfx_init_screen2::$3 | (byte) gfx_init_screen2::col2#0 -- vbuaa=vbuaa_bor_vbuz1 ora col2 - //SEG1692 [828] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa + //SEG1693 [829] *((byte*) gfx_init_screen2::ch#2) ← (byte~) gfx_init_screen2::$4 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1693 [829] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1694 [830] (byte*) gfx_init_screen2::ch#1 ← ++ (byte*) gfx_init_screen2::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1694 [830] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx + //SEG1695 [831] (byte) gfx_init_screen2::cx#1 ← ++ (byte) gfx_init_screen2::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1695 [831] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1696 [832] if((byte) gfx_init_screen2::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen2::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1696 gfx_init_screen2::@3 - //SEG1697 [832] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1697 gfx_init_screen2::@3 + //SEG1698 [833] (byte) gfx_init_screen2::cy#1 ← ++ (byte) gfx_init_screen2::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1698 [833] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1699 [834] if((byte) gfx_init_screen2::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen2::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1 - //SEG1699 gfx_init_screen2::@return - //SEG1700 [834] return + //SEG1700 gfx_init_screen2::@return + //SEG1701 [835] return rts } -//SEG1701 gfx_init_screen1 +//SEG1702 gfx_init_screen1 gfx_init_screen1: { .label ch = 3 .label cy = 2 - //SEG1702 [836] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] - //SEG1703 [836] phi (byte*) gfx_init_screen1::ch#3 = (const byte*) VIC_SCREEN1#0 [phi:gfx_init_screen1->gfx_init_screen1::@1#0] -- pbuz1=pbuc1 + //SEG1703 [837] phi from gfx_init_screen1 to gfx_init_screen1::@1 [phi:gfx_init_screen1->gfx_init_screen1::@1] + //SEG1704 [837] phi (byte*) gfx_init_screen1::ch#3 = (const byte*) VIC_SCREEN1#0 [phi:gfx_init_screen1->gfx_init_screen1::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN1 sta ch+1 - //SEG1704 [836] phi (byte) gfx_init_screen1::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1->gfx_init_screen1::@1#1] -- vbuz1=vbuc1 + //SEG1705 [837] phi (byte) gfx_init_screen1::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1->gfx_init_screen1::@1#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1705 [836] phi from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] - //SEG1706 [836] phi (byte*) gfx_init_screen1::ch#3 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#0] -- register_copy - //SEG1707 [836] phi (byte) gfx_init_screen1::cy#4 = (byte) gfx_init_screen1::cy#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#1] -- register_copy - //SEG1708 gfx_init_screen1::@1 + //SEG1706 [837] phi from gfx_init_screen1::@3 to gfx_init_screen1::@1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1] + //SEG1707 [837] phi (byte*) gfx_init_screen1::ch#3 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#0] -- register_copy + //SEG1708 [837] phi (byte) gfx_init_screen1::cy#4 = (byte) gfx_init_screen1::cy#1 [phi:gfx_init_screen1::@3->gfx_init_screen1::@1#1] -- register_copy + //SEG1709 gfx_init_screen1::@1 b1: - //SEG1709 [837] phi from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] - //SEG1710 [837] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#3 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#0] -- register_copy - //SEG1711 [837] phi (byte) gfx_init_screen1::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#1] -- vbuxx=vbuc1 + //SEG1710 [838] phi from gfx_init_screen1::@1 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2] + //SEG1711 [838] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#3 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#0] -- register_copy + //SEG1712 [838] phi (byte) gfx_init_screen1::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen1::@1->gfx_init_screen1::@2#1] -- vbuxx=vbuc1 ldx #0 - //SEG1712 [837] phi from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] - //SEG1713 [837] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#0] -- register_copy - //SEG1714 [837] phi (byte) gfx_init_screen1::cx#2 = (byte) gfx_init_screen1::cx#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#1] -- register_copy - //SEG1715 gfx_init_screen1::@2 + //SEG1713 [838] phi from gfx_init_screen1::@2 to gfx_init_screen1::@2 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2] + //SEG1714 [838] phi (byte*) gfx_init_screen1::ch#2 = (byte*) gfx_init_screen1::ch#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#0] -- register_copy + //SEG1715 [838] phi (byte) gfx_init_screen1::cx#2 = (byte) gfx_init_screen1::cx#1 [phi:gfx_init_screen1::@2->gfx_init_screen1::@2#1] -- register_copy + //SEG1716 gfx_init_screen1::@2 b2: - //SEG1716 [838] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuaa=vbuxx_plus_vbuz1 + //SEG1717 [839] (byte~) gfx_init_screen1::$0 ← (byte) gfx_init_screen1::cx#2 + (byte) gfx_init_screen1::cy#4 -- vbuaa=vbuxx_plus_vbuz1 txa clc adc cy - //SEG1717 [839] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 + //SEG1718 [840] (byte~) gfx_init_screen1::$1 ← (byte~) gfx_init_screen1::$0 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuaa_band_vbuc1 and #$f - //SEG1718 [840] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa + //SEG1719 [841] *((byte*) gfx_init_screen1::ch#2) ← (byte~) gfx_init_screen1::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1719 [841] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1720 [842] (byte*) gfx_init_screen1::ch#1 ← ++ (byte*) gfx_init_screen1::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1720 [842] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx + //SEG1721 [843] (byte) gfx_init_screen1::cx#1 ← ++ (byte) gfx_init_screen1::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1721 [843] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1722 [844] if((byte) gfx_init_screen1::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen1::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1722 gfx_init_screen1::@3 - //SEG1723 [844] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1723 gfx_init_screen1::@3 + //SEG1724 [845] (byte) gfx_init_screen1::cy#1 ← ++ (byte) gfx_init_screen1::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1724 [845] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1725 [846] if((byte) gfx_init_screen1::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen1::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1 - //SEG1725 gfx_init_screen1::@return - //SEG1726 [846] return + //SEG1726 gfx_init_screen1::@return + //SEG1727 [847] return rts } -//SEG1727 gfx_init_screen0 +//SEG1728 gfx_init_screen0 gfx_init_screen0: { .label _1 = 7 .label ch = 3 .label cy = 2 - //SEG1728 [848] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] - //SEG1729 [848] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) VIC_SCREEN0#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 + //SEG1729 [849] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1] + //SEG1730 [849] phi (byte*) gfx_init_screen0::ch#3 = (const byte*) VIC_SCREEN0#0 [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1 lda #VIC_SCREEN0 sta ch+1 - //SEG1730 [848] phi (byte) gfx_init_screen0::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0->gfx_init_screen0::@1#1] -- vbuz1=vbuc1 + //SEG1731 [849] phi (byte) gfx_init_screen0::cy#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0->gfx_init_screen0::@1#1] -- vbuz1=vbuc1 lda #0 sta cy - //SEG1731 [848] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] - //SEG1732 [848] phi (byte*) gfx_init_screen0::ch#3 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#0] -- register_copy - //SEG1733 [848] phi (byte) gfx_init_screen0::cy#4 = (byte) gfx_init_screen0::cy#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#1] -- register_copy - //SEG1734 gfx_init_screen0::@1 + //SEG1732 [849] phi from gfx_init_screen0::@3 to gfx_init_screen0::@1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1] + //SEG1733 [849] phi (byte*) gfx_init_screen0::ch#3 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#0] -- register_copy + //SEG1734 [849] phi (byte) gfx_init_screen0::cy#4 = (byte) gfx_init_screen0::cy#1 [phi:gfx_init_screen0::@3->gfx_init_screen0::@1#1] -- register_copy + //SEG1735 gfx_init_screen0::@1 b1: - //SEG1735 [849] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] - //SEG1736 [849] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#3 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#0] -- register_copy - //SEG1737 [849] phi (byte) gfx_init_screen0::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#1] -- vbuxx=vbuc1 + //SEG1736 [850] phi from gfx_init_screen0::@1 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2] + //SEG1737 [850] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#3 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#0] -- register_copy + //SEG1738 [850] phi (byte) gfx_init_screen0::cx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:gfx_init_screen0::@1->gfx_init_screen0::@2#1] -- vbuxx=vbuc1 ldx #0 - //SEG1738 [849] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] - //SEG1739 [849] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#0] -- register_copy - //SEG1740 [849] phi (byte) gfx_init_screen0::cx#2 = (byte) gfx_init_screen0::cx#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#1] -- register_copy - //SEG1741 gfx_init_screen0::@2 + //SEG1739 [850] phi from gfx_init_screen0::@2 to gfx_init_screen0::@2 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2] + //SEG1740 [850] phi (byte*) gfx_init_screen0::ch#2 = (byte*) gfx_init_screen0::ch#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#0] -- register_copy + //SEG1741 [850] phi (byte) gfx_init_screen0::cx#2 = (byte) gfx_init_screen0::cx#1 [phi:gfx_init_screen0::@2->gfx_init_screen0::@2#1] -- register_copy + //SEG1742 gfx_init_screen0::@2 b2: - //SEG1742 [850] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 + //SEG1743 [851] (byte~) gfx_init_screen0::$0 ← (byte) gfx_init_screen0::cy#4 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuz1_band_vbuc1 lda #$f and cy - //SEG1743 [851] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 + //SEG1744 [852] (byte~) gfx_init_screen0::$1 ← (byte~) gfx_init_screen0::$0 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuaa_rol_4 asl asl asl asl sta _1 - //SEG1744 [852] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG1745 [853] (byte~) gfx_init_screen0::$2 ← (byte) gfx_init_screen0::cx#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG1745 [853] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa + //SEG1746 [854] (byte~) gfx_init_screen0::$3 ← (byte~) gfx_init_screen0::$1 | (byte~) gfx_init_screen0::$2 -- vbuaa=vbuz1_bor_vbuaa ora _1 - //SEG1746 [854] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa + //SEG1747 [855] *((byte*) gfx_init_screen0::ch#2) ← (byte~) gfx_init_screen0::$3 -- _deref_pbuz1=vbuaa ldy #0 sta (ch),y - //SEG1747 [855] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 + //SEG1748 [856] (byte*) gfx_init_screen0::ch#1 ← ++ (byte*) gfx_init_screen0::ch#2 -- pbuz1=_inc_pbuz1 inc ch bne !+ inc ch+1 !: - //SEG1748 [856] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx + //SEG1749 [857] (byte) gfx_init_screen0::cx#1 ← ++ (byte) gfx_init_screen0::cx#2 -- vbuxx=_inc_vbuxx inx - //SEG1749 [857] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG1750 [858] if((byte) gfx_init_screen0::cx#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto gfx_init_screen0::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG1750 gfx_init_screen0::@3 - //SEG1751 [858] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 + //SEG1751 gfx_init_screen0::@3 + //SEG1752 [859] (byte) gfx_init_screen0::cy#1 ← ++ (byte) gfx_init_screen0::cy#4 -- vbuz1=_inc_vbuz1 inc cy - //SEG1752 [859] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG1753 [860] if((byte) gfx_init_screen0::cy#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto gfx_init_screen0::@1 -- vbuz1_neq_vbuc1_then_la1 lda cy cmp #$19 bne b1 - //SEG1753 gfx_init_screen0::@return - //SEG1754 [860] return + //SEG1754 gfx_init_screen0::@return + //SEG1755 [861] return rts } -//SEG1755 keyboard_init +//SEG1756 keyboard_init keyboard_init: { - //SEG1756 [861] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG1757 [862] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta CIA1_PORT_A_DDR - //SEG1757 [862] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + //SEG1758 [863] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 lda #0 sta CIA1_PORT_B_DDR - //SEG1758 keyboard_init::@return - //SEG1759 [863] return + //SEG1759 keyboard_init::@return + //SEG1760 [864] return rts } DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a diff --git a/src/test/ref/c64dtv-gfxexplorer.sym b/src/test/ref/c64dtv-gfxexplorer.sym index 7c99558c5..4235c9db7 100644 --- a/src/test/ref/c64dtv-gfxexplorer.sym +++ b/src/test/ref/c64dtv-gfxexplorer.sym @@ -1,4 +1,4 @@ -(label) @67 +(label) @68 (label) @begin (label) @end (byte*) BGCOL @@ -11,10 +11,14 @@ (const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283 (byte*) BGCOL4 (const byte*) BGCOL4#0 BGCOL4 = ((byte*))(word/dword/signed dword) 53284 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -23,12 +27,86 @@ (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 (byte*) CIA1_PORT_B_DDR (const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323 +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_CHUNKY @@ -45,8 +123,10 @@ (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK (byte*) DTV_GRAPHICS_VIC_BANK (const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) 53309 (byte) DTV_HIGHCOLOR @@ -83,6 +163,7 @@ (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK (byte*) FORM_CHARSET (const byte*) FORM_CHARSET#0 FORM_CHARSET = ((byte*))(word/signed word/dword/signed dword) 6144 (byte[]) FORM_COLS @@ -93,6 +174,35 @@ (const byte*) FORM_SCREEN#0 FORM_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) FORM_TEXT (const byte[]) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@" +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA (byte) KEY_COMMODORE (const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61 (byte) KEY_CRSR_DOWN @@ -101,8 +211,27 @@ (const byte) KEY_CRSR_RIGHT#0 KEY_CRSR_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) KEY_CTRL (const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58 +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L (byte) KEY_LSHIFT (const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15 +(byte) KEY_M +(byte) KEY_MINUS (byte) KEY_MODIFIER_COMMODORE (const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_MODIFIER_CTRL @@ -113,10 +242,36 @@ (const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) KEY_MODIFIER_SHIFT (const byte) KEY_MODIFIER_SHIFT#0 KEY_MODIFIER_SHIFT = (const byte) KEY_MODIFIER_LSHIFT#0|(const byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN (byte) KEY_RSHIFT (const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 52 +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (dword) PLANE_8BPP_CHUNKY (const dword) PLANE_8BPP_CHUNKY#0 PLANE_8BPP_CHUNKY = (dword/signed dword) 131072 (dword) PLANE_BLANK @@ -135,16 +290,33 @@ (const dword) PLANE_VERTICAL2#0 PLANE_VERTICAL2 = (dword/signed dword) 221184 (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte*) VIC_BITMAP (const byte*) VIC_BITMAP#0 VIC_BITMAP = ((byte*))(word/signed word/dword/signed dword) 24576 (byte) VIC_BMM @@ -167,6 +339,7 @@ (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 (byte*) VIC_SCREEN0 (const byte*) VIC_SCREEN0#0 VIC_SCREEN0 = ((byte*))(word/signed word/dword/signed dword) 16384 (byte*) VIC_SCREEN1 @@ -177,6 +350,8 @@ (const byte*) VIC_SCREEN3#0 VIC_SCREEN3 = ((byte*))(word/signed word/dword/signed dword) 19456 (byte*) VIC_SCREEN4 (const byte*) VIC_SCREEN4#0 VIC_SCREEN4 = ((byte*))(word/signed word/dword/signed dword) 20480 +(byte) WHITE +(byte) YELLOW (void()) apply_preset((byte) apply_preset::idx) (label) apply_preset::@22 (label) apply_preset::@23 @@ -847,16 +1022,17 @@ (byte) gfx_init_plane_fill::by#1 by zp ZP_BYTE:7 16.5 (byte) gfx_init_plane_fill::by#4 by zp ZP_BYTE:7 3.6666666666666665 (byte) gfx_init_plane_fill::fill -(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.611111111111111 +(byte) gfx_init_plane_fill::fill#6 fill zp ZP_BYTE:2 5.315789473684211 (byte*) gfx_init_plane_fill::gfxb (byte*) gfx_init_plane_fill::gfxb#1 gfxb zp ZP_WORD:3 42.599999999999994 (byte*) gfx_init_plane_fill::gfxb#2 gfxb zp ZP_WORD:3 157.0 (byte*) gfx_init_plane_fill::gfxb#3 gfxb zp ZP_WORD:3 24.0 (byte*~) gfx_init_plane_fill::gfxb#6 gfxb zp ZP_WORD:3 4.0 (byte) gfx_init_plane_fill::gfxbCpuBank -(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 4.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte x 2.0 +(byte) gfx_init_plane_fill::gfxbCpuBank#1 reg byte x 20.0 (dword) gfx_init_plane_fill::plane_addr -(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.6666666666666666 +(dword) gfx_init_plane_fill::plane_addr#3 plane_addr zp ZP_DWORD:10 0.5714285714285714 (void()) gfx_init_plane_full() (label) gfx_init_plane_full::@return (void()) gfx_init_plane_horisontal() @@ -1157,6 +1333,7 @@ (byte) gfx_mode::vic_control#5 reg byte y 2.0 (byte) gfx_mode::vic_control2 (byte) gfx_mode::vic_control2#2 reg byte a 2.0 +(byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return @@ -1492,7 +1669,8 @@ reg byte a [ form_set_screen::$0 ] reg byte a [ form_set_screen::$1 ] reg byte a [ print_str_lines::ch#0 ] zp ZP_DWORD:19 [ gfx_init_plane_fill::$0 ] -reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ] +reg byte x [ gfx_init_plane_fill::gfxbCpuBank#0 ] +reg byte x [ gfx_init_plane_fill::gfxbCpuBank#1 ] reg byte a [ gfx_init_plane_horisontal2::$5 ] reg byte a [ gfx_init_plane_horisontal2::row#0 ] reg byte a [ gfx_init_plane_horisontal::$5 ] diff --git a/src/test/ref/c64dtv-gfxmodes.cfg b/src/test/ref/c64dtv-gfxmodes.cfg index 1fcf84d29..55caf35d7 100644 --- a/src/test/ref/c64dtv-gfxmodes.cfg +++ b/src/test/ref/c64dtv-gfxmodes.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@53 -@53: scope:[] from @begin + to:@54 +@54: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @53 +@end: scope:[] from @54 [3] phi() -main: scope:[main] from @53 +main: scope:[main] from @54 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -1502,7 +1502,7 @@ print_str_lines: scope:[print_str_lines] from menu::@48 to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 [866] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*) print_line_cursor#19 ) - [866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#101 ) + [866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#103 ) [866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT#0 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 to:print_str_lines::@return @@ -1527,7 +1527,7 @@ print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@4 print_str print_str_lines::@9: scope:[print_str_lines] from print_str_lines::@5 [877] phi() [878] call print_ln - [879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19 + [879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19 to:print_str_lines::@1 print_ln: scope:[print_ln] from print_str_lines::@9 [880] phi() diff --git a/src/test/ref/c64dtv-gfxmodes.log b/src/test/ref/c64dtv-gfxmodes.log index 6df55eebd..3bd38a1d6 100644 --- a/src/test/ref/c64dtv-gfxmodes.log +++ b/src/test/ref/c64dtv-gfxmodes.log @@ -5,43 +5,94 @@ CONTROL FLOW GRAPH SSA (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 - to:@3 -@3: scope:[] from @begin + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) DTV_FEATURE#0 ← ((byte*)) (word/dword/signed dword) 53311 (byte) DTV_FEATURE_ENABLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_FEATURE_DISABLE_TIL_RESET#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) DTV_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53308 (byte) DTV_LINEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) DTV_BORDER_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_HIGHCOLOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DTV_OVERSCAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) DTV_COLORRAM_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BADLINE_OFF#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) DTV_CHUNKY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte*) DTV_PALETTE#0 ← ((byte*)) (word/dword/signed dword) 53760 (byte[16]) DTV_PALETTE_DEFAULT#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 54, (byte/word/signed word/dword/signed dword) 190, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 255, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 59, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 154, (byte/signed byte/word/signed word/dword/signed dword) 10 } @@ -57,11 +108,13 @@ CONTROL FLOW GRAPH SSA (byte*) DTV_PLANEB_STEP#0 ← ((byte*)) (word/dword/signed dword) 53324 (byte*) DTV_PLANEB_MODULO_LO#0 ← ((byte*)) (word/dword/signed dword) 53319 (byte*) DTV_PLANEB_MODULO_HI#0 ← ((byte*)) (word/dword/signed dword) 53320 + (byte*) DTV_SPRITE_BANK#0 ← ((byte*)) (word/dword/signed dword) 53325 (byte*) DTV_COLOR_BANK_LO#0 ← ((byte*)) (word/dword/signed dword) 53302 (byte*) DTV_COLOR_BANK_HI#0 ← ((byte*)) (word/dword/signed dword) 53303 (dword) DTV_COLOR_BANK_DEFAULT#0 ← (dword/signed dword) 120832 (byte*) DTV_GRAPHICS_VIC_BANK#0 ← ((byte*)) (word/dword/signed dword) 53309 - to:@4 + (byte*) DTV_GRAPHICS_HICOL_BANK#0 ← ((byte*)) (word/dword/signed dword) 53310 + to:@5 dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@8 (byte) dtvSetCpuBankSegment1::cpuBankIdx#3 ← phi( mode_8bppchunkybmm::@5/(byte) dtvSetCpuBankSegment1::cpuBankIdx#0 mode_8bppchunkybmm::@6/(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 mode_8bppchunkybmm::@8/(byte) dtvSetCpuBankSegment1::cpuBankIdx#2 ) (byte*) dtvSetCpuBankSegment1::cpuBank#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 @@ -71,11 +124,75 @@ dtvSetCpuBankSegment1: scope:[dtvSetCpuBankSegment1] from mode_8bppchunkybmm::@ dtvSetCpuBankSegment1::@return: scope:[dtvSetCpuBankSegment1] from dtvSetCpuBankSegment1 return to:@return -@4: scope:[] from @3 +@5: scope:[] from @4 + (byte*) DTV_BLITTER_SRCA_LO#0 ← ((byte*)) (word/dword/signed dword) 54048 + (byte*) DTV_BLITTER_SRCA_MI#0 ← ((byte*)) (word/dword/signed dword) 54049 + (byte*) DTV_BLITTER_SRCA_HI#0 ← ((byte*)) (word/dword/signed dword) 54050 + (byte*) DTV_BLITTER_SRCA_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54051 + (byte*) DTV_BLITTER_SRCA_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54052 + (byte*) DTV_BLITTER_SRCA_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54053 + (byte*) DTV_BLITTER_SRCA_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54054 + (byte*) DTV_BLITTER_SRCA_STEP#0 ← ((byte*)) (word/dword/signed dword) 54055 + (byte*) DTV_BLITTER_SRCB_LO#0 ← ((byte*)) (word/dword/signed dword) 54056 + (byte*) DTV_BLITTER_SRCB_MI#0 ← ((byte*)) (word/dword/signed dword) 54057 + (byte*) DTV_BLITTER_SRCB_HI#0 ← ((byte*)) (word/dword/signed dword) 54058 + (byte*) DTV_BLITTER_SRCB_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54059 + (byte*) DTV_BLITTER_SRCB_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54060 + (byte*) DTV_BLITTER_SRCB_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54061 + (byte*) DTV_BLITTER_SRCB_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54062 + (byte*) DTV_BLITTER_SRCB_STEP#0 ← ((byte*)) (word/dword/signed dword) 54063 + (byte*) DTV_BLITTER_DEST_LO#0 ← ((byte*)) (word/dword/signed dword) 54064 + (byte*) DTV_BLITTER_DEST_MI#0 ← ((byte*)) (word/dword/signed dword) 54065 + (byte*) DTV_BLITTER_DEST_HI#0 ← ((byte*)) (word/dword/signed dword) 54066 + (byte*) DTV_BLITTER_DEST_MOD_LO#0 ← ((byte*)) (word/dword/signed dword) 54067 + (byte*) DTV_BLITTER_DEST_MOD_HI#0 ← ((byte*)) (word/dword/signed dword) 54068 + (byte*) DTV_BLITTER_DEST_LIN_LO#0 ← ((byte*)) (word/dword/signed dword) 54069 + (byte*) DTV_BLITTER_DEST_LIN_HI#0 ← ((byte*)) (word/dword/signed dword) 54070 + (byte*) DTV_BLITTER_DEST_STEP#0 ← ((byte*)) (word/dword/signed dword) 54071 + (byte*) DTV_BLITTER_LEN_LO#0 ← ((byte*)) (word/dword/signed dword) 54072 + (byte*) DTV_BLITTER_LEN_HI#0 ← ((byte*)) (word/dword/signed dword) 54073 + (byte*) DTV_BLITTER_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 54074 + (byte) DTV_BLIT_FORCE_START#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_FWD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_VIC_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_CIA_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_VBLANK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) DTV_BLIT_IRQ_EN#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte*) DTV_BLITTER_TRANSPARANCY#0 ← ((byte*)) (word/dword/signed dword) 54075 + (byte) DTV_BLIT_DISABLE_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_WRITE_TRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_TRANSPARANCY_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte*) DTV_BLITTER_ALU#0 ← ((byte*)) (word/dword/signed dword) 54078 + (byte) DTV_BLIT_SHIFT0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_SHIFT1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SHIFT2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SHIFT3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) DTV_BLIT_SHIFT4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_SHIFT5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) DTV_BLIT_SHIFT6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) DTV_BLIT_SHIFT7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) DTV_BLIT_AND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) DTV_BLIT_NAND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_NOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) DTV_BLIT_OR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) DTV_BLIT_XOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) DTV_BLIT_XNOR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) DTV_BLIT_ADD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) DTV_BLIT_SUB#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte*) DTV_BLITTER_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 54079 + (byte) DTV_BLIT_CLEAR_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_SRCA_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) DTV_BLIT_SRCB_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) DTV_BLIT_DEST_CONT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) DTV_BLIT_STATUS_BUSY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) DTV_BLIT_STATUS_IRQ#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 - to:@23 + to:@17 print_str_lines: scope:[print_str_lines] from menu::@48 (byte*) print_line_cursor#50 ← phi( menu::@48/(byte*) print_line_cursor#12 ) (byte*) print_char_cursor#52 ← phi( menu::@48/(byte*) print_char_cursor#13 ) @@ -162,6 +279,12 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#21 return to:@return +@17: scope:[] from @5 + (byte*) print_char_cursor#102 ← phi( @5/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#102 ← phi( @5/(byte*) print_line_cursor#0 ) + (byte*) print_screen#83 ← phi( @5/(byte*) print_screen#0 ) + (byte[]) print_hextab#0 ← (const string) $21 + to:@24 print_cls: scope:[print_cls] from menu::@47 (byte*) print_screen#8 ← phi( menu::@47/(byte*) print_screen#5 ) (byte*) print_cls::sc#0 ← (byte*) print_screen#8 @@ -202,31 +325,78 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen (byte*) print_char_cursor#9 ← (byte*) print_char_cursor#23 return to:@return -@23: scope:[] from @4 - (byte*) print_char_cursor#99 ← phi( @4/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#99 ← phi( @4/(byte*) print_line_cursor#0 ) - (byte*) print_screen#80 ← phi( @4/(byte*) print_screen#0 ) +@24: scope:[] from @17 + (byte*) print_char_cursor#101 ← phi( @17/(byte*) print_char_cursor#102 ) + (byte*) print_line_cursor#101 ← phi( @17/(byte*) print_line_cursor#102 ) + (byte*) print_screen#82 ← phi( @17/(byte*) print_screen#83 ) + (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) KEY_4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) KEY_Z#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) KEY_S#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) KEY_E#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) KEY_5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) KEY_R#0 ← (byte/signed byte/word/signed word/dword/signed dword) 17 (byte) KEY_D#0 ← (byte/signed byte/word/signed word/dword/signed dword) 18 (byte) KEY_6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 19 (byte) KEY_C#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 + (byte) KEY_F#0 ← (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) KEY_T#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 + (byte) KEY_X#0 ← (byte/signed byte/word/signed word/dword/signed dword) 23 (byte) KEY_7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) KEY_Y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 25 + (byte) KEY_G#0 ← (byte/signed byte/word/signed word/dword/signed dword) 26 (byte) KEY_8#0 ← (byte/signed byte/word/signed word/dword/signed dword) 27 (byte) KEY_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 28 (byte) KEY_H#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 (byte) KEY_U#0 ← (byte/signed byte/word/signed word/dword/signed dword) 30 + (byte) KEY_V#0 ← (byte/signed byte/word/signed word/dword/signed dword) 31 + (byte) KEY_9#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) KEY_I#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 + (byte) KEY_J#0 ← (byte/signed byte/word/signed word/dword/signed dword) 34 (byte) KEY_0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 35 + (byte) KEY_M#0 ← (byte/signed byte/word/signed word/dword/signed dword) 36 + (byte) KEY_K#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 (byte) KEY_O#0 ← (byte/signed byte/word/signed word/dword/signed dword) 38 + (byte) KEY_N#0 ← (byte/signed byte/word/signed word/dword/signed dword) 39 + (byte) KEY_PLUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) KEY_P#0 ← (byte/signed byte/word/signed word/dword/signed dword) 41 (byte) KEY_L#0 ← (byte/signed byte/word/signed word/dword/signed dword) 42 + (byte) KEY_MINUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 43 + (byte) KEY_DOT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 44 + (byte) KEY_COLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 45 + (byte) KEY_AT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 46 + (byte) KEY_COMMA#0 ← (byte/signed byte/word/signed word/dword/signed dword) 47 + (byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 + (byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52 + (byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 (byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 57 + (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58 (byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 + (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 + (byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62 + (byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 63 + (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@30 + to:@28 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) *((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1) @@ -261,16 +431,31 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#22 return to:@return -@30: scope:[] from @23 - (byte*) print_char_cursor#85 ← phi( @23/(byte*) print_char_cursor#99 ) - (byte*) print_line_cursor#85 ← phi( @23/(byte*) print_line_cursor#99 ) - (byte*) print_screen#66 ← phi( @23/(byte*) print_screen#80 ) +@28: scope:[] from @24 + (byte*) print_char_cursor#99 ← phi( @24/(byte*) print_char_cursor#101 ) + (byte*) print_line_cursor#99 ← phi( @24/(byte*) print_line_cursor#101 ) + (byte*) print_screen#80 ← phi( @24/(byte*) print_screen#82 ) + (byte[8]) keyboard_events#0 ← { fill( 8, 0) } + (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_MODIFIER_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 + (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 + (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } + to:@31 +@31: scope:[] from @28 + (byte*) print_char_cursor#85 ← phi( @28/(byte*) print_char_cursor#99 ) + (byte*) print_line_cursor#85 ← phi( @28/(byte*) print_line_cursor#99 ) + (byte*) print_screen#66 ← phi( @28/(byte*) print_screen#80 ) (byte[256]) bitmap_plot_xlo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@39 + to:@40 bitmap_init: scope:[bitmap_init] from mode_stdbitmap::@7 (byte*) bitmap_init::bitmap#2 ← phi( mode_stdbitmap::@7/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -814,11 +999,11 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return -main: scope:[main] from @53 - (byte) dtv_control#130 ← phi( @53/(byte) dtv_control#129 ) - (byte*) print_char_cursor#55 ← phi( @53/(byte*) print_char_cursor#51 ) - (byte*) print_line_cursor#52 ← phi( @53/(byte*) print_line_cursor#49 ) - (byte*) print_screen#34 ← phi( @53/(byte*) print_screen#33 ) +main: scope:[main] from @54 + (byte) dtv_control#130 ← phi( @54/(byte) dtv_control#129 ) + (byte*) print_char_cursor#55 ← phi( @54/(byte*) print_char_cursor#51 ) + (byte*) print_line_cursor#52 ← phi( @54/(byte*) print_line_cursor#49 ) + (byte*) print_screen#34 ← phi( @54/(byte*) print_screen#33 ) asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -859,32 +1044,32 @@ main::@return: scope:[main] from main::@1 (byte) dtv_control#1 ← (byte) dtv_control#56 return to:@return -@39: scope:[] from @30 - (byte*) print_char_cursor#84 ← phi( @30/(byte*) print_char_cursor#85 ) - (byte*) print_line_cursor#83 ← phi( @30/(byte*) print_line_cursor#85 ) - (byte*) print_screen#65 ← phi( @30/(byte*) print_screen#66 ) - (string~) $1 ← (const string) $21 + (const string) $22 - (string~) $2 ← (string~) $1 + (const string) $23 - (string~) $3 ← (string~) $2 + (const string) $24 - (string~) $4 ← (string~) $3 + (const string) $25 - (string~) $5 ← (string~) $4 + (const string) $26 - (string~) $6 ← (string~) $5 + (const string) $27 - (string~) $7 ← (string~) $6 + (const string) $28 - (string~) $8 ← (string~) $7 + (const string) $29 - (string~) $9 ← (string~) $8 + (const string) $30 - (string~) $10 ← (string~) $9 + (const string) $31 - (string~) $11 ← (string~) $10 + (const string) $32 - (string~) $12 ← (string~) $11 + (const string) $33 - (string~) $13 ← (string~) $12 + (const string) $34 - (string~) $14 ← (string~) $13 + (const string) $35 - (string~) $15 ← (string~) $14 + (const string) $36 - (string~) $16 ← (string~) $15 + (const string) $37 - (string~) $17 ← (string~) $16 + (const string) $38 - (string~) $18 ← (string~) $17 + (const string) $39 - (string~) $19 ← (string~) $18 + (const string) $40 - (string~) $20 ← (string~) $19 + (const string) $41 +@40: scope:[] from @31 + (byte*) print_char_cursor#84 ← phi( @31/(byte*) print_char_cursor#85 ) + (byte*) print_line_cursor#83 ← phi( @31/(byte*) print_line_cursor#85 ) + (byte*) print_screen#65 ← phi( @31/(byte*) print_screen#66 ) + (string~) $1 ← (const string) $22 + (const string) $23 + (string~) $2 ← (string~) $1 + (const string) $24 + (string~) $3 ← (string~) $2 + (const string) $25 + (string~) $4 ← (string~) $3 + (const string) $26 + (string~) $5 ← (string~) $4 + (const string) $27 + (string~) $6 ← (string~) $5 + (const string) $28 + (string~) $7 ← (string~) $6 + (const string) $29 + (string~) $8 ← (string~) $7 + (const string) $30 + (string~) $9 ← (string~) $8 + (const string) $31 + (string~) $10 ← (string~) $9 + (const string) $32 + (string~) $11 ← (string~) $10 + (const string) $33 + (string~) $12 ← (string~) $11 + (const string) $34 + (string~) $13 ← (string~) $12 + (const string) $35 + (string~) $14 ← (string~) $13 + (const string) $36 + (string~) $15 ← (string~) $14 + (const string) $37 + (string~) $16 ← (string~) $15 + (const string) $38 + (string~) $17 ← (string~) $16 + (const string) $39 + (string~) $18 ← (string~) $17 + (const string) $40 + (string~) $19 ← (string~) $18 + (const string) $41 + (string~) $20 ← (string~) $19 + (const string) $42 (byte[]) MENU_TEXT#0 ← (string~) $20 - to:@40 + to:@41 menu: scope:[menu] from main::@2 (byte) dtv_control#255 ← phi( main::@2/(byte) dtv_control#98 ) (byte*) print_char_cursor#100 ← phi( main::@2/(byte*) print_char_cursor#35 ) @@ -1426,12 +1611,12 @@ menu::@73: scope:[menu] from menu::@44 (byte) dtv_control#69 ← phi( menu::@44/(byte) dtv_control#53 ) (byte) dtv_control#14 ← (byte) dtv_control#69 to:menu::@return -@40: scope:[] from @39 - (byte*) print_char_cursor#70 ← phi( @39/(byte*) print_char_cursor#84 ) - (byte*) print_line_cursor#67 ← phi( @39/(byte*) print_line_cursor#83 ) - (byte*) print_screen#50 ← phi( @39/(byte*) print_screen#65 ) +@41: scope:[] from @40 + (byte*) print_char_cursor#70 ← phi( @40/(byte*) print_char_cursor#84 ) + (byte*) print_line_cursor#67 ← phi( @40/(byte*) print_line_cursor#83 ) + (byte*) print_screen#50 ← phi( @40/(byte*) print_screen#65 ) (byte) dtv_control#15 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@53 + to:@54 mode_ctrl: scope:[mode_ctrl] from mode_8bppchunkybmm::@11 mode_8bpppixelcell::@14 mode_ecmchar::@6 mode_hicolecmchar::@6 mode_hicolmcchar::@6 mode_hicolstdchar::@6 mode_mcchar::@6 mode_sixsfred2::@14 mode_sixsfred::@14 mode_stdbitmap::@8 mode_stdchar::@6 mode_twoplanebitmap::@18 (byte) dtv_control#145 ← phi( mode_8bppchunkybmm::@11/(byte) dtv_control#128 mode_8bpppixelcell::@14/(byte) dtv_control#127 mode_ecmchar::@6/(byte) dtv_control#118 mode_hicolecmchar::@6/(byte) dtv_control#122 mode_hicolmcchar::@6/(byte) dtv_control#123 mode_hicolstdchar::@6/(byte) dtv_control#121 mode_mcchar::@6/(byte) dtv_control#119 mode_sixsfred2::@14/(byte) dtv_control#126 mode_sixsfred::@14/(byte) dtv_control#125 mode_stdbitmap::@8/(byte) dtv_control#120 mode_stdchar::@6/(byte) dtv_control#117 mode_twoplanebitmap::@18/(byte) dtv_control#124 ) to:mode_ctrl::@1 @@ -3207,26 +3392,27 @@ mode_8bppchunkybmm::@return: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm (byte) dtv_control#53 ← (byte) dtv_control#96 return to:@return -@53: scope:[] from @40 - (byte) dtv_control#129 ← phi( @40/(byte) dtv_control#15 ) - (byte*) print_char_cursor#51 ← phi( @40/(byte*) print_char_cursor#70 ) - (byte*) print_line_cursor#49 ← phi( @40/(byte*) print_line_cursor#67 ) - (byte*) print_screen#33 ← phi( @40/(byte*) print_screen#50 ) +@54: scope:[] from @41 + (byte) dtv_control#129 ← phi( @41/(byte) dtv_control#15 ) + (byte*) print_char_cursor#51 ← phi( @41/(byte*) print_char_cursor#70 ) + (byte*) print_line_cursor#49 ← phi( @41/(byte*) print_line_cursor#67 ) + (byte*) print_screen#33 ← phi( @41/(byte*) print_screen#50 ) call main - to:@54 -@54: scope:[] from @53 - (byte) dtv_control#97 ← phi( @53/(byte) dtv_control#1 ) - (byte*) print_char_cursor#30 ← phi( @53/(byte*) print_char_cursor#11 ) - (byte*) print_line_cursor#29 ← phi( @53/(byte*) print_line_cursor#10 ) - (byte*) print_screen#16 ← phi( @53/(byte*) print_screen#4 ) + to:@55 +@55: scope:[] from @54 + (byte) dtv_control#97 ← phi( @54/(byte) dtv_control#1 ) + (byte*) print_char_cursor#30 ← phi( @54/(byte*) print_char_cursor#11 ) + (byte*) print_line_cursor#29 ← phi( @54/(byte*) print_line_cursor#10 ) + (byte*) print_screen#16 ← phi( @54/(byte*) print_screen#4 ) (byte*) print_screen#7 ← (byte*) print_screen#16 (byte*) print_line_cursor#15 ← (byte*) print_line_cursor#29 (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#30 (byte) dtv_control#54 ← (byte) dtv_control#97 to:@end -@end: scope:[] from @54 +@end: scope:[] from @55 SYMBOL TABLE SSA +(byte~) $0 (string~) $1 (string~) $10 (string~) $11 @@ -3240,42 +3426,45 @@ SYMBOL TABLE SSA (string~) $19 (string~) $2 (string~) $20 -(const string) $21 = (string) "C64DTV Graphics Modes CCLHBME@" -(const string) $22 = (string) " OHIIMCC@" -(const string) $23 = (string) " LUNCMMM@" -(const string) $24 = (string) "----------------------------------------@" -(const string) $25 = (string) "1. Standard Char (V) 0000000@" -(const string) $26 = (string) "2. Extended Color Char (V) 0000001@" -(const string) $27 = (string) "3. Multicolor Char (V) 0000010@" -(const string) $28 = (string) "4. Standard Bitmap (V) 0000100@" -(const string) $29 = (string) "5. Multicolor Bitmap (V) 0000110@" +(const string) $21 = (string) "0123456789abcdef" +(const string) $22 = (string) "C64DTV Graphics Modes CCLHBME@" +(const string) $23 = (string) " OHIIMCC@" +(const string) $24 = (string) " LUNCMMM@" +(const string) $25 = (string) "----------------------------------------@" +(const string) $26 = (string) "1. Standard Char (V) 0000000@" +(const string) $27 = (string) "2. Extended Color Char (V) 0000001@" +(const string) $28 = (string) "3. Multicolor Char (V) 0000010@" +(const string) $29 = (string) "4. Standard Bitmap (V) 0000100@" (string~) $3 -(const string) $30 = (string) "6. High Color Standard Char (H) 0001000@" -(const string) $31 = (string) "7. High Extended Color Char (H) 0001001@" -(const string) $32 = (string) "8. High Multicolor Char (H) 0001010@" -(const string) $33 = (string) "9. High Multicolor Bitmap (H) 0001110@" -(const string) $34 = (string) "a. Sixs Fred 2 (D) 0010111@" -(const string) $35 = (string) "b. Two Plane Bitmap (D) 0011101@" -(const string) $36 = (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@" -(const string) $37 = (string) "d. 8bpp Pixel Cell (D) 0111011@" -(const string) $38 = (string) "e. Chunky 8bpp Bitmap (D) 1111011@" -(const string) $39 = (string) "----------------------------------------@" +(const string) $30 = (string) "5. Multicolor Bitmap (V) 0000110@" +(const string) $31 = (string) "6. High Color Standard Char (H) 0001000@" +(const string) $32 = (string) "7. High Extended Color Char (H) 0001001@" +(const string) $33 = (string) "8. High Multicolor Char (H) 0001010@" +(const string) $34 = (string) "9. High Multicolor Bitmap (H) 0001110@" +(const string) $35 = (string) "a. Sixs Fred 2 (D) 0010111@" +(const string) $36 = (string) "b. Two Plane Bitmap (D) 0011101@" +(const string) $37 = (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@" +(const string) $38 = (string) "d. 8bpp Pixel Cell (D) 0111011@" +(const string) $39 = (string) "e. Chunky 8bpp Bitmap (D) 1111011@" (string~) $4 -(const string) $40 = (string) " (V) vicII (H) vicII+hicol (D) c64dtv@" -(const string) $41 = (string) "@" +(const string) $40 = (string) "----------------------------------------@" +(const string) $41 = (string) " (V) vicII (H) vicII+hicol (D) c64dtv@" +(const string) $42 = (string) "@" (string~) $5 (string~) $6 (string~) $7 (string~) $8 (string~) $9 -(label) @23 -(label) @3 -(label) @30 -(label) @39 +(label) @17 +(label) @24 +(label) @28 +(label) @31 (label) @4 (label) @40 -(label) @53 +(label) @41 +(label) @5 (label) @54 +(label) @55 (label) @begin (label) @end (byte*) BGCOL @@ -3294,16 +3483,174 @@ SYMBOL TABLE SSA (byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 (byte*) CIA1_PORT_B (byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A#0 (byte*) CIA2_PORT_A_DDR (byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 (byte*) COLS (byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) DTV_BADLINE_OFF +(byte) DTV_BADLINE_OFF#0 +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_ALU#0 +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL#0 +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_CONTROL2#0 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_HI#0 +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LIN_LO#0 +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_LO#0 +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MI#0 +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_HI#0 +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_MOD_LO#0 +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_DEST_STEP#0 +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_HI#0 +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_LEN_LO#0 +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI#0 +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LIN_LO#0 +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_LO#0 +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MI#0 +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_HI#0 +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_MOD_LO#0 +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCA_STEP#0 +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI#0 +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LIN_LO#0 +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_LO#0 +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MI#0 +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_HI#0 +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_MOD_LO#0 +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_SRCB_STEP#0 +(byte*) DTV_BLITTER_TRANSPARANCY +(byte*) DTV_BLITTER_TRANSPARANCY#0 +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_ADD#0 +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_AND#0 +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CIA_IRQ#0 +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_CLEAR_IRQ#0 +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_CONT#0 +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DEST_FWD#0 +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_DISABLE_B#0 +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_FORCE_START#0 +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_IRQ_EN#0 +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NAND#0 +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_NOR#0 +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_OR#0 +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT0#0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT1#0 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT2#0 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT3#0 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT4#0 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT5#0 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT6#0 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SHIFT7#0 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_CONT#0 +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCA_FWD#0 +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_CONT#0 +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_SRCB_FWD#0 +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_BUSY#0 +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_STATUS_IRQ#0 +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_SUB#0 +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_TRANSPARANCY_NONE#0 +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VBLANK#0 +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_VIC_IRQ#0 +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT#0 +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XNOR#0 +(byte) DTV_BLIT_XOR +(byte) DTV_BLIT_XOR#0 (byte) DTV_BORDER_OFF (byte) DTV_BORDER_OFF#0 (byte) DTV_CHUNKY @@ -3320,8 +3667,12 @@ SYMBOL TABLE SSA (byte*) DTV_CONTROL#0 (byte*) DTV_FEATURE (byte*) DTV_FEATURE#0 +(byte) DTV_FEATURE_DISABLE_TIL_RESET +(byte) DTV_FEATURE_DISABLE_TIL_RESET#0 (byte) DTV_FEATURE_ENABLE (byte) DTV_FEATURE_ENABLE#0 +(byte*) DTV_GRAPHICS_HICOL_BANK +(byte*) DTV_GRAPHICS_HICOL_BANK#0 (byte*) DTV_GRAPHICS_VIC_BANK (byte*) DTV_GRAPHICS_VIC_BANK#0 (byte) DTV_HIGHCOLOR @@ -3358,8 +3709,28 @@ SYMBOL TABLE SSA (byte*) DTV_PLANEB_START_MI#0 (byte*) DTV_PLANEB_STEP (byte*) DTV_PLANEB_STEP#0 +(byte*) DTV_SPRITE_BANK +(byte*) DTV_SPRITE_BANK#0 (byte) GREEN (byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 (byte) KEY_0 (byte) KEY_0#0 (byte) KEY_1 @@ -3370,48 +3741,196 @@ SYMBOL TABLE SSA (byte) KEY_3#0 (byte) KEY_4 (byte) KEY_4#0 +(byte) KEY_5 +(byte) KEY_5#0 (byte) KEY_6 (byte) KEY_6#0 (byte) KEY_7 (byte) KEY_7#0 (byte) KEY_8 (byte) KEY_8#0 +(byte) KEY_9 +(byte) KEY_9#0 (byte) KEY_A (byte) KEY_A#0 +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_LEFT#0 +(byte) KEY_ARROW_UP +(byte) KEY_ARROW_UP#0 +(byte) KEY_ASTERISK +(byte) KEY_ASTERISK#0 +(byte) KEY_AT +(byte) KEY_AT#0 (byte) KEY_B (byte) KEY_B#0 (byte) KEY_C (byte) KEY_C#0 +(byte) KEY_COLON +(byte) KEY_COLON#0 +(byte) KEY_COMMA +(byte) KEY_COMMA#0 +(byte) KEY_COMMODORE +(byte) KEY_COMMODORE#0 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_DOWN#0 +(byte) KEY_CRSR_RIGHT +(byte) KEY_CRSR_RIGHT#0 +(byte) KEY_CTRL +(byte) KEY_CTRL#0 (byte) KEY_D (byte) KEY_D#0 +(byte) KEY_DEL +(byte) KEY_DEL#0 +(byte) KEY_DOT +(byte) KEY_DOT#0 (byte) KEY_E (byte) KEY_E#0 +(byte) KEY_EQUALS +(byte) KEY_EQUALS#0 +(byte) KEY_F +(byte) KEY_F#0 +(byte) KEY_F1 +(byte) KEY_F1#0 +(byte) KEY_F3 +(byte) KEY_F3#0 +(byte) KEY_F5 +(byte) KEY_F5#0 +(byte) KEY_F7 +(byte) KEY_F7#0 +(byte) KEY_G +(byte) KEY_G#0 (byte) KEY_H (byte) KEY_H#0 +(byte) KEY_HOME +(byte) KEY_HOME#0 +(byte) KEY_I +(byte) KEY_I#0 +(byte) KEY_J +(byte) KEY_J#0 +(byte) KEY_K +(byte) KEY_K#0 (byte) KEY_L (byte) KEY_L#0 +(byte) KEY_LSHIFT +(byte) KEY_LSHIFT#0 +(byte) KEY_M +(byte) KEY_M#0 +(byte) KEY_MINUS +(byte) KEY_MINUS#0 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_COMMODORE#0 +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_CTRL#0 +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_LSHIFT#0 +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_MODIFIER_SHIFT#0 +(byte) KEY_N +(byte) KEY_N#0 (byte) KEY_O (byte) KEY_O#0 +(byte) KEY_P +(byte) KEY_P#0 +(byte) KEY_PLUS +(byte) KEY_PLUS#0 +(byte) KEY_POUND +(byte) KEY_POUND#0 +(byte) KEY_Q +(byte) KEY_Q#0 +(byte) KEY_R +(byte) KEY_R#0 +(byte) KEY_RETURN +(byte) KEY_RETURN#0 +(byte) KEY_RSHIFT +(byte) KEY_RSHIFT#0 +(byte) KEY_RUNSTOP +(byte) KEY_RUNSTOP#0 +(byte) KEY_S +(byte) KEY_S#0 +(byte) KEY_SEMICOLON +(byte) KEY_SEMICOLON#0 +(byte) KEY_SLASH +(byte) KEY_SLASH#0 (byte) KEY_SPACE (byte) KEY_SPACE#0 +(byte) KEY_T +(byte) KEY_T#0 (byte) KEY_U (byte) KEY_U#0 +(byte) KEY_V +(byte) KEY_V#0 +(byte) KEY_W +(byte) KEY_W#0 +(byte) KEY_X +(byte) KEY_X#0 +(byte) KEY_Y +(byte) KEY_Y#0 +(byte) KEY_Z +(byte) KEY_Z#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 (byte) LIGHT_GREEN (byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 (byte[]) MENU_TEXT (byte[]) MENU_TEXT#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 (byte*) PROCPORT_DDR (byte*) PROCPORT_DDR#0 (byte) PROCPORT_DDR_MEMORY_MASK (byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 (byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_CHARROM#0 (byte) PROCPORT_RAM_IO (byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 (byte) VIC_BMM (byte) VIC_BMM#0 (byte*) VIC_CONTROL @@ -3430,6 +3949,12 @@ SYMBOL TABLE SSA (byte*) VIC_MEMORY#0 (byte) VIC_RSEL (byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) bitmap_clear() (byte*~) bitmap_clear::$0 (bool~) bitmap_clear::$1 @@ -4222,6 +4747,12 @@ SYMBOL TABLE SSA (byte) dtv_control#97 (byte) dtv_control#98 (byte) dtv_control#99 +(byte[]) keyboard_char_keycodes +(byte[]) keyboard_char_keycodes#0 +(byte[8]) keyboard_events +(byte[8]) keyboard_events#0 +(byte) keyboard_events_size +(byte) keyboard_events_size#0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$0 (byte~) keyboard_key_pressed::$1 @@ -4318,6 +4849,10 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid#1 (byte[8]) keyboard_matrix_row_bitmask (byte[8]) keyboard_matrix_row_bitmask#0 +(byte) keyboard_modifiers +(byte) keyboard_modifiers#0 +(byte[8]) keyboard_scan_values +(byte[8]) keyboard_scan_values#0 (void()) main() (label) main::@1 (label) main::@2 @@ -5624,6 +6159,8 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#1 (byte*) print_char_cursor#10 (byte*) print_char_cursor#100 +(byte*) print_char_cursor#101 +(byte*) print_char_cursor#102 (byte*) print_char_cursor#11 (byte*) print_char_cursor#12 (byte*) print_char_cursor#13 @@ -5731,11 +6268,15 @@ SYMBOL TABLE SSA (byte*) print_cls::sc#0 (byte*) print_cls::sc#1 (byte*) print_cls::sc#2 +(byte[]) print_hextab +(byte[]) print_hextab#0 (byte*) print_line_cursor (byte*) print_line_cursor#0 (byte*) print_line_cursor#1 (byte*) print_line_cursor#10 (byte*) print_line_cursor#100 +(byte*) print_line_cursor#101 +(byte*) print_line_cursor#102 (byte*) print_line_cursor#11 (byte*) print_line_cursor#12 (byte*) print_line_cursor#13 @@ -5921,6 +6462,8 @@ SYMBOL TABLE SSA (byte*) print_screen#8 (byte*) print_screen#80 (byte*) print_screen#81 +(byte*) print_screen#82 +(byte*) print_screen#83 (byte*) print_screen#9 (void()) print_set_screen((byte*) print_set_screen::screen) (label) print_set_screen::@return @@ -5996,7 +6539,7 @@ Inversing boolean not (bool~) mode_ctrl::$32 ← (byte) mode_ctrl::ctrl#14 == (b Inversing boolean not (bool~) mode_8bpppixelcell::$21 ← (byte~) mode_8bpppixelcell::$19 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mode_8bpppixelcell::$20 ← (byte~) mode_8bpppixelcell::$19 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) mode_8bppchunkybmm::$21 ← (byte*) mode_8bppchunkybmm::gfxb#3 != (word/dword/signed dword) 32768 from (bool~) mode_8bppchunkybmm::$20 ← (byte*) mode_8bppchunkybmm::gfxb#3 == (word/dword/signed dword) 32768 Successful SSA optimization Pass2UnaryNotSimplification -Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#80 (byte*) print_line_cursor#99 (byte*) print_char_cursor#99 (byte*) print_screen#66 (byte*) print_line_cursor#85 (byte*) print_char_cursor#85 (byte*) print_screen#65 (byte*) print_line_cursor#83 (byte*) print_char_cursor#84 (byte*) print_screen#50 (byte*) print_line_cursor#67 (byte*) print_char_cursor#70 (byte*) print_screen#33 (byte*) print_line_cursor#49 (byte*) print_char_cursor#51 +Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#83 (byte*) print_line_cursor#102 (byte*) print_char_cursor#102 (byte*) print_screen#82 (byte*) print_line_cursor#101 (byte*) print_char_cursor#101 (byte*) print_screen#80 (byte*) print_line_cursor#99 (byte*) print_char_cursor#99 (byte*) print_screen#66 (byte*) print_line_cursor#85 (byte*) print_char_cursor#85 (byte*) print_screen#65 (byte*) print_line_cursor#83 (byte*) print_char_cursor#84 (byte*) print_screen#50 (byte*) print_line_cursor#67 (byte*) print_char_cursor#70 (byte*) print_screen#33 (byte*) print_line_cursor#49 (byte*) print_char_cursor#51 Alias (byte*) print_str_lines::str#2 = (byte*) print_str_lines::str#6 Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#33 (byte*) print_char_cursor#3 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#84 (byte*) print_line_cursor#31 (byte*) print_line_cursor#2 @@ -6017,6 +6560,7 @@ Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 ( Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#22 (byte) keyboard_key_pressed::return#1 +Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte) bitmap_init::bits#1 = (byte~) bitmap_init::$2 Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4 Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#4 @@ -6704,41 +7248,92 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 Constant (const byte) PROCPORT_RAM_IO#0 = 53 Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 Constant (const byte*) BGCOL1#0 = ((byte*))53281 Constant (const byte*) BGCOL2#0 = ((byte*))53282 Constant (const byte*) BGCOL3#0 = ((byte*))53283 Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 Constant (const byte) VIC_ECM#0 = 64 Constant (const byte) VIC_BMM#0 = 32 Constant (const byte) VIC_DEN#0 = 16 Constant (const byte) VIC_RSEL#0 = 8 Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 Constant (const byte) VIC_MCM#0 = 16 Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 Constant (const byte) GREEN#0 = 5 Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) DTV_FEATURE#0 = ((byte*))53311 Constant (const byte) DTV_FEATURE_ENABLE#0 = 1 +Constant (const byte) DTV_FEATURE_DISABLE_TIL_RESET#0 = 2 Constant (const byte*) DTV_CONTROL#0 = ((byte*))53308 Constant (const byte) DTV_LINEAR#0 = 1 Constant (const byte) DTV_BORDER_OFF#0 = 2 Constant (const byte) DTV_HIGHCOLOR#0 = 4 Constant (const byte) DTV_OVERSCAN#0 = 8 Constant (const byte) DTV_COLORRAM_OFF#0 = 16 +Constant (const byte) DTV_BADLINE_OFF#0 = 32 Constant (const byte) DTV_CHUNKY#0 = 64 Constant (const byte*) DTV_PALETTE#0 = ((byte*))53760 Constant (const byte[16]) DTV_PALETTE_DEFAULT#0 = { 0, 15, 54, 190, 88, 219, 134, 255, 41, 38, 59, 5, 7, 223, 154, 10 } @@ -6754,32 +7349,153 @@ Constant (const byte*) DTV_PLANEB_START_HI#0 = ((byte*))53323 Constant (const byte*) DTV_PLANEB_STEP#0 = ((byte*))53324 Constant (const byte*) DTV_PLANEB_MODULO_LO#0 = ((byte*))53319 Constant (const byte*) DTV_PLANEB_MODULO_HI#0 = ((byte*))53320 +Constant (const byte*) DTV_SPRITE_BANK#0 = ((byte*))53325 Constant (const byte*) DTV_COLOR_BANK_LO#0 = ((byte*))53302 Constant (const byte*) DTV_COLOR_BANK_HI#0 = ((byte*))53303 Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = 120832 Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))53309 +Constant (const byte*) DTV_GRAPHICS_HICOL_BANK#0 = ((byte*))53310 Constant (const byte*) dtvSetCpuBankSegment1::cpuBank#0 = ((byte*))255 +Constant (const byte*) DTV_BLITTER_SRCA_LO#0 = ((byte*))54048 +Constant (const byte*) DTV_BLITTER_SRCA_MI#0 = ((byte*))54049 +Constant (const byte*) DTV_BLITTER_SRCA_HI#0 = ((byte*))54050 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_LO#0 = ((byte*))54051 +Constant (const byte*) DTV_BLITTER_SRCA_MOD_HI#0 = ((byte*))54052 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_LO#0 = ((byte*))54053 +Constant (const byte*) DTV_BLITTER_SRCA_LIN_HI#0 = ((byte*))54054 +Constant (const byte*) DTV_BLITTER_SRCA_STEP#0 = ((byte*))54055 +Constant (const byte*) DTV_BLITTER_SRCB_LO#0 = ((byte*))54056 +Constant (const byte*) DTV_BLITTER_SRCB_MI#0 = ((byte*))54057 +Constant (const byte*) DTV_BLITTER_SRCB_HI#0 = ((byte*))54058 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_LO#0 = ((byte*))54059 +Constant (const byte*) DTV_BLITTER_SRCB_MOD_HI#0 = ((byte*))54060 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_LO#0 = ((byte*))54061 +Constant (const byte*) DTV_BLITTER_SRCB_LIN_HI#0 = ((byte*))54062 +Constant (const byte*) DTV_BLITTER_SRCB_STEP#0 = ((byte*))54063 +Constant (const byte*) DTV_BLITTER_DEST_LO#0 = ((byte*))54064 +Constant (const byte*) DTV_BLITTER_DEST_MI#0 = ((byte*))54065 +Constant (const byte*) DTV_BLITTER_DEST_HI#0 = ((byte*))54066 +Constant (const byte*) DTV_BLITTER_DEST_MOD_LO#0 = ((byte*))54067 +Constant (const byte*) DTV_BLITTER_DEST_MOD_HI#0 = ((byte*))54068 +Constant (const byte*) DTV_BLITTER_DEST_LIN_LO#0 = ((byte*))54069 +Constant (const byte*) DTV_BLITTER_DEST_LIN_HI#0 = ((byte*))54070 +Constant (const byte*) DTV_BLITTER_DEST_STEP#0 = ((byte*))54071 +Constant (const byte*) DTV_BLITTER_LEN_LO#0 = ((byte*))54072 +Constant (const byte*) DTV_BLITTER_LEN_HI#0 = ((byte*))54073 +Constant (const byte*) DTV_BLITTER_CONTROL#0 = ((byte*))54074 +Constant (const byte) DTV_BLIT_FORCE_START#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_FWD#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_FWD#0 = 4 +Constant (const byte) DTV_BLIT_DEST_FWD#0 = 8 +Constant (const byte) DTV_BLIT_VIC_IRQ#0 = 16 +Constant (const byte) DTV_BLIT_CIA_IRQ#0 = 32 +Constant (const byte) DTV_BLIT_VBLANK#0 = 64 +Constant (const byte) DTV_BLIT_IRQ_EN#0 = 128 +Constant (const byte*) DTV_BLITTER_TRANSPARANCY#0 = ((byte*))54075 +Constant (const byte) DTV_BLIT_DISABLE_B#0 = 1 +Constant (const byte) DTV_BLIT_WRITE_TRANSPARENT#0 = 2 +Constant (const byte) DTV_BLIT_WRITE_NONTRANSPARENT#0 = 4 +Constant (const byte) DTV_BLIT_TRANSPARANCY_NONE#0 = 0 +Constant (const byte*) DTV_BLITTER_ALU#0 = ((byte*))54078 +Constant (const byte) DTV_BLIT_SHIFT0#0 = 0 +Constant (const byte) DTV_BLIT_SHIFT1#0 = 1 +Constant (const byte) DTV_BLIT_SHIFT2#0 = 2 +Constant (const byte) DTV_BLIT_SHIFT3#0 = 3 +Constant (const byte) DTV_BLIT_SHIFT4#0 = 4 +Constant (const byte) DTV_BLIT_SHIFT5#0 = 5 +Constant (const byte) DTV_BLIT_SHIFT6#0 = 6 +Constant (const byte) DTV_BLIT_SHIFT7#0 = 7 +Constant (const byte) DTV_BLIT_AND#0 = 0 +Constant (const byte) DTV_BLIT_NAND#0 = 8 +Constant (const byte) DTV_BLIT_NOR#0 = 16 +Constant (const byte) DTV_BLIT_OR#0 = 24 +Constant (const byte) DTV_BLIT_XOR#0 = 32 +Constant (const byte) DTV_BLIT_XNOR#0 = 40 +Constant (const byte) DTV_BLIT_ADD#0 = 48 +Constant (const byte) DTV_BLIT_SUB#0 = 56 +Constant (const byte*) DTV_BLITTER_CONTROL2#0 = ((byte*))54079 +Constant (const byte) DTV_BLIT_CLEAR_IRQ#0 = 1 +Constant (const byte) DTV_BLIT_SRCA_CONT#0 = 2 +Constant (const byte) DTV_BLIT_SRCB_CONT#0 = 4 +Constant (const byte) DTV_BLIT_DEST_CONT#0 = 8 +Constant (const byte) DTV_BLIT_STATUS_BUSY#0 = 1 +Constant (const byte) DTV_BLIT_STATUS_IRQ#0 = 2 Constant (const byte*) print_screen#0 = ((byte*))1024 +Constant (const byte[]) print_hextab#0 = $21 +Constant (const byte) KEY_DEL#0 = 0 +Constant (const byte) KEY_RETURN#0 = 1 +Constant (const byte) KEY_CRSR_RIGHT#0 = 2 +Constant (const byte) KEY_F7#0 = 3 +Constant (const byte) KEY_F1#0 = 4 +Constant (const byte) KEY_F3#0 = 5 +Constant (const byte) KEY_F5#0 = 6 +Constant (const byte) KEY_CRSR_DOWN#0 = 7 Constant (const byte) KEY_3#0 = 8 +Constant (const byte) KEY_W#0 = 9 Constant (const byte) KEY_A#0 = 10 Constant (const byte) KEY_4#0 = 11 +Constant (const byte) KEY_Z#0 = 12 +Constant (const byte) KEY_S#0 = 13 Constant (const byte) KEY_E#0 = 14 +Constant (const byte) KEY_LSHIFT#0 = 15 +Constant (const byte) KEY_5#0 = 16 +Constant (const byte) KEY_R#0 = 17 Constant (const byte) KEY_D#0 = 18 Constant (const byte) KEY_6#0 = 19 Constant (const byte) KEY_C#0 = 20 +Constant (const byte) KEY_F#0 = 21 +Constant (const byte) KEY_T#0 = 22 +Constant (const byte) KEY_X#0 = 23 Constant (const byte) KEY_7#0 = 24 +Constant (const byte) KEY_Y#0 = 25 +Constant (const byte) KEY_G#0 = 26 Constant (const byte) KEY_8#0 = 27 Constant (const byte) KEY_B#0 = 28 Constant (const byte) KEY_H#0 = 29 Constant (const byte) KEY_U#0 = 30 +Constant (const byte) KEY_V#0 = 31 +Constant (const byte) KEY_9#0 = 32 +Constant (const byte) KEY_I#0 = 33 +Constant (const byte) KEY_J#0 = 34 Constant (const byte) KEY_0#0 = 35 +Constant (const byte) KEY_M#0 = 36 +Constant (const byte) KEY_K#0 = 37 Constant (const byte) KEY_O#0 = 38 +Constant (const byte) KEY_N#0 = 39 +Constant (const byte) KEY_PLUS#0 = 40 +Constant (const byte) KEY_P#0 = 41 Constant (const byte) KEY_L#0 = 42 +Constant (const byte) KEY_MINUS#0 = 43 +Constant (const byte) KEY_DOT#0 = 44 +Constant (const byte) KEY_COLON#0 = 45 +Constant (const byte) KEY_AT#0 = 46 +Constant (const byte) KEY_COMMA#0 = 47 +Constant (const byte) KEY_POUND#0 = 48 +Constant (const byte) KEY_ASTERISK#0 = 49 +Constant (const byte) KEY_SEMICOLON#0 = 50 +Constant (const byte) KEY_HOME#0 = 51 +Constant (const byte) KEY_RSHIFT#0 = 52 +Constant (const byte) KEY_EQUALS#0 = 53 +Constant (const byte) KEY_ARROW_UP#0 = 54 +Constant (const byte) KEY_SLASH#0 = 55 Constant (const byte) KEY_1#0 = 56 +Constant (const byte) KEY_ARROW_LEFT#0 = 57 +Constant (const byte) KEY_CTRL#0 = 58 Constant (const byte) KEY_2#0 = 59 Constant (const byte) KEY_SPACE#0 = 60 +Constant (const byte) KEY_COMMODORE#0 = 61 +Constant (const byte) KEY_Q#0 = 62 +Constant (const byte) KEY_RUNSTOP#0 = 63 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } +Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) } +Constant (const byte) keyboard_events_size#0 = 0 +Constant (const byte) keyboard_modifiers#0 = 0 +Constant (const byte) KEY_MODIFIER_LSHIFT#0 = 1 +Constant (const byte) KEY_MODIFIER_RSHIFT#0 = 2 +Constant (const byte) KEY_MODIFIER_CTRL#0 = 4 +Constant (const byte) KEY_MODIFIER_COMMODORE#0 = 8 +Constant (const byte[8]) keyboard_scan_values#0 = { fill( 8, 0) } Constant (const byte[256]) bitmap_plot_xlo#0 = { fill( 256, 0) } Constant (const byte[256]) bitmap_plot_xhi#0 = { fill( 256, 0) } Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) } @@ -6899,6 +7615,8 @@ Constant (const word) mode_8bppchunkybmm::x#0 = 0 Constant (const byte*) mode_8bppchunkybmm::gfxb#2 = ((byte*))16384 Constant (const byte/signed byte/word/signed word/dword/signed dword) mode_8bppchunkybmm::$27 = 16384/16384 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } +Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 Constant (const string) $2 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@" Constant (const dword) menu::$0 = ((dword))menu::CHARSET#0 Constant (const dword) menu::$3 = DTV_COLOR_BANK_DEFAULT#0/1024 @@ -7362,17 +8080,19 @@ Resolved ranged next value mode_8bppchunkybmm::x#1 ← ++ mode_8bppchunkybmm::x# Resolved ranged comparison value if(mode_8bppchunkybmm::x#1!=rangelast(0,319)) goto mode_8bppchunkybmm::@3 to (word/signed word/dword/signed dword) 320 Resolved ranged next value mode_8bppchunkybmm::y#1 ← ++ mode_8bppchunkybmm::y#6 to ++ Resolved ranged comparison value if(mode_8bppchunkybmm::y#1!=rangelast(0,199)) goto mode_8bppchunkybmm::@2 to (byte/word/signed word/dword/signed dword) 200 -Culled Empty Block (label) @3 Culled Empty Block (label) @4 +Culled Empty Block (label) @5 Culled Empty Block (label) print_str_lines::@2 Culled Empty Block (label) print_str_lines::@11 Culled Empty Block (label) print_ln::@2 +Culled Empty Block (label) @17 Culled Empty Block (label) print_cls::@2 -Culled Empty Block (label) @23 -Culled Empty Block (label) @30 +Culled Empty Block (label) @24 +Culled Empty Block (label) @28 +Culled Empty Block (label) @31 Culled Empty Block (label) bitmap_init::@6 Culled Empty Block (label) main::@7 -Culled Empty Block (label) @39 +Culled Empty Block (label) @40 Culled Empty Block (label) menu::@18 Culled Empty Block (label) menu::@49 Culled Empty Block (label) menu::@3 @@ -7389,7 +8109,7 @@ Culled Empty Block (label) menu::@70 Culled Empty Block (label) menu::@72 Culled Empty Block (label) menu::@17 Culled Empty Block (label) menu::@73 -Culled Empty Block (label) @40 +Culled Empty Block (label) @41 Culled Empty Block (label) mode_ctrl::@2 Culled Empty Block (label) mode_ctrl::@5 Culled Empty Block (label) mode_ctrl::@15 @@ -7414,7 +8134,7 @@ Culled Empty Block (label) mode_8bpppixelcell::@8 Culled Empty Block (label) mode_8bpppixelcell::@15 Culled Empty Block (label) mode_8bppchunkybmm::@9 Culled Empty Block (label) mode_8bppchunkybmm::@12 -Culled Empty Block (label) @54 +Culled Empty Block (label) @55 Successful SSA optimization Pass2CullEmptyBlocks Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2 Alias (word) bitmap_plot::plotter_y#0 = (word~) bitmap_plot::$3 @@ -8025,7 +8745,7 @@ Added new block during phi lifting print_str_lines::@14(between print_str_lines: Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @53 +Adding NOP phi() at start of @54 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu::@47 @@ -8370,16 +9090,16 @@ Coalesced (already) [1127] mode_stdchar::col#7 ← mode_stdchar::col#1 Coalesced (already) [1128] mode_stdchar::ch#7 ← mode_stdchar::ch#1 Coalesced [1129] mode_stdchar::i#3 ← mode_stdchar::i#1 Coalesced [1134] print_str_lines::str#11 ← print_str_lines::str#2 -Coalesced [1135] print_char_cursor#102 ← print_char_cursor#19 -Coalesced [1142] print_char_cursor#105 ← print_char_cursor#1 +Coalesced [1135] print_char_cursor#104 ← print_char_cursor#19 +Coalesced [1142] print_char_cursor#107 ← print_char_cursor#1 Coalesced [1147] print_str_lines::str#10 ← print_str_lines::str#0 -Not coalescing [1148] print_char_cursor#101 ← print_line_cursor#19 -Coalesced [1149] print_line_cursor#101 ← print_line_cursor#19 +Not coalescing [1148] print_char_cursor#103 ← print_line_cursor#19 +Coalesced [1149] print_line_cursor#103 ← print_line_cursor#19 Coalesced (already) [1150] print_str_lines::str#12 ← print_str_lines::str#0 -Coalesced [1151] print_char_cursor#103 ← print_char_cursor#32 -Coalesced (already) [1152] print_char_cursor#104 ← print_char_cursor#17 -Coalesced [1153] print_line_cursor#102 ← print_line_cursor#17 -Coalesced (already) [1158] print_line_cursor#103 ← print_line_cursor#19 +Coalesced [1151] print_char_cursor#105 ← print_char_cursor#32 +Coalesced (already) [1152] print_char_cursor#106 ← print_char_cursor#17 +Coalesced [1153] print_line_cursor#104 ← print_line_cursor#17 +Coalesced (already) [1158] print_line_cursor#105 ← print_line_cursor#19 Coalesced [1165] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 125 phi equivalence classes Culled Empty Block (label) menu::@75 @@ -8464,7 +9184,7 @@ Culled Empty Block (label) print_str_lines::@14 Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_cls::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @53 +Adding NOP phi() at start of @54 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu::@47 @@ -8521,14 +9241,14 @@ Adding NOP phi() at start of print_set_screen FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@53 -@53: scope:[] from @begin + to:@54 +@54: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @53 +@end: scope:[] from @54 [3] phi() -main: scope:[main] from @53 +main: scope:[main] from @54 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -10023,7 +10743,7 @@ print_str_lines: scope:[print_str_lines] from menu::@48 to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 [866] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*) print_line_cursor#19 ) - [866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#101 ) + [866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#103 ) [866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT#0 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 to:print_str_lines::@return @@ -10048,7 +10768,7 @@ print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@4 print_str print_str_lines::@9: scope:[print_str_lines] from print_str_lines::@5 [877] phi() [878] call print_ln - [879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19 + [879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19 to:print_str_lines::@1 print_ln: scope:[print_ln] from print_str_lines::@9 [880] phi() @@ -10122,11 +10842,90 @@ VARIABLE REGISTER WEIGHTS (byte) BLACK (byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (byte) DTV_CHUNKY (byte) DTV_COLORRAM_OFF @@ -10135,7 +10934,9 @@ VARIABLE REGISTER WEIGHTS (byte*) DTV_COLOR_BANK_LO (byte*) DTV_CONTROL (byte*) DTV_FEATURE +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE +(byte*) DTV_GRAPHICS_HICOL_BANK (byte*) DTV_GRAPHICS_VIC_BANK (byte) DTV_HIGHCOLOR (byte) DTV_LINEAR @@ -10154,33 +10955,117 @@ VARIABLE REGISTER WEIGHTS (byte*) DTV_PLANEB_START_LO (byte*) DTV_PLANEB_START_MI (byte*) DTV_PLANEB_STEP +(byte*) DTV_SPRITE_BANK (byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (byte) KEY_1 (byte) KEY_2 (byte) KEY_3 (byte) KEY_4 +(byte) KEY_5 (byte) KEY_6 (byte) KEY_7 (byte) KEY_8 +(byte) KEY_9 (byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT (byte) KEY_B (byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT (byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G (byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K (byte) KEY_L +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N (byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE +(byte) KEY_T (byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE (byte) LIGHT_GREEN +(byte) LIGHT_GREY (byte[]) MENU_TEXT +(byte) ORANGE +(byte) PINK (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM (byte*) VIC_CONTROL (byte*) VIC_CONTROL2 @@ -10190,6 +11075,9 @@ VARIABLE REGISTER WEIGHTS (byte) VIC_MCM (byte*) VIC_MEMORY (byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 2.0 (byte*) bitmap_clear::bitmap @@ -10408,6 +11296,9 @@ VARIABLE REGISTER WEIGHTS (byte) dtv_control#114 42.099999999999994 (byte) dtv_control#145 2.0 (byte) dtv_control#17 67.33333333333333 +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$2 4.0 (byte) keyboard_key_pressed::colidx @@ -10447,6 +11338,8 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 4.0 (byte[8]) keyboard_matrix_row_bitmask +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (void()) menu() (byte~) menu::$29 202.0 @@ -10891,7 +11784,7 @@ VARIABLE REGISTER WEIGHTS (byte) mode_twoplanebitmap::i#2 202.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 2002.0 -(byte*~) print_char_cursor#101 202.0 +(byte*~) print_char_cursor#103 202.0 (byte*) print_char_cursor#17 821.0 (byte*) print_char_cursor#19 101.0 (byte*) print_char_cursor#32 572.0 @@ -10899,6 +11792,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_cls::sc (byte*) print_cls::sc#1 151.5 (byte*) print_cls::sc#2 151.5 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#17 8.583333333333332 (byte*) print_line_cursor#18 2004.0 @@ -11038,7 +11932,7 @@ Initial phi equivalence classes [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] -[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] +[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] [ print_cls::sc#2 print_cls::sc#1 ] Added variable keyboard_key_pressed::return#2 to zero page equivalence class [ keyboard_key_pressed::return#2 ] @@ -11294,7 +12188,7 @@ Complete equivalence classes [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] -[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] +[ print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] [ print_cls::sc#2 print_cls::sc#1 ] [ keyboard_key_pressed::return#2 ] @@ -11549,7 +12443,7 @@ Allocated zp ZP_BYTE:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] Allocated zp ZP_WORD:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] Allocated zp ZP_WORD:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] Allocated zp ZP_WORD:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] -Allocated zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] +Allocated zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] Allocated zp ZP_WORD:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] Allocated zp ZP_WORD:159 [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_BYTE:161 [ keyboard_key_pressed::return#2 ] @@ -11768,15 +12662,15 @@ INITIAL ASM .label print_line_cursor = $9d //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @53 [phi:@begin->@53] -b53_from_bbegin: - jmp b53 -//SEG4 @53 -b53: +//SEG3 [1] phi from @begin to @54 [phi:@begin->@54] +b54_from_bbegin: + jmp b54 +//SEG4 @54 +b54: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @53 to @end [phi:@53->@end] -bend_from_b53: +//SEG6 [3] phi from @54 to @end [phi:@54->@end] +bend_from_b54: jmp bend //SEG7 @end bend: @@ -16626,7 +17520,7 @@ print_str_lines: { //SEG1632 [880] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] print_ln_from_b9: jsr print_ln - //SEG1633 [879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + //SEG1633 [879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -16634,7 +17528,7 @@ print_str_lines: { //SEG1634 [866] phi from print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines::@9->print_str_lines::@1] b1_from_b9: //SEG1635 [866] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@9->print_str_lines::@1#0] -- register_copy - //SEG1636 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#101 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG1636 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#103 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy //SEG1637 [866] phi (byte*) print_str_lines::str#2 = (byte*) print_str_lines::str#0 [phi:print_str_lines::@9->print_str_lines::@1#2] -- register_copy jmp b1 } @@ -17214,7 +18108,7 @@ Statement [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str Statement [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:33 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y Statement [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:33 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:295 [ print_str_lines::ch#0 ] -Statement [879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#101 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#0 print_char_cursor#101 print_line_cursor#19 ] ) always clobbers reg byte a +Statement [879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#103 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#0 print_char_cursor#103 print_line_cursor#19 ] ) always clobbers reg byte a Statement [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:33::print_ln:878 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:33::print_ln:878 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [887] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::menu:9::print_cls:31 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y @@ -17533,7 +18427,7 @@ Statement [856] *((byte*) mode_stdchar::ch#2) ← (byte~) mode_stdchar::$29 [ mo Statement [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) always clobbers reg byte a reg byte y Statement [870] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#3) [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:33 [ print_line_cursor#17 print_str_lines::str#3 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y Statement [873] *((byte*) print_char_cursor#17) ← (byte) print_str_lines::ch#0 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ( main:2::menu:9::print_str_lines:33 [ print_line_cursor#17 print_str_lines::str#0 print_char_cursor#17 print_str_lines::ch#0 ] ) always clobbers reg byte y -Statement [879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#101 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#0 print_char_cursor#101 print_line_cursor#19 ] ) always clobbers reg byte a +Statement [879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19 [ print_str_lines::str#0 print_char_cursor#103 print_line_cursor#19 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#0 print_char_cursor#103 print_line_cursor#19 ] ) always clobbers reg byte a Statement [882] (byte*) print_line_cursor#19 ← (byte*) print_line_cursor#18 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:33::print_ln:878 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [883] if((byte*) print_line_cursor#19<(byte*) print_char_cursor#32) goto print_ln::@1 [ print_line_cursor#19 print_char_cursor#32 ] ( main:2::menu:9::print_str_lines:33::print_ln:878 [ print_str_lines::str#0 print_line_cursor#19 print_char_cursor#32 ] ) always clobbers reg byte a Statement [887] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::menu:9::print_cls:31 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y @@ -17660,7 +18554,7 @@ Potential registers zp ZP_BYTE:148 [ mode_stdchar::cx#2 mode_stdchar::cx#1 ] : z Potential registers zp ZP_WORD:149 [ mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 ] : zp ZP_WORD:149 , Potential registers zp ZP_WORD:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] : zp ZP_WORD:151 , Potential registers zp ZP_WORD:153 [ print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 ] : zp ZP_WORD:153 , -Potential registers zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] : zp ZP_WORD:155 , +Potential registers zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] : zp ZP_WORD:155 , Potential registers zp ZP_WORD:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] : zp ZP_WORD:157 , Potential registers zp ZP_WORD:159 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:159 , Potential registers zp ZP_BYTE:161 [ keyboard_key_pressed::return#2 ] : zp ZP_BYTE:161 , reg byte a , reg byte x , reg byte y , @@ -17814,7 +18708,7 @@ Uplift Scope [bitmap_line_ydxd] 4,742.47: zp ZP_BYTE:122 [ bitmap_line_ydxd::e#3 Uplift Scope [mode_hicolstdchar] 2,002: zp ZP_BYTE:239 [ mode_hicolstdchar::$24 ] 2,002: zp ZP_BYTE:241 [ mode_hicolstdchar::$26 ] 1,835.17: zp ZP_BYTE:86 [ mode_hicolstdchar::cx#2 mode_hicolstdchar::cx#1 ] 1,019.76: zp ZP_WORD:87 [ mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 ] 1,010.6: zp ZP_WORD:89 [ mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] 1,001: zp ZP_BYTE:240 [ mode_hicolstdchar::$25 ] 1,001: zp ZP_BYTE:242 [ mode_hicolstdchar::v#0 ] 353.5: zp ZP_BYTE:84 [ mode_hicolstdchar::i#2 mode_hicolstdchar::i#1 ] 251.75: zp ZP_BYTE:85 [ mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 ] Uplift Scope [mode_hicolecmchar] 2,002: zp ZP_BYTE:235 [ mode_hicolecmchar::$25 ] 2,002: zp ZP_BYTE:237 [ mode_hicolecmchar::$27 ] 1,835.17: zp ZP_BYTE:79 [ mode_hicolecmchar::cx#2 mode_hicolecmchar::cx#1 ] 1,019.76: zp ZP_WORD:80 [ mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 ] 1,010.6: zp ZP_WORD:82 [ mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 ] 1,001: zp ZP_BYTE:236 [ mode_hicolecmchar::$26 ] 1,001: zp ZP_BYTE:238 [ mode_hicolecmchar::v#0 ] 353.5: zp ZP_BYTE:77 [ mode_hicolecmchar::i#2 mode_hicolecmchar::i#1 ] 251.75: zp ZP_BYTE:78 [ mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 ] Uplift Scope [mode_hicolmcchar] 2,002: zp ZP_BYTE:231 [ mode_hicolmcchar::$25 ] 2,002: zp ZP_BYTE:233 [ mode_hicolmcchar::$27 ] 1,835.17: zp ZP_BYTE:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] 1,019.76: zp ZP_WORD:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] 1,010.6: zp ZP_WORD:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] 1,001: zp ZP_BYTE:232 [ mode_hicolmcchar::$26 ] 1,001: zp ZP_BYTE:234 [ mode_hicolmcchar::v#0 ] 353.5: zp ZP_BYTE:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] 251.75: zp ZP_BYTE:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] -Uplift Scope [] 3,698: zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] 2,653.58: zp ZP_WORD:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] 111.43: zp ZP_BYTE:12 [ dtv_control#114 dtv_control#145 dtv_control#17 ] +Uplift Scope [] 3,698: zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] 2,653.58: zp ZP_WORD:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] 111.43: zp ZP_BYTE:12 [ dtv_control#114 dtv_control#145 dtv_control#17 ] Uplift Scope [bitmap_clear] 2,180.6: zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 2,168.83: zp ZP_BYTE:126 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 185.17: zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:269 [ bitmap_clear::$3 ] Uplift Scope [menu] 353.5: zp ZP_BYTE:2 [ menu::i#2 menu::i#1 ] 303: zp ZP_WORD:3 [ menu::c#2 menu::c#1 ] 202: zp ZP_BYTE:162 [ menu::$29 ] 202: zp ZP_BYTE:164 [ menu::$33 ] 202: zp ZP_BYTE:166 [ menu::$37 ] 202: zp ZP_BYTE:168 [ menu::$41 ] 202: zp ZP_BYTE:170 [ menu::$45 ] 202: zp ZP_BYTE:172 [ menu::$49 ] 202: zp ZP_BYTE:174 [ menu::$53 ] 202: zp ZP_BYTE:176 [ menu::$57 ] 202: zp ZP_BYTE:178 [ menu::$61 ] 202: zp ZP_BYTE:180 [ menu::$65 ] 202: zp ZP_BYTE:182 [ menu::$69 ] 202: zp ZP_BYTE:184 [ menu::$73 ] Uplift Scope [dtvSetCpuBankSegment1] 3,005: zp ZP_BYTE:15 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] @@ -17863,7 +18757,7 @@ Uplifting [mode_hicolecmchar] best 3410281 combination reg byte a [ mode_hicolec Limited combination testing to 10 combinations of 2304 possible. Uplifting [mode_hicolmcchar] best 3398281 combination reg byte a [ mode_hicolmcchar::$25 ] reg byte a [ mode_hicolmcchar::$27 ] zp ZP_BYTE:72 [ mode_hicolmcchar::cx#2 mode_hicolmcchar::cx#1 ] zp ZP_WORD:73 [ mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 ] zp ZP_WORD:75 [ mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 ] zp ZP_BYTE:232 [ mode_hicolmcchar::$26 ] zp ZP_BYTE:234 [ mode_hicolmcchar::v#0 ] zp ZP_BYTE:70 [ mode_hicolmcchar::i#2 mode_hicolmcchar::i#1 ] zp ZP_BYTE:71 [ mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 ] Limited combination testing to 10 combinations of 2304 possible. -Uplifting [] best 3398281 combination zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] zp ZP_WORD:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] zp ZP_BYTE:12 [ dtv_control#114 dtv_control#145 dtv_control#17 ] +Uplifting [] best 3398281 combination zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] zp ZP_WORD:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] zp ZP_BYTE:12 [ dtv_control#114 dtv_control#145 dtv_control#17 ] Uplifting [bitmap_clear] best 3389281 combination zp ZP_WORD:124 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:123 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:269 [ bitmap_clear::$3 ] Uplifting [menu] best 3387481 combination reg byte x [ menu::i#2 menu::i#1 ] zp ZP_WORD:3 [ menu::c#2 menu::c#1 ] reg byte a [ menu::$29 ] zp ZP_BYTE:164 [ menu::$33 ] zp ZP_BYTE:166 [ menu::$37 ] zp ZP_BYTE:168 [ menu::$41 ] zp ZP_BYTE:170 [ menu::$45 ] zp ZP_BYTE:172 [ menu::$49 ] zp ZP_BYTE:174 [ menu::$53 ] zp ZP_BYTE:176 [ menu::$57 ] zp ZP_BYTE:178 [ menu::$61 ] zp ZP_BYTE:180 [ menu::$65 ] zp ZP_BYTE:182 [ menu::$69 ] zp ZP_BYTE:184 [ menu::$73 ] Limited combination testing to 10 combinations of 50331648 possible. @@ -18293,8 +19187,8 @@ Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_ Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 ] ] with [ zp ZP_WORD:137 [ mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 ] ] with [ zp ZP_WORD:144 [ mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] ] Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 ] ] with [ zp ZP_WORD:151 [ mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] -Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] with [ zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] ] -Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 ] ] with [ zp ZP_WORD:261 [ bitmap_plot::plotter_y#0 ] ] +Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 ] ] with [ zp ZP_WORD:155 [ print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] ] +Coalescing zero page register [ zp ZP_WORD:10 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 ] ] with [ zp ZP_WORD:261 [ bitmap_plot::plotter_y#0 ] ] Coalescing zero page register [ zp ZP_BYTE:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 ] ] with [ zp ZP_BYTE:97 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] Coalescing zero page register [ zp ZP_BYTE:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 ] ] with [ zp ZP_BYTE:111 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] Coalescing zero page register [ zp ZP_BYTE:24 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] ] with [ zp ZP_BYTE:204 [ keyboard_key_pressed::colidx#0 ] ] @@ -18320,7 +19214,7 @@ Coalescing zero page register [ zp ZP_BYTE:102 [ bitmap_line_xdyi::e#3 bitmap_li Coalescing zero page register [ zp ZP_WORD:157 [ print_line_cursor#18 print_line_cursor#17 print_line_cursor#19 ] ] with [ zp ZP_WORD:185 [ mode_8bppchunkybmm::$23 ] ] Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ] Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ] -Allocated (was zp ZP_WORD:10) zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ] +Allocated (was zp ZP_WORD:10) zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ] Allocated (was zp ZP_BYTE:24) zp ZP_BYTE:7 [ mode_8bpppixelcell::cr#6 mode_8bpppixelcell::cr#1 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#0 bitmap_line_ydxi::yd#1 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 keyboard_key_pressed::colidx#0 mode_8bpppixelcell::$14 mode_twoplanebitmap::$16 mode_sixsfred2::$15 mode_hicolmcchar::$26 mode_hicolecmchar::$26 mode_hicolstdchar::$25 mode_stdbitmap::col2#0 mode_mcchar::$28 mode_ecmchar::$28 mode_stdchar::$27 ] Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:8 [ mode_8bpppixelcell::bits#2 mode_8bpppixelcell::bits#0 mode_8bpppixelcell::bits#1 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 bitmap_line::xd#1 bitmap_line::xd#0 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#0 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] Allocated (was zp ZP_BYTE:28) zp ZP_BYTE:9 [ mode_8bpppixelcell::col#2 mode_8bpppixelcell::col#5 mode_8bpppixelcell::col#7 mode_8bpppixelcell::col#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x0#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] @@ -18414,15 +19308,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = $d //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @53 [phi:@begin->@53] -b53_from_bbegin: - jmp b53 -//SEG4 @53 -b53: +//SEG3 [1] phi from @begin to @54 [phi:@begin->@54] +b54_from_bbegin: + jmp b54 +//SEG4 @54 +b54: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @53 to @end [phi:@53->@end] -bend_from_b53: +//SEG6 [3] phi from @54 to @end [phi:@54->@end] +bend_from_b54: jmp bend //SEG7 @end bend: @@ -22778,7 +23672,7 @@ print_str_lines: { //SEG1632 [880] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] print_ln_from_b9: jsr print_ln - //SEG1633 [879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + //SEG1633 [879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -22786,7 +23680,7 @@ print_str_lines: { //SEG1634 [866] phi from print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines::@9->print_str_lines::@1] b1_from_b9: //SEG1635 [866] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@9->print_str_lines::@1#0] -- register_copy - //SEG1636 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#101 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG1636 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#103 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy //SEG1637 [866] phi (byte*) print_str_lines::str#2 = (byte*) print_str_lines::str#0 [phi:print_str_lines::@9->print_str_lines::@1#2] -- register_copy jmp b1 } @@ -22880,7 +23774,7 @@ print_set_screen: { MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"+"@" ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b53 +Removing instruction jmp b54 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b1 @@ -23266,8 +24160,8 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b53_from_bbegin: -Removing instruction bend_from_b53: +Removing instruction b54_from_bbegin: +Removing instruction bend_from_b54: Removing instruction b2_from_main: Removing instruction b2_from_b2: Removing instruction b1_from_b1: @@ -23476,7 +24370,7 @@ Removing instruction b1_from_print_ln: Removing instruction b1_from_b1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b53: +Removing instruction b54: Removing instruction bend: Removing instruction b1_from_menu: Removing instruction b2_from_b1: @@ -23766,7 +24660,7 @@ Succesful ASM optimization Pass5UnreachableCodeElimination Fixing long branch [227] beq b4 to bne FINAL SYMBOL TABLE -(label) @53 +(label) @54 (label) @begin (label) @end (byte*) BGCOL @@ -23785,16 +24679,95 @@ FINAL SYMBOL TABLE (const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6 (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_CHUNKY @@ -23811,8 +24784,10 @@ FINAL SYMBOL TABLE (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK (byte*) DTV_GRAPHICS_VIC_BANK (const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) 53309 (byte) DTV_HIGHCOLOR @@ -23849,8 +24824,18 @@ FINAL SYMBOL TABLE (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35 (byte) KEY_1 @@ -23861,48 +24846,122 @@ FINAL SYMBOL TABLE (const byte) KEY_3#0 KEY_3 = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_4 (const byte) KEY_4#0 KEY_4 = (byte/signed byte/word/signed word/dword/signed dword) 11 +(byte) KEY_5 (byte) KEY_6 (const byte) KEY_6#0 KEY_6 = (byte/signed byte/word/signed word/dword/signed dword) 19 (byte) KEY_7 (const byte) KEY_7#0 KEY_7 = (byte/signed byte/word/signed word/dword/signed dword) 24 (byte) KEY_8 (const byte) KEY_8#0 KEY_8 = (byte/signed byte/word/signed word/dword/signed dword) 27 +(byte) KEY_9 (byte) KEY_A (const byte) KEY_A#0 KEY_A = (byte/signed byte/word/signed word/dword/signed dword) 10 +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT (byte) KEY_B (const byte) KEY_B#0 KEY_B = (byte/signed byte/word/signed word/dword/signed dword) 28 (byte) KEY_C (const byte) KEY_C#0 KEY_C = (byte/signed byte/word/signed word/dword/signed dword) 20 +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D (const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18 +(byte) KEY_DEL +(byte) KEY_DOT (byte) KEY_E (const byte) KEY_E#0 KEY_E = (byte/signed byte/word/signed word/dword/signed dword) 14 +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G (byte) KEY_H (const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29 +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K (byte) KEY_L (const byte) KEY_L#0 KEY_L = (byte/signed byte/word/signed word/dword/signed dword) 42 +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N (byte) KEY_O (const byte) KEY_O#0 KEY_O = (byte/signed byte/word/signed word/dword/signed dword) 38 +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T (byte) KEY_U (const byte) KEY_U#0 KEY_U = (byte/signed byte/word/signed word/dword/signed dword) 30 +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE (byte) LIGHT_GREEN (const byte) LIGHT_GREEN#0 LIGHT_GREEN = (byte/signed byte/word/signed word/dword/signed dword) 13 +(byte) LIGHT_GREY (byte[]) MENU_TEXT (const byte[]) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@" +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM (const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 (byte*) VIC_CONTROL @@ -23921,6 +24980,9 @@ FINAL SYMBOL TABLE (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0 (label) bitmap_clear::@1 @@ -24193,6 +25255,9 @@ FINAL SYMBOL TABLE (byte) dtv_control#114 dtv_control zp ZP_BYTE:4 42.099999999999994 (byte) dtv_control#145 dtv_control zp ZP_BYTE:4 2.0 (byte) dtv_control#17 dtv_control zp ZP_BYTE:4 67.33333333333333 +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$2 reg byte a 4.0 (label) keyboard_key_pressed::@2 @@ -24237,6 +25302,8 @@ FINAL SYMBOL TABLE (byte) keyboard_matrix_read::rowid#0 reg byte y 4.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (label) main::@2 (void()) menu() @@ -24911,7 +25978,7 @@ FINAL SYMBOL TABLE (byte) mode_twoplanebitmap::i#2 reg byte x 202.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 2002.0 -(byte*~) print_char_cursor#101 print_char_cursor zp ZP_WORD:5 202.0 +(byte*~) print_char_cursor#103 print_char_cursor zp ZP_WORD:5 202.0 (byte*) print_char_cursor#17 print_char_cursor zp ZP_WORD:5 821.0 (byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:5 101.0 (byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:5 572.0 @@ -24921,6 +25988,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc (byte*) print_cls::sc#1 sc zp ZP_WORD:2 151.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 151.5 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:13 8.583333333333332 (byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:13 2004.0 @@ -24951,7 +26019,7 @@ zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ] reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] -zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ] +zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ] reg byte x [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] reg byte y [ keyboard_key_pressed::key#20 ] reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] @@ -25192,11 +26260,11 @@ Score: 2306078 .label dtv_control = 4 .label print_line_cursor = $d //SEG2 @begin -//SEG3 [1] phi from @begin to @53 [phi:@begin->@53] -//SEG4 @53 +//SEG3 [1] phi from @begin to @54 [phi:@begin->@54] +//SEG4 @54 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @53 to @end [phi:@53->@end] +//SEG6 [3] phi from @54 to @end [phi:@54->@end] //SEG7 @end //SEG8 main main: { @@ -28813,14 +29881,14 @@ print_str_lines: { //SEG1631 [878] call print_ln //SEG1632 [880] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln] jsr print_ln - //SEG1633 [879] (byte*~) print_char_cursor#101 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 + //SEG1633 [879] (byte*~) print_char_cursor#103 ← (byte*) print_line_cursor#19 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG1634 [866] phi from print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines::@9->print_str_lines::@1] //SEG1635 [866] phi (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 [phi:print_str_lines::@9->print_str_lines::@1#0] -- register_copy - //SEG1636 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#101 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy + //SEG1636 [866] phi (byte*) print_char_cursor#19 = (byte*~) print_char_cursor#103 [phi:print_str_lines::@9->print_str_lines::@1#1] -- register_copy //SEG1637 [866] phi (byte*) print_str_lines::str#2 = (byte*) print_str_lines::str#0 [phi:print_str_lines::@9->print_str_lines::@1#2] -- register_copy jmp b1 } diff --git a/src/test/ref/c64dtv-gfxmodes.sym b/src/test/ref/c64dtv-gfxmodes.sym index eb8370ee1..483c711e7 100644 --- a/src/test/ref/c64dtv-gfxmodes.sym +++ b/src/test/ref/c64dtv-gfxmodes.sym @@ -1,4 +1,4 @@ -(label) @53 +(label) @54 (label) @begin (label) @end (byte*) BGCOL @@ -17,16 +17,95 @@ (const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6 (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) DTV_BADLINE_OFF +(byte*) DTV_BLITTER_ALU +(byte*) DTV_BLITTER_CONTROL +(byte*) DTV_BLITTER_CONTROL2 +(byte*) DTV_BLITTER_DEST_HI +(byte*) DTV_BLITTER_DEST_LIN_HI +(byte*) DTV_BLITTER_DEST_LIN_LO +(byte*) DTV_BLITTER_DEST_LO +(byte*) DTV_BLITTER_DEST_MI +(byte*) DTV_BLITTER_DEST_MOD_HI +(byte*) DTV_BLITTER_DEST_MOD_LO +(byte*) DTV_BLITTER_DEST_STEP +(byte*) DTV_BLITTER_LEN_HI +(byte*) DTV_BLITTER_LEN_LO +(byte*) DTV_BLITTER_SRCA_HI +(byte*) DTV_BLITTER_SRCA_LIN_HI +(byte*) DTV_BLITTER_SRCA_LIN_LO +(byte*) DTV_BLITTER_SRCA_LO +(byte*) DTV_BLITTER_SRCA_MI +(byte*) DTV_BLITTER_SRCA_MOD_HI +(byte*) DTV_BLITTER_SRCA_MOD_LO +(byte*) DTV_BLITTER_SRCA_STEP +(byte*) DTV_BLITTER_SRCB_HI +(byte*) DTV_BLITTER_SRCB_LIN_HI +(byte*) DTV_BLITTER_SRCB_LIN_LO +(byte*) DTV_BLITTER_SRCB_LO +(byte*) DTV_BLITTER_SRCB_MI +(byte*) DTV_BLITTER_SRCB_MOD_HI +(byte*) DTV_BLITTER_SRCB_MOD_LO +(byte*) DTV_BLITTER_SRCB_STEP +(byte*) DTV_BLITTER_TRANSPARANCY +(byte) DTV_BLIT_ADD +(byte) DTV_BLIT_AND +(byte) DTV_BLIT_CIA_IRQ +(byte) DTV_BLIT_CLEAR_IRQ +(byte) DTV_BLIT_DEST_CONT +(byte) DTV_BLIT_DEST_FWD +(byte) DTV_BLIT_DISABLE_B +(byte) DTV_BLIT_FORCE_START +(byte) DTV_BLIT_IRQ_EN +(byte) DTV_BLIT_NAND +(byte) DTV_BLIT_NOR +(byte) DTV_BLIT_OR +(byte) DTV_BLIT_SHIFT0 +(byte) DTV_BLIT_SHIFT1 +(byte) DTV_BLIT_SHIFT2 +(byte) DTV_BLIT_SHIFT3 +(byte) DTV_BLIT_SHIFT4 +(byte) DTV_BLIT_SHIFT5 +(byte) DTV_BLIT_SHIFT6 +(byte) DTV_BLIT_SHIFT7 +(byte) DTV_BLIT_SRCA_CONT +(byte) DTV_BLIT_SRCA_FWD +(byte) DTV_BLIT_SRCB_CONT +(byte) DTV_BLIT_SRCB_FWD +(byte) DTV_BLIT_STATUS_BUSY +(byte) DTV_BLIT_STATUS_IRQ +(byte) DTV_BLIT_SUB +(byte) DTV_BLIT_TRANSPARANCY_NONE +(byte) DTV_BLIT_VBLANK +(byte) DTV_BLIT_VIC_IRQ +(byte) DTV_BLIT_WRITE_NONTRANSPARENT +(byte) DTV_BLIT_WRITE_TRANSPARENT +(byte) DTV_BLIT_XNOR +(byte) DTV_BLIT_XOR (byte) DTV_BORDER_OFF (const byte) DTV_BORDER_OFF#0 DTV_BORDER_OFF = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) DTV_CHUNKY @@ -43,8 +122,10 @@ (const byte*) DTV_CONTROL#0 DTV_CONTROL = ((byte*))(word/dword/signed dword) 53308 (byte*) DTV_FEATURE (const byte*) DTV_FEATURE#0 DTV_FEATURE = ((byte*))(word/dword/signed dword) 53311 +(byte) DTV_FEATURE_DISABLE_TIL_RESET (byte) DTV_FEATURE_ENABLE (const byte) DTV_FEATURE_ENABLE#0 DTV_FEATURE_ENABLE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte*) DTV_GRAPHICS_HICOL_BANK (byte*) DTV_GRAPHICS_VIC_BANK (const byte*) DTV_GRAPHICS_VIC_BANK#0 DTV_GRAPHICS_VIC_BANK = ((byte*))(word/dword/signed dword) 53309 (byte) DTV_HIGHCOLOR @@ -81,8 +162,18 @@ (const byte*) DTV_PLANEB_START_MI#0 DTV_PLANEB_START_MI = ((byte*))(word/dword/signed dword) 53322 (byte*) DTV_PLANEB_STEP (const byte*) DTV_PLANEB_STEP#0 DTV_PLANEB_STEP = ((byte*))(word/dword/signed dword) 53324 +(byte*) DTV_SPRITE_BANK (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35 (byte) KEY_1 @@ -93,48 +184,122 @@ (const byte) KEY_3#0 KEY_3 = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_4 (const byte) KEY_4#0 KEY_4 = (byte/signed byte/word/signed word/dword/signed dword) 11 +(byte) KEY_5 (byte) KEY_6 (const byte) KEY_6#0 KEY_6 = (byte/signed byte/word/signed word/dword/signed dword) 19 (byte) KEY_7 (const byte) KEY_7#0 KEY_7 = (byte/signed byte/word/signed word/dword/signed dword) 24 (byte) KEY_8 (const byte) KEY_8#0 KEY_8 = (byte/signed byte/word/signed word/dword/signed dword) 27 +(byte) KEY_9 (byte) KEY_A (const byte) KEY_A#0 KEY_A = (byte/signed byte/word/signed word/dword/signed dword) 10 +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT (byte) KEY_B (const byte) KEY_B#0 KEY_B = (byte/signed byte/word/signed word/dword/signed dword) 28 (byte) KEY_C (const byte) KEY_C#0 KEY_C = (byte/signed byte/word/signed word/dword/signed dword) 20 +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D (const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18 +(byte) KEY_DEL +(byte) KEY_DOT (byte) KEY_E (const byte) KEY_E#0 KEY_E = (byte/signed byte/word/signed word/dword/signed dword) 14 +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G (byte) KEY_H (const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29 +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K (byte) KEY_L (const byte) KEY_L#0 KEY_L = (byte/signed byte/word/signed word/dword/signed dword) 42 +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N (byte) KEY_O (const byte) KEY_O#0 KEY_O = (byte/signed byte/word/signed word/dword/signed dword) 38 +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T (byte) KEY_U (const byte) KEY_U#0 KEY_U = (byte/signed byte/word/signed word/dword/signed dword) 30 +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE (byte) LIGHT_GREEN (const byte) LIGHT_GREEN#0 LIGHT_GREEN = (byte/signed byte/word/signed word/dword/signed dword) 13 +(byte) LIGHT_GREY (byte[]) MENU_TEXT (const byte[]) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@" +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL (byte) PROCPORT_RAM_CHARROM (const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM (const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 (byte*) VIC_CONTROL @@ -153,6 +318,9 @@ (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0 (label) bitmap_clear::@1 @@ -425,6 +593,9 @@ (byte) dtv_control#114 dtv_control zp ZP_BYTE:4 42.099999999999994 (byte) dtv_control#145 dtv_control zp ZP_BYTE:4 2.0 (byte) dtv_control#17 dtv_control zp ZP_BYTE:4 67.33333333333333 +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$2 reg byte a 4.0 (label) keyboard_key_pressed::@2 @@ -469,6 +640,8 @@ (byte) keyboard_matrix_read::rowid#0 reg byte y 4.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (label) main::@2 (void()) menu() @@ -1143,7 +1316,7 @@ (byte) mode_twoplanebitmap::i#2 reg byte x 202.0 (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 2002.0 -(byte*~) print_char_cursor#101 print_char_cursor zp ZP_WORD:5 202.0 +(byte*~) print_char_cursor#103 print_char_cursor zp ZP_WORD:5 202.0 (byte*) print_char_cursor#17 print_char_cursor zp ZP_WORD:5 821.0 (byte*) print_char_cursor#19 print_char_cursor zp ZP_WORD:5 101.0 (byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:5 572.0 @@ -1153,6 +1326,7 @@ (byte*) print_cls::sc (byte*) print_cls::sc#1 sc zp ZP_WORD:2 151.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 151.5 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:13 8.583333333333332 (byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:13 2004.0 @@ -1183,7 +1357,7 @@ zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ] zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ] reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ] -zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ] +zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#103 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ] reg byte x [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ] reg byte y [ keyboard_key_pressed::key#20 ] reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] diff --git a/src/test/ref/constants.cfg b/src/test/ref/constants.cfg index cdbe2265a..f1b729503 100644 --- a/src/test/ref/constants.cfg +++ b/src/test/ref/constants.cfg @@ -50,7 +50,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) test_sbytes::msg test_sbytes::@1/(const string) test_sbytes::msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 ) [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 - [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 + [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [25] call print_str to:assert_sbyte::@5 assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte @@ -76,7 +76,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 [35] call print_str to:assert_sbyte::@2 print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 - [36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#86 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 ) + [36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 ) [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) assert_byte::str1 assert_byte::@3/(const string) assert_byte::str2 assert_byte::@5/(const string) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) assert_sbyte::str1 assert_sbyte::@3/(const string) assert_sbyte::str2 assert_sbyte::@5/(const string) assert_sbyte::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -108,11 +108,11 @@ test_bytes: scope:[test_bytes] from main::@1 [49] call assert_byte to:test_bytes::@1 test_bytes::@1: scope:[test_bytes] from test_bytes - [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 + [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [51] call assert_byte to:test_bytes::@2 test_bytes::@2: scope:[test_bytes] from test_bytes::@1 - [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 + [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 [53] call assert_byte to:test_bytes::@return test_bytes::@return: scope:[test_bytes] from test_bytes::@2 @@ -122,7 +122,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 [55] (byte*) print_line_cursor#50 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*) print_line_cursor#1 test_bytes::@2/(byte*) print_line_cursor#1 ) [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 ) [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) - [55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#92 test_bytes::@2/(byte*~) print_char_cursor#93 ) + [55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 ) [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) test_bytes::msg test_bytes::@1/(const string) test_bytes::msg1 test_bytes::@2/(const string) test_bytes::msg2 ) [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [57] call print_str diff --git a/src/test/ref/constants.log b/src/test/ref/constants.log index d0202772b..c3021e459 100644 --- a/src/test/ref/constants.log +++ b/src/test/ref/constants.log @@ -4,7 +4,7 @@ CONTROL FLOW GRAPH SSA (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 - to:@19 + to:@12 print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#71 assert_byte::@3/(byte*) print_char_cursor#72 assert_byte::@5/(byte*) print_char_cursor#15 assert_sbyte/(byte*) print_char_cursor#75 assert_sbyte::@1/(byte*) print_char_cursor#76 assert_sbyte::@3/(byte*) print_char_cursor#77 assert_sbyte::@5/(byte*) print_char_cursor#27 ) (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) @@ -50,6 +50,12 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#37 return to:@return +@12: scope:[] from @begin + (byte*) print_screen#7 ← phi( @begin/(byte*) print_screen#0 ) + (byte*) print_char_cursor#82 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#59 ← phi( @begin/(byte*) print_line_cursor#0 ) + (byte[]) print_hextab#0 ← (const string) $0 + to:@19 print_cls: scope:[print_cls] from main (byte*) print_screen#1 ← phi( main/(byte*) print_screen#4 ) (byte*) print_cls::sc#0 ← (byte*) print_screen#1 @@ -75,10 +81,10 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#38 return to:@return -@19: scope:[] from @begin - (byte*) print_screen#6 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#81 ← phi( @begin/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#58 ← phi( @begin/(byte*) print_line_cursor#0 ) +@19: scope:[] from @12 + (byte*) print_screen#6 ← phi( @12/(byte*) print_screen#7 ) + (byte*) print_char_cursor#81 ← phi( @12/(byte*) print_char_cursor#82 ) + (byte*) print_line_cursor#58 ← phi( @12/(byte*) print_line_cursor#59 ) (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -168,7 +174,7 @@ test_bytes::@return: scope:[test_bytes] from test_bytes::@3 return to:@return assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 - (byte*) print_line_cursor#67 ← phi( test_bytes/(byte*) print_line_cursor#49 test_bytes::@1/(byte*) print_line_cursor#9 test_bytes::@2/(byte*) print_line_cursor#10 ) + (byte*) print_line_cursor#68 ← phi( test_bytes/(byte*) print_line_cursor#49 test_bytes::@1/(byte*) print_line_cursor#9 test_bytes::@2/(byte*) print_line_cursor#10 ) (byte) assert_byte::c#5 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) (byte) assert_byte::b#5 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) (byte*) print_char_cursor#70 ← phi( test_bytes/(byte*) print_char_cursor#69 test_bytes::@1/(byte*) print_char_cursor#11 test_bytes::@2/(byte*) print_char_cursor#12 ) @@ -177,7 +183,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 call print_str to:assert_byte::@5 assert_byte::@5: scope:[assert_byte] from assert_byte - (byte*) print_line_cursor#65 ← phi( assert_byte/(byte*) print_line_cursor#67 ) + (byte*) print_line_cursor#66 ← phi( assert_byte/(byte*) print_line_cursor#68 ) (byte) assert_byte::c#4 ← phi( assert_byte/(byte) assert_byte::c#5 ) (byte) assert_byte::b#4 ← phi( assert_byte/(byte) assert_byte::b#5 ) (byte*) print_char_cursor#47 ← phi( assert_byte/(byte*) print_char_cursor#2 ) @@ -186,7 +192,7 @@ assert_byte::@5: scope:[assert_byte] from assert_byte call print_str to:assert_byte::@6 assert_byte::@6: scope:[assert_byte] from assert_byte::@5 - (byte*) print_line_cursor#63 ← phi( assert_byte::@5/(byte*) print_line_cursor#65 ) + (byte*) print_line_cursor#64 ← phi( assert_byte::@5/(byte*) print_line_cursor#66 ) (byte) assert_byte::c#3 ← phi( assert_byte::@5/(byte) assert_byte::c#4 ) (byte) assert_byte::b#3 ← phi( assert_byte::@5/(byte) assert_byte::b#4 ) (byte*) print_char_cursor#48 ← phi( assert_byte::@5/(byte*) print_char_cursor#2 ) @@ -195,25 +201,25 @@ assert_byte::@6: scope:[assert_byte] from assert_byte::@5 if((bool~) assert_byte::$2) goto assert_byte::@1 to:assert_byte::@3 assert_byte::@1: scope:[assert_byte] from assert_byte::@6 - (byte*) print_line_cursor#59 ← phi( assert_byte::@6/(byte*) print_line_cursor#63 ) + (byte*) print_line_cursor#60 ← phi( assert_byte::@6/(byte*) print_line_cursor#64 ) (byte*) print_char_cursor#71 ← phi( assert_byte::@6/(byte*) print_char_cursor#16 ) *((byte*) BGCOL#0) ← (byte) RED#0 (byte*) print_str::str#3 ← (const string) assert_byte::str1 call print_str to:assert_byte::@7 assert_byte::@7: scope:[assert_byte] from assert_byte::@1 - (byte*) print_line_cursor#54 ← phi( assert_byte::@1/(byte*) print_line_cursor#59 ) + (byte*) print_line_cursor#54 ← phi( assert_byte::@1/(byte*) print_line_cursor#60 ) (byte*) print_char_cursor#49 ← phi( assert_byte::@1/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#49 to:assert_byte::@2 assert_byte::@3: scope:[assert_byte] from assert_byte::@6 - (byte*) print_line_cursor#60 ← phi( assert_byte::@6/(byte*) print_line_cursor#63 ) + (byte*) print_line_cursor#61 ← phi( assert_byte::@6/(byte*) print_line_cursor#64 ) (byte*) print_char_cursor#72 ← phi( assert_byte::@6/(byte*) print_char_cursor#16 ) (byte*) print_str::str#4 ← (const string) assert_byte::str2 call print_str to:assert_byte::@8 assert_byte::@8: scope:[assert_byte] from assert_byte::@3 - (byte*) print_line_cursor#55 ← phi( assert_byte::@3/(byte*) print_line_cursor#60 ) + (byte*) print_line_cursor#55 ← phi( assert_byte::@3/(byte*) print_line_cursor#61 ) (byte*) print_char_cursor#50 ← phi( assert_byte::@3/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#50 to:assert_byte::@2 @@ -312,7 +318,7 @@ test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 return to:@return assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 - (byte*) print_line_cursor#68 ← phi( test_sbytes/(byte*) print_line_cursor#51 test_sbytes::@1/(byte*) print_line_cursor#15 test_sbytes::@2/(byte*) print_line_cursor#16 test_sbytes::@3/(byte*) print_line_cursor#17 test_sbytes::@4/(byte*) print_line_cursor#18 ) + (byte*) print_line_cursor#69 ← phi( test_sbytes/(byte*) print_line_cursor#51 test_sbytes::@1/(byte*) print_line_cursor#15 test_sbytes::@2/(byte*) print_line_cursor#16 test_sbytes::@3/(byte*) print_line_cursor#17 test_sbytes::@4/(byte*) print_line_cursor#18 ) (signed byte) assert_sbyte::c#7 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) (signed byte) assert_sbyte::b#7 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) (byte*) print_char_cursor#75 ← phi( test_sbytes/(byte*) print_char_cursor#74 test_sbytes::@1/(byte*) print_char_cursor#21 test_sbytes::@2/(byte*) print_char_cursor#22 test_sbytes::@3/(byte*) print_char_cursor#23 test_sbytes::@4/(byte*) print_char_cursor#24 ) @@ -321,7 +327,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes call print_str to:assert_sbyte::@5 assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte - (byte*) print_line_cursor#66 ← phi( assert_sbyte/(byte*) print_line_cursor#68 ) + (byte*) print_line_cursor#67 ← phi( assert_sbyte/(byte*) print_line_cursor#69 ) (signed byte) assert_sbyte::c#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::c#7 ) (signed byte) assert_sbyte::b#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::b#7 ) (byte*) print_char_cursor#59 ← phi( assert_sbyte/(byte*) print_char_cursor#2 ) @@ -330,7 +336,7 @@ assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte call print_str to:assert_sbyte::@6 assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 - (byte*) print_line_cursor#64 ← phi( assert_sbyte::@5/(byte*) print_line_cursor#66 ) + (byte*) print_line_cursor#65 ← phi( assert_sbyte::@5/(byte*) print_line_cursor#67 ) (signed byte) assert_sbyte::c#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::c#6 ) (signed byte) assert_sbyte::b#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::b#6 ) (byte*) print_char_cursor#60 ← phi( assert_sbyte::@5/(byte*) print_char_cursor#2 ) @@ -339,25 +345,25 @@ assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 if((bool~) assert_sbyte::$2) goto assert_sbyte::@1 to:assert_sbyte::@3 assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 - (byte*) print_line_cursor#61 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#64 ) + (byte*) print_line_cursor#62 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#65 ) (byte*) print_char_cursor#76 ← phi( assert_sbyte::@6/(byte*) print_char_cursor#28 ) *((byte*) BGCOL#0) ← (byte) RED#0 (byte*) print_str::str#7 ← (const string) assert_sbyte::str1 call print_str to:assert_sbyte::@7 assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 - (byte*) print_line_cursor#56 ← phi( assert_sbyte::@1/(byte*) print_line_cursor#61 ) + (byte*) print_line_cursor#56 ← phi( assert_sbyte::@1/(byte*) print_line_cursor#62 ) (byte*) print_char_cursor#61 ← phi( assert_sbyte::@1/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#29 ← (byte*) print_char_cursor#61 to:assert_sbyte::@2 assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 - (byte*) print_line_cursor#62 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#64 ) + (byte*) print_line_cursor#63 ← phi( assert_sbyte::@6/(byte*) print_line_cursor#65 ) (byte*) print_char_cursor#77 ← phi( assert_sbyte::@6/(byte*) print_char_cursor#28 ) (byte*) print_str::str#8 ← (const string) assert_sbyte::str2 call print_str to:assert_sbyte::@8 assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 - (byte*) print_line_cursor#57 ← phi( assert_sbyte::@3/(byte*) print_line_cursor#62 ) + (byte*) print_line_cursor#57 ← phi( assert_sbyte::@3/(byte*) print_line_cursor#63 ) (byte*) print_char_cursor#62 ← phi( assert_sbyte::@3/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#30 ← (byte*) print_char_cursor#62 to:assert_sbyte::@2 @@ -394,6 +400,8 @@ assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 @end: scope:[] from @25 SYMBOL TABLE SSA +(const string) $0 = (string) "0123456789abcdef" +(label) @12 (label) @19 (label) @24 (label) @25 @@ -564,6 +572,7 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#8 (byte*) print_char_cursor#80 (byte*) print_char_cursor#81 +(byte*) print_char_cursor#82 (byte*) print_char_cursor#9 (void()) print_cls() (byte*~) print_cls::$0 @@ -575,6 +584,8 @@ SYMBOL TABLE SSA (byte*) print_cls::sc#0 (byte*) print_cls::sc#1 (byte*) print_cls::sc#2 +(byte[]) print_hextab +(byte[]) print_hextab#0 (byte*) print_line_cursor (byte*) print_line_cursor#0 (byte*) print_line_cursor#1 @@ -642,6 +653,7 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#66 (byte*) print_line_cursor#67 (byte*) print_line_cursor#68 +(byte*) print_line_cursor#69 (byte*) print_line_cursor#7 (byte*) print_line_cursor#8 (byte*) print_line_cursor#9 @@ -659,6 +671,7 @@ SYMBOL TABLE SSA (byte*) print_screen#4 (byte*) print_screen#5 (byte*) print_screen#6 +(byte*) print_screen#7 (void()) print_str((byte*) print_str::str) (bool~) print_str::$0 (label) print_str::@1 @@ -730,7 +743,7 @@ SYMBOL TABLE SSA (const string) test_sbytes::msg3 = (string) "-(0+2-4)=2@" (const string) test_sbytes::msg4 = (string) "-127-127=2@" -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#58 (byte*) print_char_cursor#81 (byte*) print_screen#6 (byte*) print_line_cursor#53 (byte*) print_char_cursor#79 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#59 (byte*) print_char_cursor#82 (byte*) print_screen#7 (byte*) print_line_cursor#58 (byte*) print_char_cursor#81 (byte*) print_screen#6 (byte*) print_line_cursor#53 (byte*) print_char_cursor#79 (byte*) print_screen#5 Alias (byte*) print_str::str#10 = (byte*) print_str::str#9 Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#66 (byte*) print_char_cursor#35 Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#25 (byte*) print_char_cursor#3 (byte*) print_line_cursor#26 (byte*) print_char_cursor#37 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 @@ -752,7 +765,7 @@ Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#45 (byte*) print_ Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#34 (byte*) print_line_cursor#35 (byte*) print_line_cursor#12 Alias (byte) assert_byte::b#3 = (byte) assert_byte::b#4 (byte) assert_byte::b#5 Alias (byte) assert_byte::c#3 = (byte) assert_byte::c#4 (byte) assert_byte::c#5 -Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#65 (byte*) print_line_cursor#67 (byte*) print_line_cursor#63 (byte*) print_line_cursor#59 (byte*) print_line_cursor#60 (byte*) print_line_cursor#55 +Alias (byte*) print_line_cursor#54 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#68 (byte*) print_line_cursor#64 (byte*) print_line_cursor#60 (byte*) print_line_cursor#61 (byte*) print_line_cursor#55 Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#47 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#71 (byte*) print_char_cursor#72 Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#49 @@ -777,7 +790,7 @@ Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#57 (byte*) print_ Alias (byte*) print_line_cursor#19 = (byte*) print_line_cursor#42 (byte*) print_line_cursor#43 (byte*) print_line_cursor#20 Alias (signed byte) assert_sbyte::b#5 = (signed byte) assert_sbyte::b#6 (signed byte) assert_sbyte::b#7 Alias (signed byte) assert_sbyte::c#5 = (signed byte) assert_sbyte::c#6 (signed byte) assert_sbyte::c#7 -Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#66 (byte*) print_line_cursor#68 (byte*) print_line_cursor#64 (byte*) print_line_cursor#61 (byte*) print_line_cursor#62 (byte*) print_line_cursor#57 +Alias (byte*) print_line_cursor#56 = (byte*) print_line_cursor#67 (byte*) print_line_cursor#69 (byte*) print_line_cursor#65 (byte*) print_line_cursor#62 (byte*) print_line_cursor#63 (byte*) print_line_cursor#57 Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#59 Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#60 (byte*) print_char_cursor#76 (byte*) print_char_cursor#77 Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#61 @@ -854,6 +867,7 @@ Simple Condition (bool~) assert_byte::$2 if((byte) assert_byte::b#3!=(byte) asse Simple Condition (bool~) assert_sbyte::$2 if((signed byte) assert_sbyte::b#5!=(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 +Constant (const byte[]) print_hextab#0 = $0 Constant (const byte*) BGCOL#0 = ((byte*))53281 Constant (const byte) GREEN#0 = 5 Constant (const byte) RED#0 = 2 @@ -907,7 +921,10 @@ Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) assert_byte::b#2 = test_bytes::bd#0 Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Culled Empty Block (label) print_ln::@2 +Culled Empty Block (label) @12 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) @19 Culled Empty Block (label) main::@3 @@ -1015,27 +1032,27 @@ Calls in [assert_byte] to print_str:69 print_str:71 print_str:74 print_ln:76 pri Created 15 initial phi equivalence classes Coalesced [24] print_str::str#13 ← print_str::str#5 -Not coalescing [25] print_char_cursor#86 ← print_line_cursor#1 -Coalesced [27] print_char_cursor#89 ← print_char_cursor#2 -Coalesced (already) [30] print_char_cursor#88 ← print_char_cursor#2 -Coalesced [32] print_line_cursor#70 ← print_line_cursor#1 -Coalesced (already) [36] print_char_cursor#87 ← print_char_cursor#2 +Not coalescing [25] print_char_cursor#87 ← print_line_cursor#1 +Coalesced [27] print_char_cursor#90 ← print_char_cursor#2 +Coalesced (already) [30] print_char_cursor#89 ← print_char_cursor#2 +Coalesced [32] print_line_cursor#71 ← print_line_cursor#1 +Coalesced (already) [36] print_char_cursor#88 ← print_char_cursor#2 Coalesced [39] print_str::str#14 ← print_str::str#11 -Coalesced (already) [40] print_char_cursor#90 ← print_char_cursor#80 +Coalesced (already) [40] print_char_cursor#91 ← print_char_cursor#80 Coalesced [47] print_str::str#15 ← print_str::str#0 -Coalesced [48] print_char_cursor#91 ← print_char_cursor#1 -Coalesced [50] print_line_cursor#71 ← print_line_cursor#47 -Coalesced (already) [55] print_line_cursor#72 ← print_line_cursor#1 -Not coalescing [58] print_char_cursor#92 ← print_line_cursor#1 -Coalesced [59] print_line_cursor#73 ← print_line_cursor#1 -Not coalescing [61] print_char_cursor#93 ← print_line_cursor#1 -Coalesced (already) [62] print_line_cursor#74 ← print_line_cursor#1 +Coalesced [48] print_char_cursor#92 ← print_char_cursor#1 +Coalesced [50] print_line_cursor#72 ← print_line_cursor#47 +Coalesced (already) [55] print_line_cursor#73 ← print_line_cursor#1 +Not coalescing [58] print_char_cursor#93 ← print_line_cursor#1 +Coalesced [59] print_line_cursor#74 ← print_line_cursor#1 +Not coalescing [61] print_char_cursor#94 ← print_line_cursor#1 +Coalesced (already) [62] print_line_cursor#75 ← print_line_cursor#1 Coalesced [67] print_str::str#12 ← print_str::str#1 -Coalesced [68] print_char_cursor#82 ← print_char_cursor#70 -Coalesced (already) [70] print_char_cursor#85 ← print_char_cursor#2 -Coalesced (already) [73] print_char_cursor#84 ← print_char_cursor#2 -Coalesced (already) [75] print_line_cursor#69 ← print_line_cursor#50 -Coalesced (already) [79] print_char_cursor#83 ← print_char_cursor#2 +Coalesced [68] print_char_cursor#83 ← print_char_cursor#70 +Coalesced (already) [70] print_char_cursor#86 ← print_char_cursor#2 +Coalesced (already) [73] print_char_cursor#85 ← print_char_cursor#2 +Coalesced (already) [75] print_line_cursor#70 ← print_line_cursor#50 +Coalesced (already) [79] print_char_cursor#84 ← print_char_cursor#2 Coalesced [87] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 10 phi equivalence classes Culled Empty Block (label) print_ln::@3 @@ -1112,7 +1129,7 @@ assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) test_sbytes::msg test_sbytes::@1/(const string) test_sbytes::msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 ) [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 - [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 + [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [25] call print_str to:assert_sbyte::@5 assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte @@ -1138,7 +1155,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 [35] call print_str to:assert_sbyte::@2 print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 - [36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#86 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 ) + [36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 ) [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) assert_byte::str1 assert_byte::@3/(const string) assert_byte::str2 assert_byte::@5/(const string) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) assert_sbyte::str1 assert_sbyte::@3/(const string) assert_sbyte::str2 assert_sbyte::@5/(const string) assert_sbyte::str ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -1170,11 +1187,11 @@ test_bytes: scope:[test_bytes] from main::@1 [49] call assert_byte to:test_bytes::@1 test_bytes::@1: scope:[test_bytes] from test_bytes - [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 + [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 [51] call assert_byte to:test_bytes::@2 test_bytes::@2: scope:[test_bytes] from test_bytes::@1 - [52] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 + [52] (byte*~) print_char_cursor#94 ← (byte*) print_line_cursor#1 [53] call assert_byte to:test_bytes::@return test_bytes::@return: scope:[test_bytes] from test_bytes::@2 @@ -1184,7 +1201,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 [55] (byte*) print_line_cursor#50 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*) print_line_cursor#1 test_bytes::@2/(byte*) print_line_cursor#1 ) [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 ) [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) - [55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#92 test_bytes::@2/(byte*~) print_char_cursor#93 ) + [55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 ) [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) test_bytes::msg test_bytes::@1/(const string) test_bytes::msg1 test_bytes::@2/(const string) test_bytes::msg2 ) [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [57] call print_str @@ -1249,13 +1266,14 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#2 2.230769230769231 (byte*) print_char_cursor#70 3.0 (byte*) print_char_cursor#80 18.0 -(byte*~) print_char_cursor#86 4.0 -(byte*~) print_char_cursor#92 4.0 +(byte*~) print_char_cursor#87 4.0 (byte*~) print_char_cursor#93 4.0 +(byte*~) print_char_cursor#94 4.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 (byte*) print_cls::sc#2 16.5 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 1.2500000000000002 (byte*) print_line_cursor#24 24.0 @@ -1285,7 +1303,7 @@ Initial phi equivalence classes [ assert_sbyte::msg#5 ] [ assert_sbyte::b#5 ] [ assert_sbyte::c#5 ] -[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] +[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] [ assert_byte::msg#3 ] @@ -1296,7 +1314,7 @@ Complete equivalence classes [ assert_sbyte::msg#5 ] [ assert_sbyte::b#5 ] [ assert_sbyte::c#5 ] -[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] +[ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] [ assert_byte::msg#3 ] @@ -1306,7 +1324,7 @@ Complete equivalence classes Allocated zp ZP_WORD:2 [ assert_sbyte::msg#5 ] Allocated zp ZP_BYTE:4 [ assert_sbyte::b#5 ] Allocated zp ZP_BYTE:5 [ assert_sbyte::c#5 ] -Allocated zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#86 print_char_cursor#1 print_char_cursor#92 print_char_cursor#93 ] +Allocated zp ZP_WORD:6 [ print_char_cursor#80 print_char_cursor#70 print_char_cursor#2 print_char_cursor#87 print_char_cursor#1 print_char_cursor#93 print_char_cursor#94 ] Allocated zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] Allocated zp ZP_WORD:10 [ print_line_cursor#24 print_line_cursor#47 print_line_cursor#50 print_line_cursor#1 ] Allocated zp ZP_WORD:12 [ assert_byte::msg#3 ] @@ -1495,7 +1513,7 @@ assert_sbyte: { sta print_str.str lda msg+1 sta print_str.str+1 - //SEG60 [24] (byte*~) print_char_cursor#86 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG60 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -1503,7 +1521,7 @@ assert_sbyte: { //SEG61 [25] call print_str //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] print_str_from_assert_sbyte: - //SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy jsr print_str //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] @@ -1684,7 +1702,7 @@ test_bytes: { jmp b1 //SEG120 test_bytes::@1 b1: - //SEG121 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -1699,7 +1717,7 @@ test_bytes: { //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuz1=vbuc1 lda #bc sta assert_byte.b - //SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 lda #assert_byte#2] -- vbuz1=vbuc1 lda #bd sta assert_byte.b - //SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 lda #print_str] print_str_from_assert_sbyte: - //SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy jsr print_str //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] @@ -2308,7 +2326,7 @@ test_bytes: { jmp b1 //SEG120 test_bytes::@1 b1: - //SEG121 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -2322,7 +2340,7 @@ test_bytes: { sta assert_byte.c //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 ldx #bc - //SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 lda #assert_byte#2] -- vbuxx=vbuc1 ldx #bd - //SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 lda #print_str] - //SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#86 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG63 [36] phi (byte*) print_char_cursor#80 = (byte*~) print_char_cursor#87 [phi:assert_sbyte->print_str#0] -- register_copy //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy jsr print_str //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] @@ -3013,7 +3032,7 @@ test_bytes: { sta assert_byte.msg+1 jsr assert_byte //SEG120 test_bytes::@1 - //SEG121 [50] (byte*~) print_char_cursor#92 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG121 [50] (byte*~) print_char_cursor#93 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -3026,7 +3045,7 @@ test_bytes: { sta assert_byte.c //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 ldx #bc - //SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#92 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG127 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 lda #assert_byte#2] -- vbuxx=vbuc1 ldx #bd - //SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG136 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#94 [phi:test_bytes::@2->assert_byte#3] -- register_copy //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 lda #@3] @@ -238,66 +328,87 @@ bend_from_b3: bend: //SEG9 main main: { - //SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] - b2_from_main: - b2_from_b2: + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + jmp b1 + //SEG12 main::@1 + b1: + //SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: jmp b2 - //SEG11 main::@2 + //SEG14 main::@2 b2: - //SEG12 [6] call menu - //SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu] + //SEG15 [7] call menu + //SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu] menu_from_b2: jsr menu - jmp b2_from_b2 + //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + b1_from_b2: + //SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy + jmp b1 } -//SEG14 menu +//SEG19 menu menu: { - //SEG15 [8] phi from menu to menu::@2 [phi:menu->menu::@2] + //SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2] b2_from_menu: jmp b2 - //SEG16 menu::@2 + //SEG21 menu::@2 b2: - //SEG17 [9] call mode - //SEG18 [11] phi from menu::@2 to mode [phi:menu::@2->mode] + //SEG22 [10] call mode + //SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode] mode_from_b2: jsr mode jmp breturn - //SEG19 menu::@return + //SEG24 menu::@return breturn: - //SEG20 [10] return + //SEG25 [11] return rts } -//SEG21 mode +//SEG26 mode mode: { + //SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1] + b1_from_mode: + b1_from_b7: + //SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy + jmp b1 + //SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1] + b1_from_b2: + jmp b1 + //SEG30 mode::@1 + b1: jmp b2 - //SEG22 mode::@2 + //SEG31 mode::@2 b2: - //SEG23 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 -- _deref_pbuc1_neq_0_then_la1 + //SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1 lda B cmp #0 - bne b4_from_b2 - jmp b2 - //SEG24 [13] phi from mode::@2 to mode::@4 [phi:mode::@2->mode::@4] - b4_from_b2: - jmp b4 - //SEG25 mode::@4 - b4: - jmp b2 + bne b1_from_b2 + jmp b7 + //SEG33 mode::@7 + b7: + //SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuz1=_deref_pbuc1 + lda B + sta a + jmp b1_from_b7 } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 [ ] ( main:2::menu:6::mode:9 [ ] ) always clobbers reg byte a +Statement [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ a#1 a#12 a#5 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES +Uplift Scope [] 242.6: zp ZP_BYTE:2 [ a#1 a#12 a#5 ] Uplift Scope [main] Uplift Scope [menu] Uplift Scope [mode] -Uplift Scope [] -Uplifting [main] best 11929 combination -Uplifting [menu] best 11929 combination -Uplifting [mode] best 11929 combination -Uplifting [] best 11929 combination +Uplifting [] best 18376 combination reg byte a [ a#1 a#12 a#5 ] +Uplifting [main] best 18376 combination +Uplifting [menu] best 18376 combination +Uplifting [mode] best 18376 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -324,86 +435,116 @@ bend_from_b3: bend: //SEG9 main main: { - //SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] - b2_from_main: - b2_from_b2: + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + lda #0 + jmp b1 + //SEG12 main::@1 + b1: + //SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: jmp b2 - //SEG11 main::@2 + //SEG14 main::@2 b2: - //SEG12 [6] call menu - //SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu] + //SEG15 [7] call menu + //SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu] menu_from_b2: jsr menu - jmp b2_from_b2 + //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + b1_from_b2: + //SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy + jmp b1 } -//SEG14 menu +//SEG19 menu menu: { - //SEG15 [8] phi from menu to menu::@2 [phi:menu->menu::@2] + //SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2] b2_from_menu: jmp b2 - //SEG16 menu::@2 + //SEG21 menu::@2 b2: - //SEG17 [9] call mode - //SEG18 [11] phi from menu::@2 to mode [phi:menu::@2->mode] + //SEG22 [10] call mode + //SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode] mode_from_b2: jsr mode jmp breturn - //SEG19 menu::@return + //SEG24 menu::@return breturn: - //SEG20 [10] return + //SEG25 [11] return rts } -//SEG21 mode +//SEG26 mode mode: { + //SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1] + b1_from_mode: + b1_from_b7: + //SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy + jmp b1 + //SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1] + b1_from_b2: + jmp b1 + //SEG30 mode::@1 + b1: jmp b2 - //SEG22 mode::@2 + //SEG31 mode::@2 b2: - //SEG23 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 -- _deref_pbuc1_neq_0_then_la1 + //SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1 lda B cmp #0 - bne b4_from_b2 - jmp b2 - //SEG24 [13] phi from mode::@2 to mode::@4 [phi:mode::@2->mode::@4] - b4_from_b2: - jmp b4 - //SEG25 mode::@4 - b4: - jmp b2 + bne b1_from_b2 + jmp b7 + //SEG33 mode::@7 + b7: + //SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1 + lda B + jmp b1_from_b7 } ASSEMBLER OPTIMIZATIONS Removing instruction jmp b3 Removing instruction jmp bend +Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b2 Removing instruction jmp breturn +Removing instruction jmp b1 Removing instruction jmp b2 -Removing instruction jmp b4 +Removing instruction jmp b7 Succesful ASM optimization Pass5NextJumpElimination -Replacing label b2_from_b2 with b2 -Replacing label b4_from_b2 with b4 +Replacing label b1 with b2 +Replacing label b1 with b2 +Replacing label b1_from_b2 with b2 Removing instruction bbegin: Removing instruction b3_from_bbegin: Removing instruction main_from_b3: Removing instruction bend_from_b3: -Removing instruction b2_from_main: -Removing instruction b2_from_b2: +Removing instruction b1: +Removing instruction b2_from_b1: Removing instruction menu_from_b2: Removing instruction b2_from_menu: Removing instruction mode_from_b2: -Removing instruction b4_from_b2: +Removing instruction b1_from_mode: +Removing instruction b1_from_b2: +Removing instruction b1: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction b3: Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction b1_from_b2: Removing instruction b2: Removing instruction breturn: +Removing instruction b7: Succesful ASM optimization Pass5UnusedLabelElimination -Skipping double jump to b2 in bne b4 +Skipping double jump to b2 in jmp b1_from_b7 Succesful ASM optimization Pass5DoubleJumpElimination -Removing instruction b4: -Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp b2 -Succesful ASM optimization Pass5UnreachableCodeElimination +Relabelling long label b1_from_b7 to b1 +Succesful ASM optimization Pass5RelabelLongLabels +Removing instruction jmp b2 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda B +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Removing instruction b1: +Succesful ASM optimization Pass5RedundantLabelElimination FINAL SYMBOL TABLE (label) @3 @@ -411,19 +552,26 @@ FINAL SYMBOL TABLE (label) @end (byte*) B (const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) 4096 +(byte) a +(byte) a#1 reg byte a 2.6 +(byte) a#12 reg byte a 38.0 +(byte) a#5 reg byte a 202.0 (void()) main() +(label) main::@1 (label) main::@2 (void()) menu() (label) menu::@2 (label) menu::@return (void()) mode() +(label) mode::@1 (label) mode::@2 -(label) mode::@4 +(label) mode::@7 +reg byte a [ a#1 a#12 a#5 ] FINAL ASSEMBLER -Score: 11527 +Score: 8874 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -441,35 +589,45 @@ Score: 11527 //SEG8 @end //SEG9 main main: { - //SEG10 [5] phi from main main::@2 to main::@2 [phi:main/main::@2->main::@2] - //SEG11 main::@2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + lda #0 + //SEG12 main::@1 + //SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 main::@2 b2: - //SEG12 [6] call menu - //SEG13 [7] phi from main::@2 to menu [phi:main::@2->menu] + //SEG15 [7] call menu + //SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu] jsr menu + //SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy jmp b2 } -//SEG14 menu +//SEG19 menu menu: { - //SEG15 [8] phi from menu to menu::@2 [phi:menu->menu::@2] - //SEG16 menu::@2 - //SEG17 [9] call mode - //SEG18 [11] phi from menu::@2 to mode [phi:menu::@2->mode] + //SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2] + //SEG21 menu::@2 + //SEG22 [10] call mode + //SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode] jsr mode - //SEG19 menu::@return - //SEG20 [10] return + //SEG24 menu::@return + //SEG25 [11] return rts } -//SEG21 mode +//SEG26 mode mode: { - //SEG22 mode::@2 + //SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1] + //SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy + //SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1] + //SEG30 mode::@1 + //SEG31 mode::@2 b2: - //SEG23 [12] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4 -- _deref_pbuc1_neq_0_then_la1 + //SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 -- _deref_pbuc1_neq_0_then_la1 lda B cmp #0 bne b2 + //SEG33 mode::@7 + //SEG34 [15] (byte) a#5 ← *((const byte*) B#0) -- vbuaa=_deref_pbuc1 jmp b2 - //SEG24 [13] phi from mode::@2 to mode::@4 [phi:mode::@2->mode::@4] - //SEG25 mode::@4 } diff --git a/src/test/ref/emptyblock-error.sym b/src/test/ref/emptyblock-error.sym index 6a0e6d39f..49a7d62c4 100644 --- a/src/test/ref/emptyblock-error.sym +++ b/src/test/ref/emptyblock-error.sym @@ -3,12 +3,19 @@ (label) @end (byte*) B (const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) 4096 +(byte) a +(byte) a#1 reg byte a 2.6 +(byte) a#12 reg byte a 38.0 +(byte) a#5 reg byte a 202.0 (void()) main() +(label) main::@1 (label) main::@2 (void()) menu() (label) menu::@2 (label) menu::@return (void()) mode() +(label) mode::@1 (label) mode::@2 -(label) mode::@4 +(label) mode::@7 +reg byte a [ a#1 a#12 a#5 ] diff --git a/src/test/ref/examples/3d/3d.asm b/src/test/ref/examples/3d/3d.asm index f6b5e94d8..6dce76516 100644 --- a/src/test/ref/examples/3d/3d.asm +++ b/src/test/ref/examples/3d/3d.asm @@ -10,7 +10,7 @@ .const GREEN = 5 .const LIGHT_BLUE = $e .const LIGHT_GREY = $f - .label print_screen = $400 + .label print_line_cursor = $400 .label xr = $f0 .label yr = $f1 .label zr = $f2 @@ -154,77 +154,77 @@ debug_print: { .label c = 4 .label i = 5 ldx sx - lda #print_screen+print_sbyte_pos1_row*$28+print_sbyte_pos1_col + lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col sta print_sbyte_at.at+1 jsr print_sbyte_at lda sy tax - lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col + lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col sta print_sbyte_at.at+1 jsr print_sbyte_at - lda #print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col + lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta print_sbyte_at.at+1 ldx #sz jsr print_sbyte_at lda rotation_matrix tax - lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col + lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+1 - lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col + lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+2 - lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col + lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+3 - lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col + lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+4 - lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col + lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+5 - lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col + lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+6 - lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col + lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+7 - lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col + lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta print_sbyte_at.at+1 jsr print_sbyte_at ldx rotation_matrix+8 - lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col + lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col sta print_sbyte_at.at+1 jsr print_sbyte_at lda #0 @@ -1025,9 +1025,9 @@ print_str_at: { } print_cls: { .label sc = 6 - lda #print_screen + lda #>print_line_cursor sta sc+1 b1: lda #' ' @@ -1038,10 +1038,10 @@ print_cls: { inc sc+1 !: lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1 lda sc - cmp #159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } @@ -94,9 +94,9 @@ }} [11] call main to:@end -@end: scope:[] from @32 +@end: scope:[] from @33 [12] phi() -main: scope:[main] from @32 +main: scope:[main] from @33 asm { sei } [14] call sprites_init to:main::@1 @@ -292,7 +292,7 @@ debug_print::@return: scope:[debug_print] from debug_print::@32 [113] return to:@return print_sbyte_at: scope:[print_sbyte_at] from debug_print::@1 debug_print::@27 debug_print::@28 debug_print::@29 debug_print::@30 debug_print::@31 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@18 debug_print_init::@19 - [114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 ) + [114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 ) [114] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@27/(signed byte) print_sbyte_at::b#17 debug_print::@28/(signed byte) print_sbyte_at::b#18 debug_print::@29/(signed byte) print_sbyte_at::b#19 debug_print::@30/(signed byte) print_sbyte_at::b#20 debug_print::@31/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@18/(signed byte) print_sbyte_at::b#2 debug_print_init::@19/(signed byte) print_sbyte_at::b#3 ) [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 to:print_sbyte_at::@3 @@ -533,10 +533,10 @@ print_cls: scope:[print_cls] from debug_print_init [267] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) [269] *((byte*) print_cls::sc#2) ← (byte) ' ' [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [271] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 [272] return diff --git a/src/test/ref/examples/3d/3d.log b/src/test/ref/examples/3d/3d.log index 0c7245913..684e2feb8 100644 --- a/src/test/ref/examples/3d/3d.log +++ b/src/test/ref/examples/3d/3d.log @@ -102,19 +102,91 @@ Inlined call call print_sbyte_pos *((signed byte[9]) rotation_matrix + (byte/sig CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - to:@3 -@3: scope:[] from @begin + to:@4 +@4: scope:[] from @begin (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@15 + (byte*) print_line_cursor#0 ← (byte*) print_screen#0 + (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 + to:@16 print_str_at: scope:[print_str_at] from debug_print_init::@10 debug_print_init::@11 debug_print_init::@12 debug_print_init::@13 debug_print_init::@14 debug_print_init::@15 debug_print_init::@16 debug_print_init::@5 debug_print_init::@6 debug_print_init::@7 debug_print_init::@8 debug_print_init::@9 (byte*) print_str_at::at#15 ← phi( debug_print_init::@10/(byte*) print_str_at::at#6 debug_print_init::@11/(byte*) print_str_at::at#7 debug_print_init::@12/(byte*) print_str_at::at#8 debug_print_init::@13/(byte*) print_str_at::at#9 debug_print_init::@14/(byte*) print_str_at::at#10 debug_print_init::@15/(byte*) print_str_at::at#11 debug_print_init::@16/(byte*) print_str_at::at#12 debug_print_init::@5/(byte*) print_str_at::at#1 debug_print_init::@6/(byte*) print_str_at::at#2 debug_print_init::@7/(byte*) print_str_at::at#3 debug_print_init::@8/(byte*) print_str_at::at#4 debug_print_init::@9/(byte*) print_str_at::at#5 ) (byte*) print_str_at::str#15 ← phi( debug_print_init::@10/(byte*) print_str_at::str#6 debug_print_init::@11/(byte*) print_str_at::str#7 debug_print_init::@12/(byte*) print_str_at::str#8 debug_print_init::@13/(byte*) print_str_at::str#9 debug_print_init::@14/(byte*) print_str_at::str#10 debug_print_init::@15/(byte*) print_str_at::str#11 debug_print_init::@16/(byte*) print_str_at::str#12 debug_print_init::@5/(byte*) print_str_at::str#1 debug_print_init::@6/(byte*) print_str_at::str#2 debug_print_init::@7/(byte*) print_str_at::str#3 debug_print_init::@8/(byte*) print_str_at::str#4 debug_print_init::@9/(byte*) print_str_at::str#5 ) @@ -179,10 +251,12 @@ print_sbyte_at::@7: scope:[print_sbyte_at] from print_sbyte_at::@2 print_sbyte_at::@return: scope:[print_sbyte_at] from print_sbyte_at::@7 return to:@return -@15: scope:[] from @3 - (byte*) print_screen#51 ← phi( @3/(byte*) print_screen#0 ) +@16: scope:[] from @4 + (byte*) print_screen#52 ← phi( @4/(byte*) print_screen#0 ) + (byte*) print_char_cursor#26 ← phi( @4/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#26 ← phi( @4/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $12 - to:@22 + to:@23 print_byte_at: scope:[print_byte_at] from print_sbyte_at::@2 (byte*) print_byte_at::at#1 ← phi( print_sbyte_at::@2/(byte*) print_byte_at::at#0 ) (byte) print_byte_at::b#1 ← phi( print_sbyte_at::@2/(byte) print_byte_at::b#0 ) @@ -214,7 +288,7 @@ print_char_at::@return: scope:[print_char_at] from print_char_at return to:@return print_cls: scope:[print_cls] from debug_print_init - (byte*) print_screen#1 ← phi( debug_print_init/(byte*) print_screen#15 ) + (byte*) print_screen#1 ← phi( debug_print_init/(byte*) print_screen#16 ) (byte*) print_cls::sc#0 ← (byte*) print_screen#1 to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 @@ -225,12 +299,23 @@ print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 (byte*~) print_cls::$0 ← (byte*) print_screen#2 + (word/signed word/dword/signed dword) 1000 (bool~) print_cls::$1 ← (byte*) print_cls::sc#1 != (byte*~) print_cls::$0 if((bool~) print_cls::$1) goto print_cls::@1 + to:print_cls::@2 +print_cls::@2: scope:[print_cls] from print_cls::@1 + (byte*) print_screen#3 ← phi( print_cls::@1/(byte*) print_screen#2 ) + (byte*) print_line_cursor#1 ← (byte*) print_screen#3 + (byte*) print_char_cursor#1 ← (byte*) print_line_cursor#1 to:print_cls::@return -print_cls::@return: scope:[print_cls] from print_cls::@1 +print_cls::@return: scope:[print_cls] from print_cls::@2 + (byte*) print_char_cursor#8 ← phi( print_cls::@2/(byte*) print_char_cursor#1 ) + (byte*) print_line_cursor#8 ← phi( print_cls::@2/(byte*) print_line_cursor#1 ) + (byte*) print_line_cursor#2 ← (byte*) print_line_cursor#8 + (byte*) print_char_cursor#2 ← (byte*) print_char_cursor#8 return to:@return -@22: scope:[] from @15 - (byte*) print_screen#49 ← phi( @15/(byte*) print_screen#51 ) +@23: scope:[] from @16 + (byte*) print_screen#50 ← phi( @16/(byte*) print_screen#52 ) + (byte*) print_char_cursor#24 ← phi( @16/(byte*) print_char_cursor#26 ) + (byte*) print_line_cursor#24 ← phi( @16/(byte*) print_line_cursor#26 ) (signed byte*) xr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 240 (signed byte*) yr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 241 (signed byte*) zr#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) 242 @@ -240,28 +325,30 @@ print_cls::@return: scope:[print_cls] from print_cls::@1 (word*) psp1#0 ← ((word*)) (byte/word/signed word/dword/signed dword) 246 (word*) psp2#0 ← ((word*)) (byte/word/signed word/dword/signed dword) 248 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@23 -main: scope:[main] from @32 - (signed byte*) yp#19 ← phi( @32/(signed byte*) yp#20 ) - (signed byte*) xp#19 ← phi( @32/(signed byte*) xp#20 ) - (signed byte*) pp#19 ← phi( @32/(signed byte*) pp#20 ) - (signed byte*) zr#20 ← phi( @32/(signed byte*) zr#21 ) - (signed byte*) yr#20 ← phi( @32/(signed byte*) yr#21 ) - (signed byte*) xr#20 ← phi( @32/(signed byte*) xr#21 ) - (signed byte*) SINQ#17 ← phi( @32/(signed byte*) SINQ#0 ) - (signed byte*) COSQ#17 ← phi( @32/(signed byte*) COSQ#0 ) - (signed byte*) SINH#17 ← phi( @32/(signed byte*) SINH#0 ) - (signed byte*) COSH#17 ← phi( @32/(signed byte*) COSH#0 ) - (signed byte) sz#23 ← phi( @32/(signed byte) sz#25 ) - (byte*) SCREEN#19 ← phi( @32/(byte*) SCREEN#21 ) - (byte*) print_screen#41 ← phi( @32/(byte*) print_screen#43 ) - (signed byte) sy#26 ← phi( @32/(signed byte) sy#18 ) - (signed byte) sx#24 ← phi( @32/(signed byte) sx#17 ) - (byte*) SPRITE#3 ← phi( @32/(byte*) SPRITE#0 ) - (word*) psp2#2 ← phi( @32/(word*) psp2#3 ) - (byte*) mulf_sqr2#2 ← phi( @32/(byte*) mulf_sqr2#0 ) - (word*) psp1#2 ← phi( @32/(word*) psp1#3 ) - (byte*) mulf_sqr1#2 ← phi( @32/(byte*) mulf_sqr1#0 ) + to:@24 +main: scope:[main] from @33 + (signed byte*) yp#19 ← phi( @33/(signed byte*) yp#20 ) + (signed byte*) xp#19 ← phi( @33/(signed byte*) xp#20 ) + (signed byte*) pp#19 ← phi( @33/(signed byte*) pp#20 ) + (signed byte*) zr#20 ← phi( @33/(signed byte*) zr#21 ) + (signed byte*) yr#20 ← phi( @33/(signed byte*) yr#21 ) + (signed byte*) xr#20 ← phi( @33/(signed byte*) xr#21 ) + (signed byte*) SINQ#17 ← phi( @33/(signed byte*) SINQ#0 ) + (signed byte*) COSQ#17 ← phi( @33/(signed byte*) COSQ#0 ) + (signed byte*) SINH#17 ← phi( @33/(signed byte*) SINH#0 ) + (signed byte*) COSH#17 ← phi( @33/(signed byte*) COSH#0 ) + (signed byte) sz#23 ← phi( @33/(signed byte) sz#25 ) + (byte*) SCREEN#19 ← phi( @33/(byte*) SCREEN#21 ) + (byte*) print_screen#42 ← phi( @33/(byte*) print_screen#44 ) + (signed byte) sy#26 ← phi( @33/(signed byte) sy#18 ) + (signed byte) sx#24 ← phi( @33/(signed byte) sx#17 ) + (byte*) SPRITE#3 ← phi( @33/(byte*) SPRITE#0 ) + (byte*) print_char_cursor#19 ← phi( @33/(byte*) print_char_cursor#18 ) + (byte*) print_line_cursor#19 ← phi( @33/(byte*) print_line_cursor#18 ) + (word*) psp2#2 ← phi( @33/(word*) psp2#3 ) + (byte*) mulf_sqr2#2 ← phi( @33/(byte*) mulf_sqr2#0 ) + (word*) psp1#2 ← phi( @33/(word*) psp1#3 ) + (byte*) mulf_sqr1#2 ← phi( @33/(byte*) mulf_sqr1#0 ) asm { sei } call sprites_init to:main::@1 @@ -278,9 +365,11 @@ main::@1: scope:[main] from main (signed byte*) COSH#15 ← phi( main/(signed byte*) COSH#17 ) (signed byte) sz#21 ← phi( main/(signed byte) sz#23 ) (byte*) SCREEN#17 ← phi( main/(byte*) SCREEN#19 ) - (byte*) print_screen#28 ← phi( main/(byte*) print_screen#41 ) + (byte*) print_screen#29 ← phi( main/(byte*) print_screen#42 ) (signed byte) sy#19 ← phi( main/(signed byte) sy#26 ) (signed byte) sx#18 ← phi( main/(signed byte) sx#24 ) + (byte*) print_char_cursor#14 ← phi( main/(byte*) print_char_cursor#19 ) + (byte*) print_line_cursor#14 ← phi( main/(byte*) print_line_cursor#19 ) (word*) psp2#1 ← phi( main/(word*) psp2#2 ) (byte*) mulf_sqr2#1 ← phi( main/(byte*) mulf_sqr2#2 ) (word*) psp1#1 ← phi( main/(word*) psp1#2 ) @@ -293,7 +382,7 @@ main::@1: scope:[main] from main to:main::@2 main::@2: scope:[main] from main::@1 (byte*) SCREEN#73 ← phi( main::@1/(byte*) SCREEN#17 ) - (byte*) print_screen#62 ← phi( main::@1/(byte*) print_screen#28 ) + (byte*) print_screen#63 ← phi( main::@1/(byte*) print_screen#29 ) (signed byte*) yp#16 ← phi( main::@1/(signed byte*) yp#18 ) (signed byte*) xp#16 ← phi( main::@1/(signed byte*) xp#18 ) (signed byte*) pp#16 ← phi( main::@1/(signed byte*) pp#18 ) @@ -307,9 +396,15 @@ main::@2: scope:[main] from main::@1 (signed byte) sz#19 ← phi( main::@1/(signed byte) sz#21 ) (signed byte) sy#13 ← phi( main::@1/(signed byte) sy#19 ) (signed byte) sx#13 ← phi( main::@1/(signed byte) sx#18 ) + (byte*) print_char_cursor#9 ← phi( main::@1/(byte*) print_char_cursor#6 ) + (byte*) print_line_cursor#9 ← phi( main::@1/(byte*) print_line_cursor#6 ) + (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9 + (byte*) print_char_cursor#3 ← (byte*) print_char_cursor#9 call anim to:main::@3 main::@3: scope:[main] from main::@2 + (byte*) print_char_cursor#15 ← phi( main::@2/(byte*) print_char_cursor#3 ) + (byte*) print_line_cursor#15 ← phi( main::@2/(byte*) print_line_cursor#3 ) (signed byte) sy#6 ← phi( main::@2/(signed byte) sy#4 ) (signed byte) sx#6 ← phi( main::@2/(signed byte) sx#4 ) (signed byte) sx#0 ← (signed byte) sx#6 @@ -318,21 +413,27 @@ main::@3: scope:[main] from main::@2 main::@return: scope:[main] from main::@3 (signed byte) sy#7 ← phi( main::@3/(signed byte) sy#0 ) (signed byte) sx#7 ← phi( main::@3/(signed byte) sx#0 ) + (byte*) print_char_cursor#10 ← phi( main::@3/(byte*) print_char_cursor#15 ) + (byte*) print_line_cursor#10 ← phi( main::@3/(byte*) print_line_cursor#15 ) + (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#10 + (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#10 (signed byte) sx#1 ← (signed byte) sx#7 (signed byte) sy#1 ← (signed byte) sy#7 return to:@return -@23: scope:[] from @22 - (signed byte*) yp#22 ← phi( @22/(signed byte*) yp#0 ) - (signed byte*) xp#22 ← phi( @22/(signed byte*) xp#0 ) - (signed byte*) pp#22 ← phi( @22/(signed byte*) pp#0 ) - (signed byte*) zr#23 ← phi( @22/(signed byte*) zr#0 ) - (signed byte*) yr#23 ← phi( @22/(signed byte*) yr#0 ) - (signed byte*) xr#23 ← phi( @22/(signed byte*) xr#0 ) - (byte*) SCREEN#26 ← phi( @22/(byte*) SCREEN#0 ) - (byte*) print_screen#48 ← phi( @22/(byte*) print_screen#49 ) - (word*) psp2#5 ← phi( @22/(word*) psp2#0 ) - (word*) psp1#5 ← phi( @22/(word*) psp1#0 ) +@24: scope:[] from @23 + (signed byte*) yp#22 ← phi( @23/(signed byte*) yp#0 ) + (signed byte*) xp#22 ← phi( @23/(signed byte*) xp#0 ) + (signed byte*) pp#22 ← phi( @23/(signed byte*) pp#0 ) + (signed byte*) zr#23 ← phi( @23/(signed byte*) zr#0 ) + (signed byte*) yr#23 ← phi( @23/(signed byte*) yr#0 ) + (signed byte*) xr#23 ← phi( @23/(signed byte*) xr#0 ) + (byte*) SCREEN#26 ← phi( @23/(byte*) SCREEN#0 ) + (byte*) print_screen#49 ← phi( @23/(byte*) print_screen#50 ) + (word*) psp2#5 ← phi( @23/(word*) psp2#0 ) + (word*) psp1#5 ← phi( @23/(word*) psp1#0 ) + (byte*) print_char_cursor#23 ← phi( @23/(byte*) print_char_cursor#24 ) + (byte*) print_line_cursor#23 ← phi( @23/(byte*) print_line_cursor#24 ) (signed byte/signed word/signed dword~) $0 ← - (byte/signed byte/word/signed word/dword/signed dword) 52 (signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) 52 (signed byte/signed word/signed dword~) $2 ← - (byte/signed byte/word/signed word/dword/signed dword) 52 @@ -351,10 +452,10 @@ main::@return: scope:[main] from main::@3 (signed byte) sx#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed byte) sy#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed byte) sz#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@27 + to:@28 anim: scope:[anim] from main::@2 (byte*) SCREEN#71 ← phi( main::@2/(byte*) SCREEN#73 ) - (byte*) print_screen#60 ← phi( main::@2/(byte*) print_screen#62 ) + (byte*) print_screen#61 ← phi( main::@2/(byte*) print_screen#63 ) (signed byte*) yp#14 ← phi( main::@2/(signed byte*) yp#16 ) (signed byte*) xp#14 ← phi( main::@2/(signed byte*) xp#16 ) (signed byte*) pp#14 ← phi( main::@2/(signed byte*) pp#16 ) @@ -371,7 +472,7 @@ anim: scope:[anim] from main::@2 to:anim::@1 anim::@1: scope:[anim] from anim anim::@30 (byte*) SCREEN#70 ← phi( anim/(byte*) SCREEN#71 anim::@30/(byte*) SCREEN#72 ) - (byte*) print_screen#59 ← phi( anim/(byte*) print_screen#60 anim::@30/(byte*) print_screen#61 ) + (byte*) print_screen#60 ← phi( anim/(byte*) print_screen#61 anim::@30/(byte*) print_screen#62 ) (signed byte*) yp#13 ← phi( anim/(signed byte*) yp#14 anim::@30/(signed byte*) yp#15 ) (signed byte*) xp#13 ← phi( anim/(signed byte*) xp#14 anim::@30/(signed byte*) xp#15 ) (signed byte*) pp#13 ← phi( anim/(signed byte*) pp#14 anim::@30/(signed byte*) pp#15 ) @@ -389,7 +490,7 @@ anim::@1: scope:[anim] from anim anim::@30 to:anim::@return anim::@2: scope:[anim] from anim::@1 (byte*) SCREEN#68 ← phi( anim::@1/(byte*) SCREEN#70 ) - (byte*) print_screen#57 ← phi( anim::@1/(byte*) print_screen#59 ) + (byte*) print_screen#58 ← phi( anim::@1/(byte*) print_screen#60 ) (signed byte*) yp#11 ← phi( anim::@1/(signed byte*) yp#13 ) (signed byte*) xp#11 ← phi( anim::@1/(signed byte*) xp#13 ) (signed byte*) pp#11 ← phi( anim::@1/(signed byte*) pp#13 ) @@ -406,7 +507,7 @@ anim::@2: scope:[anim] from anim::@1 to:anim::@4 anim::@4: scope:[anim] from anim::@2 anim::@5 (byte*) SCREEN#66 ← phi( anim::@2/(byte*) SCREEN#68 anim::@5/(byte*) SCREEN#69 ) - (byte*) print_screen#55 ← phi( anim::@2/(byte*) print_screen#57 anim::@5/(byte*) print_screen#58 ) + (byte*) print_screen#56 ← phi( anim::@2/(byte*) print_screen#58 anim::@5/(byte*) print_screen#59 ) (signed byte*) yp#9 ← phi( anim::@2/(signed byte*) yp#11 anim::@5/(signed byte*) yp#12 ) (signed byte*) xp#9 ← phi( anim::@2/(signed byte*) xp#11 anim::@5/(signed byte*) xp#12 ) (signed byte*) pp#9 ← phi( anim::@2/(signed byte*) pp#11 anim::@5/(signed byte*) pp#12 ) @@ -425,7 +526,7 @@ anim::@4: scope:[anim] from anim::@2 anim::@5 to:anim::@7 anim::@5: scope:[anim] from anim::@4 (byte*) SCREEN#69 ← phi( anim::@4/(byte*) SCREEN#66 ) - (byte*) print_screen#58 ← phi( anim::@4/(byte*) print_screen#55 ) + (byte*) print_screen#59 ← phi( anim::@4/(byte*) print_screen#56 ) (signed byte*) yp#12 ← phi( anim::@4/(signed byte*) yp#9 ) (signed byte*) xp#12 ← phi( anim::@4/(signed byte*) xp#9 ) (signed byte*) pp#12 ← phi( anim::@4/(signed byte*) pp#9 ) @@ -442,7 +543,7 @@ anim::@5: scope:[anim] from anim::@4 to:anim::@4 anim::@7: scope:[anim] from anim::@4 anim::@8 (byte*) SCREEN#65 ← phi( anim::@4/(byte*) SCREEN#66 anim::@8/(byte*) SCREEN#67 ) - (byte*) print_screen#54 ← phi( anim::@4/(byte*) print_screen#55 anim::@8/(byte*) print_screen#56 ) + (byte*) print_screen#55 ← phi( anim::@4/(byte*) print_screen#56 anim::@8/(byte*) print_screen#57 ) (signed byte*) yp#8 ← phi( anim::@4/(signed byte*) yp#9 anim::@8/(signed byte*) yp#10 ) (signed byte*) xp#8 ← phi( anim::@4/(signed byte*) xp#9 anim::@8/(signed byte*) xp#10 ) (signed byte*) pp#8 ← phi( anim::@4/(signed byte*) pp#9 anim::@8/(signed byte*) pp#10 ) @@ -461,7 +562,7 @@ anim::@7: scope:[anim] from anim::@4 anim::@8 to:anim::@10 anim::@8: scope:[anim] from anim::@7 (byte*) SCREEN#67 ← phi( anim::@7/(byte*) SCREEN#65 ) - (byte*) print_screen#56 ← phi( anim::@7/(byte*) print_screen#54 ) + (byte*) print_screen#57 ← phi( anim::@7/(byte*) print_screen#55 ) (signed byte*) yp#10 ← phi( anim::@7/(signed byte*) yp#8 ) (signed byte*) xp#10 ← phi( anim::@7/(signed byte*) xp#8 ) (signed byte*) pp#10 ← phi( anim::@7/(signed byte*) pp#8 ) @@ -478,7 +579,7 @@ anim::@8: scope:[anim] from anim::@7 to:anim::@7 anim::@10: scope:[anim] from anim::@11 anim::@7 (byte*) SCREEN#63 ← phi( anim::@11/(byte*) SCREEN#64 anim::@7/(byte*) SCREEN#65 ) - (byte*) print_screen#52 ← phi( anim::@11/(byte*) print_screen#53 anim::@7/(byte*) print_screen#54 ) + (byte*) print_screen#53 ← phi( anim::@11/(byte*) print_screen#54 anim::@7/(byte*) print_screen#55 ) (signed byte*) yp#6 ← phi( anim::@11/(signed byte*) yp#7 anim::@7/(signed byte*) yp#8 ) (signed byte*) xp#6 ← phi( anim::@11/(signed byte*) xp#7 anim::@7/(signed byte*) xp#8 ) (signed byte*) pp#6 ← phi( anim::@11/(signed byte*) pp#7 anim::@7/(signed byte*) pp#8 ) @@ -497,7 +598,7 @@ anim::@10: scope:[anim] from anim::@11 anim::@7 to:anim::@12 anim::@11: scope:[anim] from anim::@10 (byte*) SCREEN#64 ← phi( anim::@10/(byte*) SCREEN#63 ) - (byte*) print_screen#53 ← phi( anim::@10/(byte*) print_screen#52 ) + (byte*) print_screen#54 ← phi( anim::@10/(byte*) print_screen#53 ) (signed byte*) yp#7 ← phi( anim::@10/(signed byte*) yp#6 ) (signed byte*) xp#7 ← phi( anim::@10/(signed byte*) xp#6 ) (signed byte*) pp#7 ← phi( anim::@10/(signed byte*) pp#6 ) @@ -514,7 +615,7 @@ anim::@11: scope:[anim] from anim::@10 to:anim::@10 anim::@12: scope:[anim] from anim::@10 (byte*) SCREEN#62 ← phi( anim::@10/(byte*) SCREEN#63 ) - (byte*) print_screen#50 ← phi( anim::@10/(byte*) print_screen#52 ) + (byte*) print_screen#51 ← phi( anim::@10/(byte*) print_screen#53 ) (signed byte*) yp#5 ← phi( anim::@10/(signed byte*) yp#6 ) (signed byte*) xp#5 ← phi( anim::@10/(signed byte*) xp#6 ) (signed byte*) pp#5 ← phi( anim::@10/(signed byte*) pp#6 ) @@ -541,7 +642,7 @@ anim::@27: scope:[anim] from anim::@12 (signed byte*) SINH#20 ← phi( anim::@12/(signed byte*) SINH#2 ) (signed byte*) COSH#20 ← phi( anim::@12/(signed byte*) COSH#2 ) (signed byte) sz#27 ← phi( anim::@12/(signed byte) sz#1 ) - (byte*) print_screen#47 ← phi( anim::@12/(byte*) print_screen#50 ) + (byte*) print_screen#48 ← phi( anim::@12/(byte*) print_screen#51 ) (signed byte) sy#34 ← phi( anim::@12/(signed byte) sy#8 ) (signed byte) sx#31 ← phi( anim::@12/(signed byte) sx#8 ) (signed byte*) yp#4 ← phi( anim::@12/(signed byte*) yp#5 ) @@ -559,7 +660,7 @@ anim::@28: scope:[anim] from anim::@27 (signed byte*) SINH#19 ← phi( anim::@27/(signed byte*) SINH#20 ) (signed byte*) COSH#19 ← phi( anim::@27/(signed byte*) COSH#20 ) (signed byte) sz#26 ← phi( anim::@27/(signed byte) sz#27 ) - (byte*) print_screen#45 ← phi( anim::@27/(byte*) print_screen#47 ) + (byte*) print_screen#46 ← phi( anim::@27/(byte*) print_screen#48 ) (signed byte) sy#33 ← phi( anim::@27/(signed byte) sy#34 ) (signed byte) sx#30 ← phi( anim::@27/(signed byte) sx#31 ) (signed byte*) yp#3 ← phi( anim::@27/(signed byte*) yp#4 ) @@ -577,7 +678,7 @@ anim::@13: scope:[anim] from anim::@28 anim::@29 (signed byte*) SINH#18 ← phi( anim::@28/(signed byte*) SINH#19 anim::@29/(signed byte*) SINH#16 ) (signed byte*) COSH#18 ← phi( anim::@28/(signed byte*) COSH#19 anim::@29/(signed byte*) COSH#16 ) (signed byte) sz#24 ← phi( anim::@28/(signed byte) sz#26 anim::@29/(signed byte) sz#22 ) - (byte*) print_screen#44 ← phi( anim::@28/(byte*) print_screen#45 anim::@29/(byte*) print_screen#42 ) + (byte*) print_screen#45 ← phi( anim::@28/(byte*) print_screen#46 anim::@29/(byte*) print_screen#43 ) (signed byte) sy#29 ← phi( anim::@28/(signed byte) sy#33 anim::@29/(signed byte) sy#23 ) (signed byte) sx#27 ← phi( anim::@28/(signed byte) sx#30 anim::@29/(signed byte) sx#22 ) (signed byte*) yp#2 ← phi( anim::@28/(signed byte*) yp#3 anim::@29/(signed byte*) yp#1 ) @@ -600,7 +701,7 @@ anim::@29: scope:[anim] from anim::@13 (signed byte*) SINH#16 ← phi( anim::@13/(signed byte*) SINH#18 ) (signed byte*) COSH#16 ← phi( anim::@13/(signed byte*) COSH#18 ) (signed byte) sz#22 ← phi( anim::@13/(signed byte) sz#24 ) - (byte*) print_screen#42 ← phi( anim::@13/(byte*) print_screen#44 ) + (byte*) print_screen#43 ← phi( anim::@13/(byte*) print_screen#45 ) (signed byte) sy#23 ← phi( anim::@13/(signed byte) sy#29 ) (signed byte) sx#22 ← phi( anim::@13/(signed byte) sx#27 ) (signed byte*) yp#1 ← phi( anim::@13/(signed byte*) yp#2 ) @@ -641,7 +742,7 @@ anim::@25: scope:[anim] from anim::@29 (signed byte*) SINH#14 ← phi( anim::@29/(signed byte*) SINH#16 ) (signed byte*) COSH#14 ← phi( anim::@29/(signed byte*) COSH#16 ) (signed byte) sz#20 ← phi( anim::@29/(signed byte) sz#22 ) - (byte*) print_screen#29 ← phi( anim::@29/(byte*) print_screen#42 ) + (byte*) print_screen#30 ← phi( anim::@29/(byte*) print_screen#43 ) (signed byte) sy#15 ← phi( anim::@29/(signed byte) sy#23 ) (signed byte) sx#15 ← phi( anim::@29/(signed byte) sx#22 ) *((byte*) BORDERCOL#0) ← (byte) LIGHT_GREY#0 @@ -649,7 +750,7 @@ anim::@25: scope:[anim] from anim::@29 to:anim::@30 anim::@30: scope:[anim] from anim::@25 (byte*) SCREEN#72 ← phi( anim::@25/(byte*) SCREEN#57 ) - (byte*) print_screen#61 ← phi( anim::@25/(byte*) print_screen#29 ) + (byte*) print_screen#62 ← phi( anim::@25/(byte*) print_screen#30 ) (signed byte*) yp#15 ← phi( anim::@25/(signed byte*) yp#17 ) (signed byte*) xp#15 ← phi( anim::@25/(signed byte*) xp#17 ) (signed byte*) pp#15 ← phi( anim::@25/(signed byte*) pp#17 ) @@ -676,11 +777,17 @@ anim::@return: scope:[anim] from anim::@1 to:@return debug_print_init: scope:[debug_print_init] from main::@1 (byte*) SCREEN#15 ← phi( main::@1/(byte*) SCREEN#17 ) - (byte*) print_screen#15 ← phi( main::@1/(byte*) print_screen#28 ) + (byte*) print_char_cursor#16 ← phi( main::@1/(byte*) print_char_cursor#14 ) + (byte*) print_line_cursor#16 ← phi( main::@1/(byte*) print_line_cursor#14 ) + (byte*) print_screen#16 ← phi( main::@1/(byte*) print_screen#29 ) call print_cls to:debug_print_init::@5 debug_print_init::@5: scope:[debug_print_init] from debug_print_init (byte*) SCREEN#1 ← phi( debug_print_init/(byte*) SCREEN#15 ) + (byte*) print_char_cursor#11 ← phi( debug_print_init/(byte*) print_char_cursor#2 ) + (byte*) print_line_cursor#11 ← phi( debug_print_init/(byte*) print_line_cursor#2 ) + (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#11 + (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#11 (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$1 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 0 (byte*~) debug_print_init::$2 ← (byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$1 (byte*~) debug_print_init::$3 ← (byte*~) debug_print_init::$2 + (byte/signed byte/word/signed word/dword/signed dword) 34 @@ -689,6 +796,8 @@ debug_print_init::@5: scope:[debug_print_init] from debug_print_init call print_str_at to:debug_print_init::@6 debug_print_init::@6: scope:[debug_print_init] from debug_print_init::@5 + (byte*) print_char_cursor#40 ← phi( debug_print_init::@5/(byte*) print_char_cursor#5 ) + (byte*) print_line_cursor#40 ← phi( debug_print_init::@5/(byte*) print_line_cursor#5 ) (byte*) SCREEN#2 ← phi( debug_print_init::@5/(byte*) SCREEN#1 ) (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$5 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*~) debug_print_init::$6 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$5 @@ -698,6 +807,8 @@ debug_print_init::@6: scope:[debug_print_init] from debug_print_init::@5 call print_str_at to:debug_print_init::@7 debug_print_init::@7: scope:[debug_print_init] from debug_print_init::@6 + (byte*) print_char_cursor#39 ← phi( debug_print_init::@6/(byte*) print_char_cursor#40 ) + (byte*) print_line_cursor#39 ← phi( debug_print_init::@6/(byte*) print_line_cursor#40 ) (byte*) SCREEN#3 ← phi( debug_print_init::@6/(byte*) SCREEN#2 ) (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$9 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*~) debug_print_init::$10 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) debug_print_init::$9 @@ -707,6 +818,8 @@ debug_print_init::@7: scope:[debug_print_init] from debug_print_init::@6 call print_str_at to:debug_print_init::@8 debug_print_init::@8: scope:[debug_print_init] from debug_print_init::@7 + (byte*) print_char_cursor#38 ← phi( debug_print_init::@7/(byte*) print_char_cursor#39 ) + (byte*) print_line_cursor#38 ← phi( debug_print_init::@7/(byte*) print_line_cursor#39 ) (byte*) SCREEN#4 ← phi( debug_print_init::@7/(byte*) SCREEN#3 ) (word/signed word/dword/signed dword~) debug_print_init::$13 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 16 (byte*~) debug_print_init::$14 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword~) debug_print_init::$13 @@ -715,6 +828,8 @@ debug_print_init::@8: scope:[debug_print_init] from debug_print_init::@7 call print_str_at to:debug_print_init::@9 debug_print_init::@9: scope:[debug_print_init] from debug_print_init::@8 + (byte*) print_char_cursor#37 ← phi( debug_print_init::@8/(byte*) print_char_cursor#38 ) + (byte*) print_line_cursor#37 ← phi( debug_print_init::@8/(byte*) print_line_cursor#38 ) (byte*) SCREEN#5 ← phi( debug_print_init::@8/(byte*) SCREEN#4 ) (word/signed word/dword/signed dword~) debug_print_init::$16 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 17 (byte*~) debug_print_init::$17 ← (byte*) SCREEN#5 + (word/signed word/dword/signed dword~) debug_print_init::$16 @@ -723,6 +838,8 @@ debug_print_init::@9: scope:[debug_print_init] from debug_print_init::@8 call print_str_at to:debug_print_init::@10 debug_print_init::@10: scope:[debug_print_init] from debug_print_init::@9 + (byte*) print_char_cursor#36 ← phi( debug_print_init::@9/(byte*) print_char_cursor#37 ) + (byte*) print_line_cursor#36 ← phi( debug_print_init::@9/(byte*) print_line_cursor#37 ) (byte*) SCREEN#6 ← phi( debug_print_init::@9/(byte*) SCREEN#5 ) (word/signed word/dword/signed dword~) debug_print_init::$19 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 18 (byte*~) debug_print_init::$20 ← (byte*) SCREEN#6 + (word/signed word/dword/signed dword~) debug_print_init::$19 @@ -731,6 +848,8 @@ debug_print_init::@10: scope:[debug_print_init] from debug_print_init::@9 call print_str_at to:debug_print_init::@11 debug_print_init::@11: scope:[debug_print_init] from debug_print_init::@10 + (byte*) print_char_cursor#35 ← phi( debug_print_init::@10/(byte*) print_char_cursor#36 ) + (byte*) print_line_cursor#35 ← phi( debug_print_init::@10/(byte*) print_line_cursor#36 ) (byte*) SCREEN#7 ← phi( debug_print_init::@10/(byte*) SCREEN#6 ) (word/signed word/dword/signed dword~) debug_print_init::$22 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 19 (byte*~) debug_print_init::$23 ← (byte*) SCREEN#7 + (word/signed word/dword/signed dword~) debug_print_init::$22 @@ -739,6 +858,8 @@ debug_print_init::@11: scope:[debug_print_init] from debug_print_init::@10 call print_str_at to:debug_print_init::@12 debug_print_init::@12: scope:[debug_print_init] from debug_print_init::@11 + (byte*) print_char_cursor#34 ← phi( debug_print_init::@11/(byte*) print_char_cursor#35 ) + (byte*) print_line_cursor#34 ← phi( debug_print_init::@11/(byte*) print_line_cursor#35 ) (byte*) SCREEN#8 ← phi( debug_print_init::@11/(byte*) SCREEN#7 ) (word/signed word/dword/signed dword~) debug_print_init::$25 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 20 (byte*~) debug_print_init::$26 ← (byte*) SCREEN#8 + (word/signed word/dword/signed dword~) debug_print_init::$25 @@ -747,6 +868,8 @@ debug_print_init::@12: scope:[debug_print_init] from debug_print_init::@11 call print_str_at to:debug_print_init::@13 debug_print_init::@13: scope:[debug_print_init] from debug_print_init::@12 + (byte*) print_char_cursor#33 ← phi( debug_print_init::@12/(byte*) print_char_cursor#34 ) + (byte*) print_line_cursor#33 ← phi( debug_print_init::@12/(byte*) print_line_cursor#34 ) (byte*) SCREEN#9 ← phi( debug_print_init::@12/(byte*) SCREEN#8 ) (word/signed word/dword/signed dword~) debug_print_init::$28 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 21 (byte*~) debug_print_init::$29 ← (byte*) SCREEN#9 + (word/signed word/dword/signed dword~) debug_print_init::$28 @@ -755,6 +878,8 @@ debug_print_init::@13: scope:[debug_print_init] from debug_print_init::@12 call print_str_at to:debug_print_init::@14 debug_print_init::@14: scope:[debug_print_init] from debug_print_init::@13 + (byte*) print_char_cursor#32 ← phi( debug_print_init::@13/(byte*) print_char_cursor#33 ) + (byte*) print_line_cursor#32 ← phi( debug_print_init::@13/(byte*) print_line_cursor#33 ) (byte*) SCREEN#10 ← phi( debug_print_init::@13/(byte*) SCREEN#9 ) (word/signed word/dword/signed dword~) debug_print_init::$31 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 22 (byte*~) debug_print_init::$32 ← (byte*) SCREEN#10 + (word/signed word/dword/signed dword~) debug_print_init::$31 @@ -763,6 +888,8 @@ debug_print_init::@14: scope:[debug_print_init] from debug_print_init::@13 call print_str_at to:debug_print_init::@15 debug_print_init::@15: scope:[debug_print_init] from debug_print_init::@14 + (byte*) print_char_cursor#31 ← phi( debug_print_init::@14/(byte*) print_char_cursor#32 ) + (byte*) print_line_cursor#31 ← phi( debug_print_init::@14/(byte*) print_line_cursor#32 ) (byte*) SCREEN#11 ← phi( debug_print_init::@14/(byte*) SCREEN#10 ) (word/signed word/dword/signed dword~) debug_print_init::$34 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 23 (byte*~) debug_print_init::$35 ← (byte*) SCREEN#11 + (word/signed word/dword/signed dword~) debug_print_init::$34 @@ -771,6 +898,8 @@ debug_print_init::@15: scope:[debug_print_init] from debug_print_init::@14 call print_str_at to:debug_print_init::@16 debug_print_init::@16: scope:[debug_print_init] from debug_print_init::@15 + (byte*) print_char_cursor#30 ← phi( debug_print_init::@15/(byte*) print_char_cursor#31 ) + (byte*) print_line_cursor#30 ← phi( debug_print_init::@15/(byte*) print_line_cursor#31 ) (byte*) SCREEN#12 ← phi( debug_print_init::@15/(byte*) SCREEN#11 ) (word/signed word/dword/signed dword~) debug_print_init::$37 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 24 (byte*~) debug_print_init::$38 ← (byte*) SCREEN#12 + (word/signed word/dword/signed dword~) debug_print_init::$37 @@ -779,6 +908,8 @@ debug_print_init::@16: scope:[debug_print_init] from debug_print_init::@15 call print_str_at to:debug_print_init::@17 debug_print_init::@17: scope:[debug_print_init] from debug_print_init::@16 + (byte*) print_char_cursor#29 ← phi( debug_print_init::@16/(byte*) print_char_cursor#30 ) + (byte*) print_line_cursor#29 ← phi( debug_print_init::@16/(byte*) print_line_cursor#30 ) (byte*) SCREEN#13 ← phi( debug_print_init::@16/(byte*) SCREEN#12 ) (word/signed word/dword/signed dword~) debug_print_init::$40 ← (byte/signed byte/word/signed word/dword/signed dword) 16 * (byte/signed byte/word/signed word/dword/signed dword) 40 (byte*~) debug_print_init::$41 ← (byte*) SCREEN#13 + (word/signed word/dword/signed dword~) debug_print_init::$40 @@ -791,6 +922,8 @@ debug_print_init::@17: scope:[debug_print_init] from debug_print_init::@16 (byte) debug_print_init::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:debug_print_init::@1 debug_print_init::@1: scope:[debug_print_init] from debug_print_init::@17 debug_print_init::@3 + (byte*) print_char_cursor#28 ← phi( debug_print_init::@17/(byte*) print_char_cursor#29 debug_print_init::@3/(byte*) print_char_cursor#17 ) + (byte*) print_line_cursor#28 ← phi( debug_print_init::@17/(byte*) print_line_cursor#29 debug_print_init::@3/(byte*) print_line_cursor#17 ) (byte*) debug_print_init::at_cols#5 ← phi( debug_print_init::@17/(byte*) debug_print_init::at_cols#0 debug_print_init::@3/(byte*) debug_print_init::at_cols#6 ) (byte) debug_print_init::i#2 ← phi( debug_print_init::@17/(byte) debug_print_init::i#0 debug_print_init::@3/(byte) debug_print_init::i#1 ) (byte) debug_print_init::c#2 ← phi( debug_print_init::@17/(byte) debug_print_init::c#0 debug_print_init::@3/(byte) debug_print_init::c#1 ) @@ -803,6 +936,8 @@ debug_print_init::@1: scope:[debug_print_init] from debug_print_init::@17 debug call print_sbyte_at to:debug_print_init::@18 debug_print_init::@18: scope:[debug_print_init] from debug_print_init::@1 + (byte*) print_char_cursor#27 ← phi( debug_print_init::@1/(byte*) print_char_cursor#28 ) + (byte*) print_line_cursor#27 ← phi( debug_print_init::@1/(byte*) print_line_cursor#28 ) (byte*) debug_print_init::at_cols#4 ← phi( debug_print_init::@1/(byte*) debug_print_init::at_cols#5 ) (byte) debug_print_init::i#3 ← phi( debug_print_init::@1/(byte) debug_print_init::i#2 ) (byte) debug_print_init::c#3 ← phi( debug_print_init::@1/(byte) debug_print_init::c#2 ) @@ -815,6 +950,8 @@ debug_print_init::@18: scope:[debug_print_init] from debug_print_init::@1 call print_sbyte_at to:debug_print_init::@19 debug_print_init::@19: scope:[debug_print_init] from debug_print_init::@18 + (byte*) print_char_cursor#25 ← phi( debug_print_init::@18/(byte*) print_char_cursor#27 ) + (byte*) print_line_cursor#25 ← phi( debug_print_init::@18/(byte*) print_line_cursor#27 ) (byte*) debug_print_init::at_cols#3 ← phi( debug_print_init::@18/(byte*) debug_print_init::at_cols#4 ) (byte) debug_print_init::i#4 ← phi( debug_print_init::@18/(byte) debug_print_init::i#3 ) (byte) debug_print_init::c#4 ← phi( debug_print_init::@18/(byte) debug_print_init::c#3 ) @@ -827,6 +964,8 @@ debug_print_init::@19: scope:[debug_print_init] from debug_print_init::@18 call print_sbyte_at to:debug_print_init::@20 debug_print_init::@20: scope:[debug_print_init] from debug_print_init::@19 + (byte*) print_char_cursor#22 ← phi( debug_print_init::@19/(byte*) print_char_cursor#25 ) + (byte*) print_line_cursor#22 ← phi( debug_print_init::@19/(byte*) print_line_cursor#25 ) (byte*) debug_print_init::at_line#6 ← phi( debug_print_init::@19/(byte*) debug_print_init::at_line#3 ) (byte) debug_print_init::c#7 ← phi( debug_print_init::@19/(byte) debug_print_init::c#4 ) (byte*) debug_print_init::at_cols#2 ← phi( debug_print_init::@19/(byte*) debug_print_init::at_cols#3 ) @@ -834,6 +973,8 @@ debug_print_init::@20: scope:[debug_print_init] from debug_print_init::@19 (byte) debug_print_init::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:debug_print_init::@2 debug_print_init::@2: scope:[debug_print_init] from debug_print_init::@2 debug_print_init::@20 + (byte*) print_char_cursor#20 ← phi( debug_print_init::@2/(byte*) print_char_cursor#20 debug_print_init::@20/(byte*) print_char_cursor#22 ) + (byte*) print_line_cursor#20 ← phi( debug_print_init::@2/(byte*) print_line_cursor#20 debug_print_init::@20/(byte*) print_line_cursor#22 ) (byte*) debug_print_init::at_line#5 ← phi( debug_print_init::@2/(byte*) debug_print_init::at_line#5 debug_print_init::@20/(byte*) debug_print_init::at_line#6 ) (byte) debug_print_init::j#2 ← phi( debug_print_init::@2/(byte) debug_print_init::j#1 debug_print_init::@20/(byte) debug_print_init::j#0 ) (byte) debug_print_init::c#5 ← phi( debug_print_init::@2/(byte) debug_print_init::c#5 debug_print_init::@20/(byte) debug_print_init::c#7 ) @@ -892,6 +1033,8 @@ debug_print_init::@2: scope:[debug_print_init] from debug_print_init::@2 debug_ to:debug_print_init::@3 debug_print_init::@3: scope:[debug_print_init] from debug_print_init::@2 (byte*) debug_print_init::at_cols#6 ← phi( debug_print_init::@2/(byte*) debug_print_init::at_cols#1 ) + (byte*) print_char_cursor#17 ← phi( debug_print_init::@2/(byte*) print_char_cursor#20 ) + (byte*) print_line_cursor#17 ← phi( debug_print_init::@2/(byte*) print_line_cursor#20 ) (byte*) debug_print_init::at_line#4 ← phi( debug_print_init::@2/(byte*) debug_print_init::at_line#5 ) (byte) debug_print_init::i#6 ← phi( debug_print_init::@2/(byte) debug_print_init::i#5 ) (byte) debug_print_init::c#6 ← phi( debug_print_init::@2/(byte) debug_print_init::c#5 ) @@ -901,13 +1044,17 @@ debug_print_init::@3: scope:[debug_print_init] from debug_print_init::@2 if((bool~) debug_print_init::$94) goto debug_print_init::@1 to:debug_print_init::@return debug_print_init::@return: scope:[debug_print_init] from debug_print_init::@3 + (byte*) print_char_cursor#12 ← phi( debug_print_init::@3/(byte*) print_char_cursor#17 ) + (byte*) print_line_cursor#12 ← phi( debug_print_init::@3/(byte*) print_line_cursor#17 ) + (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#12 + (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#12 return to:@return debug_print: scope:[debug_print] from anim::@25 (byte*) SCREEN#56 ← phi( anim::@25/(byte*) SCREEN#57 ) (signed byte) sz#18 ← phi( anim::@25/(signed byte) sz#20 ) (signed byte) sy#30 ← phi( anim::@25/(signed byte) sy#15 ) - (byte*) print_screen#16 ← phi( anim::@25/(byte*) print_screen#29 ) + (byte*) print_screen#17 ← phi( anim::@25/(byte*) print_screen#30 ) (signed byte) sx#11 ← phi( anim::@25/(signed byte) sx#15 ) (signed byte) debug_print::print_sbyte_pos1_sb#0 ← (signed byte) sx#11 (byte) debug_print::print_sbyte_pos1_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -919,10 +1066,10 @@ debug_print::print_sbyte_pos1: scope:[debug_print] from debug_print (signed byte) sy#24 ← phi( debug_print/(signed byte) sy#30 ) (signed byte) debug_print::print_sbyte_pos1_sb#1 ← phi( debug_print/(signed byte) debug_print::print_sbyte_pos1_sb#0 ) (byte) debug_print::print_sbyte_pos1_col#1 ← phi( debug_print/(byte) debug_print::print_sbyte_pos1_col#0 ) - (byte*) print_screen#3 ← phi( debug_print/(byte*) print_screen#16 ) + (byte*) print_screen#4 ← phi( debug_print/(byte*) print_screen#17 ) (byte) debug_print::print_sbyte_pos1_row#1 ← phi( debug_print/(byte) debug_print::print_sbyte_pos1_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos1_$0#0 ← (byte) debug_print::print_sbyte_pos1_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos1_$1#0 ← (byte*) print_screen#3 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos1_$0#0 + (byte*) debug_print::print_sbyte_pos1_$1#0 ← (byte*) print_screen#4 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos1_$0#0 (byte*) debug_print::print_sbyte_pos1_$2#0 ← (byte*) debug_print::print_sbyte_pos1_$1#0 + (byte) debug_print::print_sbyte_pos1_col#1 (signed byte) print_sbyte_at::b#4 ← (signed byte) debug_print::print_sbyte_pos1_sb#1 (byte*) print_sbyte_at::at#3 ← (byte*) debug_print::print_sbyte_pos1_$2#0 @@ -931,13 +1078,13 @@ debug_print::print_sbyte_pos1: scope:[debug_print] from debug_print debug_print::@15: scope:[debug_print] from debug_print::print_sbyte_pos1 (byte*) SCREEN#54 ← phi( debug_print::print_sbyte_pos1/(byte*) SCREEN#55 ) (signed byte) sz#13 ← phi( debug_print::print_sbyte_pos1/(signed byte) sz#15 ) - (byte*) print_screen#30 ← phi( debug_print::print_sbyte_pos1/(byte*) print_screen#3 ) + (byte*) print_screen#31 ← phi( debug_print::print_sbyte_pos1/(byte*) print_screen#4 ) (signed byte) sy#17 ← phi( debug_print::print_sbyte_pos1/(signed byte) sy#24 ) to:debug_print::@3 debug_print::@3: scope:[debug_print] from debug_print::@15 (byte*) SCREEN#53 ← phi( debug_print::@15/(byte*) SCREEN#54 ) (signed byte) sz#10 ← phi( debug_print::@15/(signed byte) sz#13 ) - (byte*) print_screen#17 ← phi( debug_print::@15/(byte*) print_screen#30 ) + (byte*) print_screen#18 ← phi( debug_print::@15/(byte*) print_screen#31 ) (signed byte) sy#11 ← phi( debug_print::@15/(signed byte) sy#17 ) (signed byte) debug_print::print_sbyte_pos2_sb#0 ← (signed byte) sy#11 (byte) debug_print::print_sbyte_pos2_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -948,10 +1095,10 @@ debug_print::print_sbyte_pos2: scope:[debug_print] from debug_print::@3 (signed byte) sz#7 ← phi( debug_print::@3/(signed byte) sz#10 ) (signed byte) debug_print::print_sbyte_pos2_sb#1 ← phi( debug_print::@3/(signed byte) debug_print::print_sbyte_pos2_sb#0 ) (byte) debug_print::print_sbyte_pos2_col#1 ← phi( debug_print::@3/(byte) debug_print::print_sbyte_pos2_col#0 ) - (byte*) print_screen#4 ← phi( debug_print::@3/(byte*) print_screen#17 ) + (byte*) print_screen#5 ← phi( debug_print::@3/(byte*) print_screen#18 ) (byte) debug_print::print_sbyte_pos2_row#1 ← phi( debug_print::@3/(byte) debug_print::print_sbyte_pos2_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos2_$0#0 ← (byte) debug_print::print_sbyte_pos2_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos2_$1#0 ← (byte*) print_screen#4 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos2_$0#0 + (byte*) debug_print::print_sbyte_pos2_$1#0 ← (byte*) print_screen#5 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos2_$0#0 (byte*) debug_print::print_sbyte_pos2_$2#0 ← (byte*) debug_print::print_sbyte_pos2_$1#0 + (byte) debug_print::print_sbyte_pos2_col#1 (signed byte) print_sbyte_at::b#5 ← (signed byte) debug_print::print_sbyte_pos2_sb#1 (byte*) print_sbyte_at::at#4 ← (byte*) debug_print::print_sbyte_pos2_$2#0 @@ -959,12 +1106,12 @@ debug_print::print_sbyte_pos2: scope:[debug_print] from debug_print::@3 to:debug_print::@16 debug_print::@16: scope:[debug_print] from debug_print::print_sbyte_pos2 (byte*) SCREEN#51 ← phi( debug_print::print_sbyte_pos2/(byte*) SCREEN#52 ) - (byte*) print_screen#31 ← phi( debug_print::print_sbyte_pos2/(byte*) print_screen#4 ) + (byte*) print_screen#32 ← phi( debug_print::print_sbyte_pos2/(byte*) print_screen#5 ) (signed byte) sz#4 ← phi( debug_print::print_sbyte_pos2/(signed byte) sz#7 ) to:debug_print::@4 debug_print::@4: scope:[debug_print] from debug_print::@16 (byte*) SCREEN#50 ← phi( debug_print::@16/(byte*) SCREEN#51 ) - (byte*) print_screen#18 ← phi( debug_print::@16/(byte*) print_screen#31 ) + (byte*) print_screen#19 ← phi( debug_print::@16/(byte*) print_screen#32 ) (signed byte) sz#2 ← phi( debug_print::@16/(signed byte) sz#4 ) (signed byte) debug_print::print_sbyte_pos3_sb#0 ← (signed byte) sz#2 (byte) debug_print::print_sbyte_pos3_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 @@ -974,10 +1121,10 @@ debug_print::print_sbyte_pos3: scope:[debug_print] from debug_print::@4 (byte*) SCREEN#49 ← phi( debug_print::@4/(byte*) SCREEN#50 ) (signed byte) debug_print::print_sbyte_pos3_sb#1 ← phi( debug_print::@4/(signed byte) debug_print::print_sbyte_pos3_sb#0 ) (byte) debug_print::print_sbyte_pos3_col#1 ← phi( debug_print::@4/(byte) debug_print::print_sbyte_pos3_col#0 ) - (byte*) print_screen#5 ← phi( debug_print::@4/(byte*) print_screen#18 ) + (byte*) print_screen#6 ← phi( debug_print::@4/(byte*) print_screen#19 ) (byte) debug_print::print_sbyte_pos3_row#1 ← phi( debug_print::@4/(byte) debug_print::print_sbyte_pos3_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos3_$0#0 ← (byte) debug_print::print_sbyte_pos3_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos3_$1#0 ← (byte*) print_screen#5 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos3_$0#0 + (byte*) debug_print::print_sbyte_pos3_$1#0 ← (byte*) print_screen#6 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos3_$0#0 (byte*) debug_print::print_sbyte_pos3_$2#0 ← (byte*) debug_print::print_sbyte_pos3_$1#0 + (byte) debug_print::print_sbyte_pos3_col#1 (signed byte) print_sbyte_at::b#6 ← (signed byte) debug_print::print_sbyte_pos3_sb#1 (byte*) print_sbyte_at::at#5 ← (byte*) debug_print::print_sbyte_pos3_$2#0 @@ -985,11 +1132,11 @@ debug_print::print_sbyte_pos3: scope:[debug_print] from debug_print::@4 to:debug_print::@17 debug_print::@17: scope:[debug_print] from debug_print::print_sbyte_pos3 (byte*) SCREEN#48 ← phi( debug_print::print_sbyte_pos3/(byte*) SCREEN#49 ) - (byte*) print_screen#32 ← phi( debug_print::print_sbyte_pos3/(byte*) print_screen#5 ) + (byte*) print_screen#33 ← phi( debug_print::print_sbyte_pos3/(byte*) print_screen#6 ) to:debug_print::@5 debug_print::@5: scope:[debug_print] from debug_print::@17 (byte*) SCREEN#47 ← phi( debug_print::@17/(byte*) SCREEN#48 ) - (byte*) print_screen#19 ← phi( debug_print::@17/(byte*) print_screen#32 ) + (byte*) print_screen#20 ← phi( debug_print::@17/(byte*) print_screen#33 ) (signed byte) debug_print::print_sbyte_pos4_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) (byte) debug_print::print_sbyte_pos4_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) debug_print::print_sbyte_pos4_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 @@ -998,10 +1145,10 @@ debug_print::print_sbyte_pos4: scope:[debug_print] from debug_print::@5 (byte*) SCREEN#46 ← phi( debug_print::@5/(byte*) SCREEN#47 ) (signed byte) debug_print::print_sbyte_pos4_sb#1 ← phi( debug_print::@5/(signed byte) debug_print::print_sbyte_pos4_sb#0 ) (byte) debug_print::print_sbyte_pos4_col#1 ← phi( debug_print::@5/(byte) debug_print::print_sbyte_pos4_col#0 ) - (byte*) print_screen#6 ← phi( debug_print::@5/(byte*) print_screen#19 ) + (byte*) print_screen#7 ← phi( debug_print::@5/(byte*) print_screen#20 ) (byte) debug_print::print_sbyte_pos4_row#1 ← phi( debug_print::@5/(byte) debug_print::print_sbyte_pos4_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos4_$0#0 ← (byte) debug_print::print_sbyte_pos4_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos4_$1#0 ← (byte*) print_screen#6 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos4_$0#0 + (byte*) debug_print::print_sbyte_pos4_$1#0 ← (byte*) print_screen#7 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos4_$0#0 (byte*) debug_print::print_sbyte_pos4_$2#0 ← (byte*) debug_print::print_sbyte_pos4_$1#0 + (byte) debug_print::print_sbyte_pos4_col#1 (signed byte) print_sbyte_at::b#7 ← (signed byte) debug_print::print_sbyte_pos4_sb#1 (byte*) print_sbyte_at::at#6 ← (byte*) debug_print::print_sbyte_pos4_$2#0 @@ -1009,11 +1156,11 @@ debug_print::print_sbyte_pos4: scope:[debug_print] from debug_print::@5 to:debug_print::@18 debug_print::@18: scope:[debug_print] from debug_print::print_sbyte_pos4 (byte*) SCREEN#45 ← phi( debug_print::print_sbyte_pos4/(byte*) SCREEN#46 ) - (byte*) print_screen#33 ← phi( debug_print::print_sbyte_pos4/(byte*) print_screen#6 ) + (byte*) print_screen#34 ← phi( debug_print::print_sbyte_pos4/(byte*) print_screen#7 ) to:debug_print::@6 debug_print::@6: scope:[debug_print] from debug_print::@18 (byte*) SCREEN#44 ← phi( debug_print::@18/(byte*) SCREEN#45 ) - (byte*) print_screen#20 ← phi( debug_print::@18/(byte*) print_screen#33 ) + (byte*) print_screen#21 ← phi( debug_print::@18/(byte*) print_screen#34 ) (signed byte) debug_print::print_sbyte_pos5_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) (byte) debug_print::print_sbyte_pos5_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) debug_print::print_sbyte_pos5_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 @@ -1022,10 +1169,10 @@ debug_print::print_sbyte_pos5: scope:[debug_print] from debug_print::@6 (byte*) SCREEN#43 ← phi( debug_print::@6/(byte*) SCREEN#44 ) (signed byte) debug_print::print_sbyte_pos5_sb#1 ← phi( debug_print::@6/(signed byte) debug_print::print_sbyte_pos5_sb#0 ) (byte) debug_print::print_sbyte_pos5_col#1 ← phi( debug_print::@6/(byte) debug_print::print_sbyte_pos5_col#0 ) - (byte*) print_screen#7 ← phi( debug_print::@6/(byte*) print_screen#20 ) + (byte*) print_screen#8 ← phi( debug_print::@6/(byte*) print_screen#21 ) (byte) debug_print::print_sbyte_pos5_row#1 ← phi( debug_print::@6/(byte) debug_print::print_sbyte_pos5_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos5_$0#0 ← (byte) debug_print::print_sbyte_pos5_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos5_$1#0 ← (byte*) print_screen#7 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos5_$0#0 + (byte*) debug_print::print_sbyte_pos5_$1#0 ← (byte*) print_screen#8 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos5_$0#0 (byte*) debug_print::print_sbyte_pos5_$2#0 ← (byte*) debug_print::print_sbyte_pos5_$1#0 + (byte) debug_print::print_sbyte_pos5_col#1 (signed byte) print_sbyte_at::b#8 ← (signed byte) debug_print::print_sbyte_pos5_sb#1 (byte*) print_sbyte_at::at#7 ← (byte*) debug_print::print_sbyte_pos5_$2#0 @@ -1033,11 +1180,11 @@ debug_print::print_sbyte_pos5: scope:[debug_print] from debug_print::@6 to:debug_print::@19 debug_print::@19: scope:[debug_print] from debug_print::print_sbyte_pos5 (byte*) SCREEN#42 ← phi( debug_print::print_sbyte_pos5/(byte*) SCREEN#43 ) - (byte*) print_screen#34 ← phi( debug_print::print_sbyte_pos5/(byte*) print_screen#7 ) + (byte*) print_screen#35 ← phi( debug_print::print_sbyte_pos5/(byte*) print_screen#8 ) to:debug_print::@7 debug_print::@7: scope:[debug_print] from debug_print::@19 (byte*) SCREEN#41 ← phi( debug_print::@19/(byte*) SCREEN#42 ) - (byte*) print_screen#21 ← phi( debug_print::@19/(byte*) print_screen#34 ) + (byte*) print_screen#22 ← phi( debug_print::@19/(byte*) print_screen#35 ) (signed byte) debug_print::print_sbyte_pos6_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) (byte) debug_print::print_sbyte_pos6_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) debug_print::print_sbyte_pos6_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 @@ -1046,10 +1193,10 @@ debug_print::print_sbyte_pos6: scope:[debug_print] from debug_print::@7 (byte*) SCREEN#40 ← phi( debug_print::@7/(byte*) SCREEN#41 ) (signed byte) debug_print::print_sbyte_pos6_sb#1 ← phi( debug_print::@7/(signed byte) debug_print::print_sbyte_pos6_sb#0 ) (byte) debug_print::print_sbyte_pos6_col#1 ← phi( debug_print::@7/(byte) debug_print::print_sbyte_pos6_col#0 ) - (byte*) print_screen#8 ← phi( debug_print::@7/(byte*) print_screen#21 ) + (byte*) print_screen#9 ← phi( debug_print::@7/(byte*) print_screen#22 ) (byte) debug_print::print_sbyte_pos6_row#1 ← phi( debug_print::@7/(byte) debug_print::print_sbyte_pos6_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos6_$0#0 ← (byte) debug_print::print_sbyte_pos6_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos6_$1#0 ← (byte*) print_screen#8 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos6_$0#0 + (byte*) debug_print::print_sbyte_pos6_$1#0 ← (byte*) print_screen#9 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos6_$0#0 (byte*) debug_print::print_sbyte_pos6_$2#0 ← (byte*) debug_print::print_sbyte_pos6_$1#0 + (byte) debug_print::print_sbyte_pos6_col#1 (signed byte) print_sbyte_at::b#9 ← (signed byte) debug_print::print_sbyte_pos6_sb#1 (byte*) print_sbyte_at::at#8 ← (byte*) debug_print::print_sbyte_pos6_$2#0 @@ -1057,11 +1204,11 @@ debug_print::print_sbyte_pos6: scope:[debug_print] from debug_print::@7 to:debug_print::@20 debug_print::@20: scope:[debug_print] from debug_print::print_sbyte_pos6 (byte*) SCREEN#39 ← phi( debug_print::print_sbyte_pos6/(byte*) SCREEN#40 ) - (byte*) print_screen#35 ← phi( debug_print::print_sbyte_pos6/(byte*) print_screen#8 ) + (byte*) print_screen#36 ← phi( debug_print::print_sbyte_pos6/(byte*) print_screen#9 ) to:debug_print::@8 debug_print::@8: scope:[debug_print] from debug_print::@20 (byte*) SCREEN#38 ← phi( debug_print::@20/(byte*) SCREEN#39 ) - (byte*) print_screen#22 ← phi( debug_print::@20/(byte*) print_screen#35 ) + (byte*) print_screen#23 ← phi( debug_print::@20/(byte*) print_screen#36 ) (signed byte) debug_print::print_sbyte_pos7_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) (byte) debug_print::print_sbyte_pos7_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) debug_print::print_sbyte_pos7_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 @@ -1070,10 +1217,10 @@ debug_print::print_sbyte_pos7: scope:[debug_print] from debug_print::@8 (byte*) SCREEN#37 ← phi( debug_print::@8/(byte*) SCREEN#38 ) (signed byte) debug_print::print_sbyte_pos7_sb#1 ← phi( debug_print::@8/(signed byte) debug_print::print_sbyte_pos7_sb#0 ) (byte) debug_print::print_sbyte_pos7_col#1 ← phi( debug_print::@8/(byte) debug_print::print_sbyte_pos7_col#0 ) - (byte*) print_screen#9 ← phi( debug_print::@8/(byte*) print_screen#22 ) + (byte*) print_screen#10 ← phi( debug_print::@8/(byte*) print_screen#23 ) (byte) debug_print::print_sbyte_pos7_row#1 ← phi( debug_print::@8/(byte) debug_print::print_sbyte_pos7_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos7_$0#0 ← (byte) debug_print::print_sbyte_pos7_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos7_$1#0 ← (byte*) print_screen#9 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos7_$0#0 + (byte*) debug_print::print_sbyte_pos7_$1#0 ← (byte*) print_screen#10 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos7_$0#0 (byte*) debug_print::print_sbyte_pos7_$2#0 ← (byte*) debug_print::print_sbyte_pos7_$1#0 + (byte) debug_print::print_sbyte_pos7_col#1 (signed byte) print_sbyte_at::b#10 ← (signed byte) debug_print::print_sbyte_pos7_sb#1 (byte*) print_sbyte_at::at#9 ← (byte*) debug_print::print_sbyte_pos7_$2#0 @@ -1081,11 +1228,11 @@ debug_print::print_sbyte_pos7: scope:[debug_print] from debug_print::@8 to:debug_print::@21 debug_print::@21: scope:[debug_print] from debug_print::print_sbyte_pos7 (byte*) SCREEN#36 ← phi( debug_print::print_sbyte_pos7/(byte*) SCREEN#37 ) - (byte*) print_screen#36 ← phi( debug_print::print_sbyte_pos7/(byte*) print_screen#9 ) + (byte*) print_screen#37 ← phi( debug_print::print_sbyte_pos7/(byte*) print_screen#10 ) to:debug_print::@9 debug_print::@9: scope:[debug_print] from debug_print::@21 (byte*) SCREEN#35 ← phi( debug_print::@21/(byte*) SCREEN#36 ) - (byte*) print_screen#23 ← phi( debug_print::@21/(byte*) print_screen#36 ) + (byte*) print_screen#24 ← phi( debug_print::@21/(byte*) print_screen#37 ) (signed byte) debug_print::print_sbyte_pos8_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) (byte) debug_print::print_sbyte_pos8_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) debug_print::print_sbyte_pos8_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 @@ -1094,10 +1241,10 @@ debug_print::print_sbyte_pos8: scope:[debug_print] from debug_print::@9 (byte*) SCREEN#34 ← phi( debug_print::@9/(byte*) SCREEN#35 ) (signed byte) debug_print::print_sbyte_pos8_sb#1 ← phi( debug_print::@9/(signed byte) debug_print::print_sbyte_pos8_sb#0 ) (byte) debug_print::print_sbyte_pos8_col#1 ← phi( debug_print::@9/(byte) debug_print::print_sbyte_pos8_col#0 ) - (byte*) print_screen#10 ← phi( debug_print::@9/(byte*) print_screen#23 ) + (byte*) print_screen#11 ← phi( debug_print::@9/(byte*) print_screen#24 ) (byte) debug_print::print_sbyte_pos8_row#1 ← phi( debug_print::@9/(byte) debug_print::print_sbyte_pos8_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos8_$0#0 ← (byte) debug_print::print_sbyte_pos8_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos8_$1#0 ← (byte*) print_screen#10 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos8_$0#0 + (byte*) debug_print::print_sbyte_pos8_$1#0 ← (byte*) print_screen#11 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos8_$0#0 (byte*) debug_print::print_sbyte_pos8_$2#0 ← (byte*) debug_print::print_sbyte_pos8_$1#0 + (byte) debug_print::print_sbyte_pos8_col#1 (signed byte) print_sbyte_at::b#11 ← (signed byte) debug_print::print_sbyte_pos8_sb#1 (byte*) print_sbyte_at::at#10 ← (byte*) debug_print::print_sbyte_pos8_$2#0 @@ -1105,11 +1252,11 @@ debug_print::print_sbyte_pos8: scope:[debug_print] from debug_print::@9 to:debug_print::@22 debug_print::@22: scope:[debug_print] from debug_print::print_sbyte_pos8 (byte*) SCREEN#33 ← phi( debug_print::print_sbyte_pos8/(byte*) SCREEN#34 ) - (byte*) print_screen#37 ← phi( debug_print::print_sbyte_pos8/(byte*) print_screen#10 ) + (byte*) print_screen#38 ← phi( debug_print::print_sbyte_pos8/(byte*) print_screen#11 ) to:debug_print::@10 debug_print::@10: scope:[debug_print] from debug_print::@22 (byte*) SCREEN#32 ← phi( debug_print::@22/(byte*) SCREEN#33 ) - (byte*) print_screen#24 ← phi( debug_print::@22/(byte*) print_screen#37 ) + (byte*) print_screen#25 ← phi( debug_print::@22/(byte*) print_screen#38 ) (signed byte) debug_print::print_sbyte_pos9_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 5) (byte) debug_print::print_sbyte_pos9_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) debug_print::print_sbyte_pos9_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 @@ -1118,10 +1265,10 @@ debug_print::print_sbyte_pos9: scope:[debug_print] from debug_print::@10 (byte*) SCREEN#31 ← phi( debug_print::@10/(byte*) SCREEN#32 ) (signed byte) debug_print::print_sbyte_pos9_sb#1 ← phi( debug_print::@10/(signed byte) debug_print::print_sbyte_pos9_sb#0 ) (byte) debug_print::print_sbyte_pos9_col#1 ← phi( debug_print::@10/(byte) debug_print::print_sbyte_pos9_col#0 ) - (byte*) print_screen#11 ← phi( debug_print::@10/(byte*) print_screen#24 ) + (byte*) print_screen#12 ← phi( debug_print::@10/(byte*) print_screen#25 ) (byte) debug_print::print_sbyte_pos9_row#1 ← phi( debug_print::@10/(byte) debug_print::print_sbyte_pos9_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos9_$0#0 ← (byte) debug_print::print_sbyte_pos9_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos9_$1#0 ← (byte*) print_screen#11 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos9_$0#0 + (byte*) debug_print::print_sbyte_pos9_$1#0 ← (byte*) print_screen#12 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos9_$0#0 (byte*) debug_print::print_sbyte_pos9_$2#0 ← (byte*) debug_print::print_sbyte_pos9_$1#0 + (byte) debug_print::print_sbyte_pos9_col#1 (signed byte) print_sbyte_at::b#12 ← (signed byte) debug_print::print_sbyte_pos9_sb#1 (byte*) print_sbyte_at::at#11 ← (byte*) debug_print::print_sbyte_pos9_$2#0 @@ -1129,11 +1276,11 @@ debug_print::print_sbyte_pos9: scope:[debug_print] from debug_print::@10 to:debug_print::@23 debug_print::@23: scope:[debug_print] from debug_print::print_sbyte_pos9 (byte*) SCREEN#30 ← phi( debug_print::print_sbyte_pos9/(byte*) SCREEN#31 ) - (byte*) print_screen#38 ← phi( debug_print::print_sbyte_pos9/(byte*) print_screen#11 ) + (byte*) print_screen#39 ← phi( debug_print::print_sbyte_pos9/(byte*) print_screen#12 ) to:debug_print::@11 debug_print::@11: scope:[debug_print] from debug_print::@23 (byte*) SCREEN#29 ← phi( debug_print::@23/(byte*) SCREEN#30 ) - (byte*) print_screen#25 ← phi( debug_print::@23/(byte*) print_screen#38 ) + (byte*) print_screen#26 ← phi( debug_print::@23/(byte*) print_screen#39 ) (signed byte) debug_print::print_sbyte_pos10_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) (byte) debug_print::print_sbyte_pos10_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 (byte) debug_print::print_sbyte_pos10_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 @@ -1142,10 +1289,10 @@ debug_print::print_sbyte_pos10: scope:[debug_print] from debug_print::@11 (byte*) SCREEN#28 ← phi( debug_print::@11/(byte*) SCREEN#29 ) (signed byte) debug_print::print_sbyte_pos10_sb#1 ← phi( debug_print::@11/(signed byte) debug_print::print_sbyte_pos10_sb#0 ) (byte) debug_print::print_sbyte_pos10_col#1 ← phi( debug_print::@11/(byte) debug_print::print_sbyte_pos10_col#0 ) - (byte*) print_screen#12 ← phi( debug_print::@11/(byte*) print_screen#25 ) + (byte*) print_screen#13 ← phi( debug_print::@11/(byte*) print_screen#26 ) (byte) debug_print::print_sbyte_pos10_row#1 ← phi( debug_print::@11/(byte) debug_print::print_sbyte_pos10_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos10_$0#0 ← (byte) debug_print::print_sbyte_pos10_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos10_$1#0 ← (byte*) print_screen#12 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos10_$0#0 + (byte*) debug_print::print_sbyte_pos10_$1#0 ← (byte*) print_screen#13 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos10_$0#0 (byte*) debug_print::print_sbyte_pos10_$2#0 ← (byte*) debug_print::print_sbyte_pos10_$1#0 + (byte) debug_print::print_sbyte_pos10_col#1 (signed byte) print_sbyte_at::b#13 ← (signed byte) debug_print::print_sbyte_pos10_sb#1 (byte*) print_sbyte_at::at#12 ← (byte*) debug_print::print_sbyte_pos10_$2#0 @@ -1153,11 +1300,11 @@ debug_print::print_sbyte_pos10: scope:[debug_print] from debug_print::@11 to:debug_print::@24 debug_print::@24: scope:[debug_print] from debug_print::print_sbyte_pos10 (byte*) SCREEN#27 ← phi( debug_print::print_sbyte_pos10/(byte*) SCREEN#28 ) - (byte*) print_screen#39 ← phi( debug_print::print_sbyte_pos10/(byte*) print_screen#12 ) + (byte*) print_screen#40 ← phi( debug_print::print_sbyte_pos10/(byte*) print_screen#13 ) to:debug_print::@12 debug_print::@12: scope:[debug_print] from debug_print::@24 (byte*) SCREEN#25 ← phi( debug_print::@24/(byte*) SCREEN#27 ) - (byte*) print_screen#26 ← phi( debug_print::@24/(byte*) print_screen#39 ) + (byte*) print_screen#27 ← phi( debug_print::@24/(byte*) print_screen#40 ) (signed byte) debug_print::print_sbyte_pos11_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 7) (byte) debug_print::print_sbyte_pos11_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 (byte) debug_print::print_sbyte_pos11_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 @@ -1166,10 +1313,10 @@ debug_print::print_sbyte_pos11: scope:[debug_print] from debug_print::@12 (byte*) SCREEN#23 ← phi( debug_print::@12/(byte*) SCREEN#25 ) (signed byte) debug_print::print_sbyte_pos11_sb#1 ← phi( debug_print::@12/(signed byte) debug_print::print_sbyte_pos11_sb#0 ) (byte) debug_print::print_sbyte_pos11_col#1 ← phi( debug_print::@12/(byte) debug_print::print_sbyte_pos11_col#0 ) - (byte*) print_screen#13 ← phi( debug_print::@12/(byte*) print_screen#26 ) + (byte*) print_screen#14 ← phi( debug_print::@12/(byte*) print_screen#27 ) (byte) debug_print::print_sbyte_pos11_row#1 ← phi( debug_print::@12/(byte) debug_print::print_sbyte_pos11_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos11_$0#0 ← (byte) debug_print::print_sbyte_pos11_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos11_$1#0 ← (byte*) print_screen#13 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos11_$0#0 + (byte*) debug_print::print_sbyte_pos11_$1#0 ← (byte*) print_screen#14 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos11_$0#0 (byte*) debug_print::print_sbyte_pos11_$2#0 ← (byte*) debug_print::print_sbyte_pos11_$1#0 + (byte) debug_print::print_sbyte_pos11_col#1 (signed byte) print_sbyte_at::b#14 ← (signed byte) debug_print::print_sbyte_pos11_sb#1 (byte*) print_sbyte_at::at#13 ← (byte*) debug_print::print_sbyte_pos11_$2#0 @@ -1177,11 +1324,11 @@ debug_print::print_sbyte_pos11: scope:[debug_print] from debug_print::@12 to:debug_print::@25 debug_print::@25: scope:[debug_print] from debug_print::print_sbyte_pos11 (byte*) SCREEN#22 ← phi( debug_print::print_sbyte_pos11/(byte*) SCREEN#23 ) - (byte*) print_screen#40 ← phi( debug_print::print_sbyte_pos11/(byte*) print_screen#13 ) + (byte*) print_screen#41 ← phi( debug_print::print_sbyte_pos11/(byte*) print_screen#14 ) to:debug_print::@13 debug_print::@13: scope:[debug_print] from debug_print::@25 (byte*) SCREEN#20 ← phi( debug_print::@25/(byte*) SCREEN#22 ) - (byte*) print_screen#27 ← phi( debug_print::@25/(byte*) print_screen#40 ) + (byte*) print_screen#28 ← phi( debug_print::@25/(byte*) print_screen#41 ) (signed byte) debug_print::print_sbyte_pos12_sb#0 ← *((signed byte[9]) rotation_matrix#0 + (byte/signed byte/word/signed word/dword/signed dword) 8) (byte) debug_print::print_sbyte_pos12_row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 (byte) debug_print::print_sbyte_pos12_col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 @@ -1190,10 +1337,10 @@ debug_print::print_sbyte_pos12: scope:[debug_print] from debug_print::@13 (byte*) SCREEN#18 ← phi( debug_print::@13/(byte*) SCREEN#20 ) (signed byte) debug_print::print_sbyte_pos12_sb#1 ← phi( debug_print::@13/(signed byte) debug_print::print_sbyte_pos12_sb#0 ) (byte) debug_print::print_sbyte_pos12_col#1 ← phi( debug_print::@13/(byte) debug_print::print_sbyte_pos12_col#0 ) - (byte*) print_screen#14 ← phi( debug_print::@13/(byte*) print_screen#27 ) + (byte*) print_screen#15 ← phi( debug_print::@13/(byte*) print_screen#28 ) (byte) debug_print::print_sbyte_pos12_row#1 ← phi( debug_print::@13/(byte) debug_print::print_sbyte_pos12_row#0 ) (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos12_$0#0 ← (byte) debug_print::print_sbyte_pos12_row#1 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*) debug_print::print_sbyte_pos12_$1#0 ← (byte*) print_screen#14 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos12_$0#0 + (byte*) debug_print::print_sbyte_pos12_$1#0 ← (byte*) print_screen#15 + (byte/signed word/word/dword/signed dword) debug_print::print_sbyte_pos12_$0#0 (byte*) debug_print::print_sbyte_pos12_$2#0 ← (byte*) debug_print::print_sbyte_pos12_$1#0 + (byte) debug_print::print_sbyte_pos12_col#1 (signed byte) print_sbyte_at::b#15 ← (signed byte) debug_print::print_sbyte_pos12_sb#1 (byte*) print_sbyte_at::at#14 ← (byte*) debug_print::print_sbyte_pos12_$2#0 @@ -1311,22 +1458,24 @@ sprites_init::@1: scope:[sprites_init] from sprites_init sprites_init::@1 sprites_init::@return: scope:[sprites_init] from sprites_init::@1 return to:@return -@27: scope:[] from @23 - (signed byte*) yp#21 ← phi( @23/(signed byte*) yp#22 ) - (signed byte*) xp#21 ← phi( @23/(signed byte*) xp#22 ) - (signed byte*) pp#21 ← phi( @23/(signed byte*) pp#22 ) - (signed byte*) zr#22 ← phi( @23/(signed byte*) zr#23 ) - (signed byte*) yr#22 ← phi( @23/(signed byte*) yr#23 ) - (signed byte*) xr#22 ← phi( @23/(signed byte*) xr#23 ) - (signed byte) sz#28 ← phi( @23/(signed byte) sz#0 ) - (byte*) SCREEN#24 ← phi( @23/(byte*) SCREEN#26 ) - (byte*) print_screen#46 ← phi( @23/(byte*) print_screen#48 ) - (word*) psp2#4 ← phi( @23/(word*) psp2#5 ) - (word*) psp1#4 ← phi( @23/(word*) psp1#5 ) - (signed byte) sy#25 ← phi( @23/(signed byte) sy#2 ) - (signed byte) sx#23 ← phi( @23/(signed byte) sx#2 ) +@28: scope:[] from @24 + (signed byte*) yp#21 ← phi( @24/(signed byte*) yp#22 ) + (signed byte*) xp#21 ← phi( @24/(signed byte*) xp#22 ) + (signed byte*) pp#21 ← phi( @24/(signed byte*) pp#22 ) + (signed byte*) zr#22 ← phi( @24/(signed byte*) zr#23 ) + (signed byte*) yr#22 ← phi( @24/(signed byte*) yr#23 ) + (signed byte*) xr#22 ← phi( @24/(signed byte*) xr#23 ) + (signed byte) sz#28 ← phi( @24/(signed byte) sz#0 ) + (byte*) SCREEN#24 ← phi( @24/(byte*) SCREEN#26 ) + (byte*) print_screen#47 ← phi( @24/(byte*) print_screen#49 ) + (word*) psp2#4 ← phi( @24/(word*) psp2#5 ) + (word*) psp1#4 ← phi( @24/(word*) psp1#5 ) + (signed byte) sy#25 ← phi( @24/(signed byte) sy#2 ) + (signed byte) sx#23 ← phi( @24/(signed byte) sx#2 ) + (byte*) print_char_cursor#21 ← phi( @24/(byte*) print_char_cursor#23 ) + (byte*) print_line_cursor#21 ← phi( @24/(byte*) print_line_cursor#23 ) (signed byte[9]) rotation_matrix#0 ← { fill( 9, 0) } - to:@32 + to:@33 calculate_matrix: scope:[calculate_matrix] from anim::@12 (signed byte*) SINQ#1 ← phi( anim::@12/(signed byte*) SINQ#2 ) (signed byte*) COSQ#1 ← phi( anim::@12/(signed byte*) COSQ#2 ) @@ -1414,20 +1563,22 @@ rotate_matrix: scope:[rotate_matrix] from anim::@13 rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix return to:@return -@32: scope:[] from @27 - (signed byte*) yp#20 ← phi( @27/(signed byte*) yp#21 ) - (signed byte*) xp#20 ← phi( @27/(signed byte*) xp#21 ) - (signed byte*) pp#20 ← phi( @27/(signed byte*) pp#21 ) - (signed byte*) zr#21 ← phi( @27/(signed byte*) zr#22 ) - (signed byte*) yr#21 ← phi( @27/(signed byte*) yr#22 ) - (signed byte*) xr#21 ← phi( @27/(signed byte*) xr#22 ) - (signed byte) sz#25 ← phi( @27/(signed byte) sz#28 ) - (byte*) SCREEN#21 ← phi( @27/(byte*) SCREEN#24 ) - (byte*) print_screen#43 ← phi( @27/(byte*) print_screen#46 ) - (word*) psp2#3 ← phi( @27/(word*) psp2#4 ) - (word*) psp1#3 ← phi( @27/(word*) psp1#4 ) - (signed byte) sy#18 ← phi( @27/(signed byte) sy#25 ) - (signed byte) sx#17 ← phi( @27/(signed byte) sx#23 ) +@33: scope:[] from @28 + (signed byte*) yp#20 ← phi( @28/(signed byte*) yp#21 ) + (signed byte*) xp#20 ← phi( @28/(signed byte*) xp#21 ) + (signed byte*) pp#20 ← phi( @28/(signed byte*) pp#21 ) + (signed byte*) zr#21 ← phi( @28/(signed byte*) zr#22 ) + (signed byte*) yr#21 ← phi( @28/(signed byte*) yr#22 ) + (signed byte*) xr#21 ← phi( @28/(signed byte*) xr#22 ) + (signed byte) sz#25 ← phi( @28/(signed byte) sz#28 ) + (byte*) SCREEN#21 ← phi( @28/(byte*) SCREEN#24 ) + (byte*) print_screen#44 ← phi( @28/(byte*) print_screen#47 ) + (word*) psp2#3 ← phi( @28/(word*) psp2#4 ) + (word*) psp1#3 ← phi( @28/(word*) psp1#4 ) + (signed byte) sy#18 ← phi( @28/(signed byte) sy#25 ) + (signed byte) sx#17 ← phi( @28/(signed byte) sx#23 ) + (byte*) print_char_cursor#18 ← phi( @28/(byte*) print_char_cursor#21 ) + (byte*) print_line_cursor#18 ← phi( @28/(byte*) print_line_cursor#21 ) (byte*) mulf_sqr1#0 ← ((byte*)) (word/signed word/dword/signed dword) 9216 (byte*) mulf_sqr2#0 ← ((byte*)) (word/signed word/dword/signed dword) 9728 kickasm(location (byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { @@ -1489,9 +1640,17 @@ rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix } }} (byte*) SINH_LO#0 ← ((byte*)) (word/signed word/dword/signed dword) 16384 + (byte*~) $8 ← (byte*) SINH_LO#0 + (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte*) COSH_LO#0 ← (byte*~) $8 (byte*) SINH_HI#0 ← ((byte*)) (word/signed word/dword/signed dword) 16896 + (byte*~) $9 ← (byte*) SINH_HI#0 + (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte*) COSH_HI#0 ← (byte*~) $9 (byte*) SINQ_LO#0 ← ((byte*)) (word/signed word/dword/signed dword) 17408 + (byte*~) $10 ← (byte*) SINQ_LO#0 + (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte*) COSQ_LO#0 ← (byte*~) $10 (byte*) SINQ_HI#0 ← ((byte*)) (word/signed word/dword/signed dword) 17920 + (byte*~) $11 ← (byte*) SINQ_HI#0 + (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte*) COSQ_HI#0 ← (byte*~) $11 kickasm(location (byte*) SINH_LO#0) {{ { .var min = -$2000 .var max = $2000 @@ -1533,18 +1692,24 @@ rotate_matrix::@return: scope:[rotate_matrix] from rotate_matrix } }} call main - to:@33 -@33: scope:[] from @32 - (signed byte) sy#12 ← phi( @32/(signed byte) sy#1 ) - (signed byte) sx#12 ← phi( @32/(signed byte) sx#1 ) + to:@34 +@34: scope:[] from @33 + (signed byte) sy#12 ← phi( @33/(signed byte) sy#1 ) + (signed byte) sx#12 ← phi( @33/(signed byte) sx#1 ) + (byte*) print_char_cursor#13 ← phi( @33/(byte*) print_char_cursor#4 ) + (byte*) print_line_cursor#13 ← phi( @33/(byte*) print_line_cursor#4 ) + (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#13 + (byte*) print_char_cursor#7 ← (byte*) print_char_cursor#13 (signed byte) sx#5 ← (signed byte) sx#12 (signed byte) sy#5 ← (signed byte) sy#12 to:@end -@end: scope:[] from @33 +@end: scope:[] from @34 SYMBOL TABLE SSA (signed byte/signed word/signed dword~) $0 (signed byte/signed word/signed dword~) $1 +(byte*~) $10 +(byte*~) $11 (const string) $12 = (string) "0123456789abcdef" (signed byte/signed word/signed dword~) $2 (signed byte/signed word/signed dword~) $3 @@ -1552,17 +1717,61 @@ SYMBOL TABLE SSA (signed byte/signed word/signed dword~) $5 (signed byte*~) $6 (signed byte*~) $7 -(label) @15 -(label) @22 +(byte*~) $8 +(byte*~) $9 +(label) @16 (label) @23 -(label) @27 -(label) @3 -(label) @32 +(label) @24 +(label) @28 (label) @33 +(label) @34 +(label) @4 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 (signed byte*) COSH (signed byte*) COSH#0 (signed byte*) COSH#1 @@ -1585,6 +1794,10 @@ SYMBOL TABLE SSA (signed byte*) COSH#7 (signed byte*) COSH#8 (signed byte*) COSH#9 +(byte*) COSH_HI +(byte*) COSH_HI#0 +(byte*) COSH_LO +(byte*) COSH_LO#0 (signed byte*) COSQ (signed byte*) COSQ#0 (signed byte*) COSQ#1 @@ -1607,16 +1820,78 @@ SYMBOL TABLE SSA (signed byte*) COSQ#7 (signed byte*) COSQ#8 (signed byte*) COSQ#9 +(byte*) COSQ_HI +(byte*) COSQ_HI#0 +(byte*) COSQ_LO +(byte*) COSQ_LO#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) GREEN (byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 (byte) LIGHT_BLUE (byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 (byte) LIGHT_GREY (byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 (signed byte*) PERSP_Z (signed byte*) PERSP_Z#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -1753,10 +2028,50 @@ SYMBOL TABLE SSA (byte*) SPRITES_COLS#0 (byte*) SPRITES_ENABLE (byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 (byte*) SPRITES_XPOS (byte*) SPRITES_XPOS#0 (byte*) SPRITES_YPOS (byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) anim() (bool~) anim::$0 (bool~) anim::$1 @@ -2355,10 +2670,53 @@ SYMBOL TABLE SSA (byte) print_char_at::ch#2 (byte) print_char_at::ch#3 (byte) print_char_at::ch#4 +(byte*) print_char_cursor +(byte*) print_char_cursor#0 +(byte*) print_char_cursor#1 +(byte*) print_char_cursor#10 +(byte*) print_char_cursor#11 +(byte*) print_char_cursor#12 +(byte*) print_char_cursor#13 +(byte*) print_char_cursor#14 +(byte*) print_char_cursor#15 +(byte*) print_char_cursor#16 +(byte*) print_char_cursor#17 +(byte*) print_char_cursor#18 +(byte*) print_char_cursor#19 +(byte*) print_char_cursor#2 +(byte*) print_char_cursor#20 +(byte*) print_char_cursor#21 +(byte*) print_char_cursor#22 +(byte*) print_char_cursor#23 +(byte*) print_char_cursor#24 +(byte*) print_char_cursor#25 +(byte*) print_char_cursor#26 +(byte*) print_char_cursor#27 +(byte*) print_char_cursor#28 +(byte*) print_char_cursor#29 +(byte*) print_char_cursor#3 +(byte*) print_char_cursor#30 +(byte*) print_char_cursor#31 +(byte*) print_char_cursor#32 +(byte*) print_char_cursor#33 +(byte*) print_char_cursor#34 +(byte*) print_char_cursor#35 +(byte*) print_char_cursor#36 +(byte*) print_char_cursor#37 +(byte*) print_char_cursor#38 +(byte*) print_char_cursor#39 +(byte*) print_char_cursor#4 +(byte*) print_char_cursor#40 +(byte*) print_char_cursor#5 +(byte*) print_char_cursor#6 +(byte*) print_char_cursor#7 +(byte*) print_char_cursor#8 +(byte*) print_char_cursor#9 (void()) print_cls() (byte*~) print_cls::$0 (bool~) print_cls::$1 (label) print_cls::@1 +(label) print_cls::@2 (label) print_cls::@return (byte*) print_cls::sc (byte*) print_cls::sc#0 @@ -2366,6 +2724,48 @@ SYMBOL TABLE SSA (byte*) print_cls::sc#2 (byte[]) print_hextab (byte[]) print_hextab#0 +(byte*) print_line_cursor +(byte*) print_line_cursor#0 +(byte*) print_line_cursor#1 +(byte*) print_line_cursor#10 +(byte*) print_line_cursor#11 +(byte*) print_line_cursor#12 +(byte*) print_line_cursor#13 +(byte*) print_line_cursor#14 +(byte*) print_line_cursor#15 +(byte*) print_line_cursor#16 +(byte*) print_line_cursor#17 +(byte*) print_line_cursor#18 +(byte*) print_line_cursor#19 +(byte*) print_line_cursor#2 +(byte*) print_line_cursor#20 +(byte*) print_line_cursor#21 +(byte*) print_line_cursor#22 +(byte*) print_line_cursor#23 +(byte*) print_line_cursor#24 +(byte*) print_line_cursor#25 +(byte*) print_line_cursor#26 +(byte*) print_line_cursor#27 +(byte*) print_line_cursor#28 +(byte*) print_line_cursor#29 +(byte*) print_line_cursor#3 +(byte*) print_line_cursor#30 +(byte*) print_line_cursor#31 +(byte*) print_line_cursor#32 +(byte*) print_line_cursor#33 +(byte*) print_line_cursor#34 +(byte*) print_line_cursor#35 +(byte*) print_line_cursor#36 +(byte*) print_line_cursor#37 +(byte*) print_line_cursor#38 +(byte*) print_line_cursor#39 +(byte*) print_line_cursor#4 +(byte*) print_line_cursor#40 +(byte*) print_line_cursor#5 +(byte*) print_line_cursor#6 +(byte*) print_line_cursor#7 +(byte*) print_line_cursor#8 +(byte*) print_line_cursor#9 (void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at) (bool~) print_sbyte_at::$0 (signed byte~) print_sbyte_at::$3 @@ -2496,6 +2896,7 @@ SYMBOL TABLE SSA (byte*) print_screen#60 (byte*) print_screen#61 (byte*) print_screen#62 +(byte*) print_screen#63 (byte*) print_screen#7 (byte*) print_screen#8 (byte*) print_screen#9 @@ -2825,6 +3226,7 @@ SYMBOL TABLE SSA Culled Empty Block (label) print_sbyte_at::@7 Culled Empty Block (label) print_byte_at::@2 Successful SSA optimization Pass2CullEmptyBlocks +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#26 (byte*) print_char_cursor#26 (byte*) print_screen#52 (byte*) print_line_cursor#24 (byte*) print_char_cursor#24 (byte*) print_screen#50 (byte*) print_line_cursor#23 (byte*) print_char_cursor#23 (byte*) print_screen#49 (byte*) print_line_cursor#21 (byte*) print_char_cursor#21 (byte*) print_screen#47 (byte*) print_line_cursor#18 (byte*) print_char_cursor#18 (byte*) print_screen#44 Alias (byte*) print_str_at::str#13 = (byte*) print_str_at::str#14 Alias (byte*) print_str_at::at#13 = (byte*) print_str_at::at#14 Alias (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#24 (byte*) print_sbyte_at::at#25 (byte*) print_sbyte_at::at#22 (byte*) print_sbyte_at::at#26 @@ -2832,17 +3234,19 @@ Alias (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#25 (s Alias (signed byte) print_sbyte_at::b#0 = (signed byte~) print_sbyte_at::$3 Alias (byte) print_byte_at::b#0 = (byte~) print_sbyte_at::$4 Alias (byte*) print_byte_at::at#0 = (byte*~) print_sbyte_at::$5 -Alias (byte*) print_screen#0 = (byte*) print_screen#51 (byte*) print_screen#49 (byte*) print_screen#48 (byte*) print_screen#46 (byte*) print_screen#43 Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2 Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2 Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3 +Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#8 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2 Alias (byte*) mulf_sqr1#1 = (byte*) mulf_sqr1#2 Alias (word*) psp1#1 = (word*) psp1#2 Alias (byte*) mulf_sqr2#1 = (byte*) mulf_sqr2#2 Alias (word*) psp2#1 = (word*) psp2#2 +Alias (byte*) print_line_cursor#14 = (byte*) print_line_cursor#19 +Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#19 Alias (signed byte) sx#13 = (signed byte) sx#18 (signed byte) sx#24 Alias (signed byte) sy#13 = (signed byte) sy#19 (signed byte) sy#26 -Alias (byte*) print_screen#28 = (byte*) print_screen#41 (byte*) print_screen#62 +Alias (byte*) print_screen#29 = (byte*) print_screen#42 (byte*) print_screen#63 Alias (byte*) SCREEN#17 = (byte*) SCREEN#19 (byte*) SCREEN#73 Alias (signed byte) sz#19 = (signed byte) sz#21 (signed byte) sz#23 Alias (signed byte*) COSH#13 = (signed byte*) COSH#15 (signed byte*) COSH#17 @@ -2855,6 +3259,8 @@ Alias (signed byte*) zr#17 = (signed byte*) zr#19 (signed byte*) zr#20 Alias (signed byte*) pp#16 = (signed byte*) pp#18 (signed byte*) pp#19 Alias (signed byte*) xp#16 = (signed byte*) xp#18 (signed byte*) xp#19 Alias (signed byte*) yp#16 = (signed byte*) yp#18 (signed byte*) yp#19 +Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#9 (byte*) print_line_cursor#15 (byte*) print_line_cursor#4 +Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#3 (byte*) print_char_cursor#9 (byte*) print_char_cursor#15 (byte*) print_char_cursor#4 Alias (signed byte) sx#0 = (signed byte) sx#6 (signed byte) sx#7 (signed byte) sx#1 Alias (signed byte) sy#0 = (signed byte) sy#6 (signed byte) sy#7 (signed byte) sy#1 Alias (word*) psp1#0 = (word*) psp1#5 (word*) psp1#4 (word*) psp1#3 @@ -2879,7 +3285,7 @@ Alias (signed byte*) zr#12 = (signed byte*) zr#14 Alias (signed byte*) pp#11 = (signed byte*) pp#13 Alias (signed byte*) xp#11 = (signed byte*) xp#13 Alias (signed byte*) yp#11 = (signed byte*) yp#13 -Alias (byte*) print_screen#57 = (byte*) print_screen#59 +Alias (byte*) print_screen#58 = (byte*) print_screen#60 Alias (byte*) SCREEN#68 = (byte*) SCREEN#70 Alias (signed byte) sx#25 = (signed byte) sx#29 Alias (signed byte) sy#27 = (signed byte) sy#32 @@ -2894,7 +3300,7 @@ Alias (signed byte*) zr#10 = (signed byte*) zr#13 Alias (signed byte*) pp#12 = (signed byte*) pp#9 Alias (signed byte*) xp#12 = (signed byte*) xp#9 Alias (signed byte*) yp#12 = (signed byte*) yp#9 -Alias (byte*) print_screen#55 = (byte*) print_screen#58 +Alias (byte*) print_screen#56 = (byte*) print_screen#59 Alias (byte*) SCREEN#66 = (byte*) SCREEN#69 Alias (signed byte) sx#21 = (signed byte) sx#26 Alias (signed byte) sy#22 = (signed byte) sy#28 @@ -2909,7 +3315,7 @@ Alias (signed byte*) zr#11 = (signed byte*) zr#9 Alias (signed byte*) pp#10 = (signed byte*) pp#8 Alias (signed byte*) xp#10 = (signed byte*) xp#8 Alias (signed byte*) yp#10 = (signed byte*) yp#8 -Alias (byte*) print_screen#54 = (byte*) print_screen#56 +Alias (byte*) print_screen#55 = (byte*) print_screen#57 Alias (byte*) SCREEN#65 = (byte*) SCREEN#67 Alias (signed byte) sx#14 = (signed byte) sx#20 (signed byte) sx#8 (signed byte) sx#31 (signed byte) sx#30 Alias (signed byte) sy#14 = (signed byte) sy#21 (signed byte) sy#8 (signed byte) sy#34 (signed byte) sy#33 @@ -2924,7 +3330,7 @@ Alias (signed byte*) zr#4 = (signed byte*) zr#8 (signed byte*) zr#7 (signed byte Alias (signed byte*) pp#3 = (signed byte*) pp#7 (signed byte*) pp#6 (signed byte*) pp#5 (signed byte*) pp#4 Alias (signed byte*) xp#3 = (signed byte*) xp#7 (signed byte*) xp#6 (signed byte*) xp#5 (signed byte*) xp#4 Alias (signed byte*) yp#3 = (signed byte*) yp#7 (signed byte*) yp#6 (signed byte*) yp#5 (signed byte*) yp#4 -Alias (byte*) print_screen#45 = (byte*) print_screen#53 (byte*) print_screen#52 (byte*) print_screen#50 (byte*) print_screen#47 +Alias (byte*) print_screen#46 = (byte*) print_screen#54 (byte*) print_screen#53 (byte*) print_screen#51 (byte*) print_screen#48 Alias (byte*) SCREEN#60 = (byte*) SCREEN#64 (byte*) SCREEN#63 (byte*) SCREEN#62 (byte*) SCREEN#61 Alias (signed byte*) xr#1 = (signed byte*) xr#3 (signed byte*) xr#18 (signed byte*) xr#16 Alias (byte) anim::i#2 = (byte) anim::i#3 @@ -2935,7 +3341,7 @@ Alias (signed byte*) xp#1 = (signed byte*) xp#2 (signed byte*) xp#17 (signed byt Alias (signed byte*) yp#1 = (signed byte*) yp#2 (signed byte*) yp#17 (signed byte*) yp#15 Alias (signed byte) sx#15 = (signed byte) sx#22 (signed byte) sx#27 (signed byte) sx#9 Alias (signed byte) sy#15 = (signed byte) sy#23 (signed byte) sy#29 (signed byte) sy#9 -Alias (byte*) print_screen#29 = (byte*) print_screen#42 (byte*) print_screen#44 (byte*) print_screen#61 +Alias (byte*) print_screen#30 = (byte*) print_screen#43 (byte*) print_screen#45 (byte*) print_screen#62 Alias (signed byte) sz#17 = (signed byte) sz#22 (signed byte) sz#24 (signed byte) sz#20 Alias (signed byte*) COSH#12 = (signed byte*) COSH#16 (signed byte*) COSH#18 (signed byte*) COSH#14 Alias (signed byte*) SINH#12 = (signed byte*) SINH#16 (signed byte*) SINH#18 (signed byte*) SINH#14 @@ -2944,6 +3350,8 @@ Alias (signed byte*) SINQ#12 = (signed byte*) SINQ#16 (signed byte*) SINQ#18 (si Alias (byte*) SCREEN#57 = (byte*) SCREEN#58 (byte*) SCREEN#59 (byte*) SCREEN#72 Alias (byte) anim::i2#0 = (byte~) anim::$6 Alias (byte*) SCREEN#1 = (byte*) SCREEN#15 (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*) SCREEN#4 (byte*) SCREEN#5 (byte*) SCREEN#6 (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 (byte*) SCREEN#10 (byte*) SCREEN#11 (byte*) SCREEN#12 (byte*) SCREEN#13 +Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#40 (byte*) print_line_cursor#39 (byte*) print_line_cursor#38 (byte*) print_line_cursor#37 (byte*) print_line_cursor#36 (byte*) print_line_cursor#35 (byte*) print_line_cursor#34 (byte*) print_line_cursor#33 (byte*) print_line_cursor#32 (byte*) print_line_cursor#31 (byte*) print_line_cursor#30 (byte*) print_line_cursor#29 +Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#5 (byte*) print_char_cursor#40 (byte*) print_char_cursor#39 (byte*) print_char_cursor#38 (byte*) print_char_cursor#37 (byte*) print_char_cursor#36 (byte*) print_char_cursor#35 (byte*) print_char_cursor#34 (byte*) print_char_cursor#33 (byte*) print_char_cursor#32 (byte*) print_char_cursor#31 (byte*) print_char_cursor#30 (byte*) print_char_cursor#29 Alias (byte*) print_str_at::at#1 = (byte*~) debug_print_init::$3 Alias (byte*) print_str_at::at#2 = (byte*~) debug_print_init::$7 Alias (byte*) print_str_at::at#3 = (byte*~) debug_print_init::$11 @@ -2963,15 +3371,19 @@ Alias (byte*) debug_print_init::at_line#1 = (byte*) debug_print_init::at_line#2 Alias (byte) debug_print_init::c#2 = (byte) debug_print_init::c#3 (byte) debug_print_init::c#4 (byte) debug_print_init::c#7 Alias (byte) debug_print_init::i#2 = (byte) debug_print_init::i#3 (byte) debug_print_init::i#4 (byte) debug_print_init::i#7 Alias (byte*) debug_print_init::at_cols#2 = (byte*) debug_print_init::at_cols#4 (byte*) debug_print_init::at_cols#5 (byte*) debug_print_init::at_cols#3 +Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#28 (byte*) print_line_cursor#25 +Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#27 (byte*) print_char_cursor#28 (byte*) print_char_cursor#25 Alias (byte*) print_sbyte_at::at#1 = (byte*~) debug_print_init::$50 Alias (byte*) print_sbyte_at::at#2 = (byte*~) debug_print_init::$54 Alias (byte) debug_print_init::col#0 = (byte/signed word/word/dword/signed dword~) debug_print_init::$56 Alias (byte) debug_print_init::c#5 = (byte) debug_print_init::c#6 Alias (byte) debug_print_init::i#5 = (byte) debug_print_init::i#6 Alias (byte*) debug_print_init::at_line#4 = (byte*) debug_print_init::at_line#5 +Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#20 (byte*) print_line_cursor#6 +Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#17 (byte*) print_char_cursor#20 (byte*) print_char_cursor#6 Alias (byte*) debug_print_init::at_cols#1 = (byte*) debug_print_init::at_cols#6 Alias (byte) debug_print::print_sbyte_pos1_row#0 = (byte) debug_print::print_sbyte_pos1_row#1 -Alias (byte*) print_screen#10 = (byte*) print_screen#3 (byte*) print_screen#16 (byte*) print_screen#30 (byte*) print_screen#17 (byte*) print_screen#4 (byte*) print_screen#31 (byte*) print_screen#18 (byte*) print_screen#5 (byte*) print_screen#32 (byte*) print_screen#19 (byte*) print_screen#6 (byte*) print_screen#33 (byte*) print_screen#20 (byte*) print_screen#7 (byte*) print_screen#34 (byte*) print_screen#21 (byte*) print_screen#8 (byte*) print_screen#35 (byte*) print_screen#22 (byte*) print_screen#9 (byte*) print_screen#36 (byte*) print_screen#23 (byte*) print_screen#37 (byte*) print_screen#24 (byte*) print_screen#11 (byte*) print_screen#38 (byte*) print_screen#25 (byte*) print_screen#12 (byte*) print_screen#39 (byte*) print_screen#26 (byte*) print_screen#13 (byte*) print_screen#40 (byte*) print_screen#27 (byte*) print_screen#14 +Alias (byte*) print_screen#10 = (byte*) print_screen#4 (byte*) print_screen#17 (byte*) print_screen#31 (byte*) print_screen#18 (byte*) print_screen#5 (byte*) print_screen#32 (byte*) print_screen#19 (byte*) print_screen#6 (byte*) print_screen#33 (byte*) print_screen#20 (byte*) print_screen#7 (byte*) print_screen#34 (byte*) print_screen#21 (byte*) print_screen#8 (byte*) print_screen#35 (byte*) print_screen#22 (byte*) print_screen#9 (byte*) print_screen#36 (byte*) print_screen#23 (byte*) print_screen#37 (byte*) print_screen#24 (byte*) print_screen#11 (byte*) print_screen#38 (byte*) print_screen#25 (byte*) print_screen#12 (byte*) print_screen#39 (byte*) print_screen#26 (byte*) print_screen#13 (byte*) print_screen#40 (byte*) print_screen#27 (byte*) print_screen#14 (byte*) print_screen#41 (byte*) print_screen#28 (byte*) print_screen#15 Alias (byte) debug_print::print_sbyte_pos1_col#0 = (byte) debug_print::print_sbyte_pos1_col#1 Alias (signed byte) debug_print::print_sbyte_pos1_sb#0 = (signed byte) debug_print::print_sbyte_pos1_sb#1 Alias (signed byte) sy#11 = (signed byte) sy#24 (signed byte) sy#30 (signed byte) sy#17 @@ -3048,12 +3460,18 @@ Alias (signed byte) calculate_matrix::t9#0 = (signed byte~) calculate_matrix::$8 Alias (signed byte) calculate_matrix::t10#0 = (signed byte~) calculate_matrix::$9 Alias (signed byte*) COSH#0 = (signed byte*~) $6 Alias (signed byte*) COSQ#0 = (signed byte*~) $7 +Alias (byte*) COSH_LO#0 = (byte*~) $8 +Alias (byte*) COSH_HI#0 = (byte*~) $9 +Alias (byte*) COSQ_LO#0 = (byte*~) $10 +Alias (byte*) COSQ_HI#0 = (byte*~) $11 +Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7 +Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#7 Alias (signed byte) sx#12 = (signed byte) sx#5 Alias (signed byte) sy#12 = (signed byte) sy#5 Successful SSA optimization Pass2AliasElimination Alias (byte*) print_sbyte_at::at#21 = (byte*) print_sbyte_at::at#23 Successful SSA optimization Pass2AliasElimination -Self Phi Eliminated (byte*) print_screen#2 +Self Phi Eliminated (byte*) print_line_cursor#1 Self Phi Eliminated (signed byte) sx#25 Self Phi Eliminated (signed byte) sy#27 Self Phi Eliminated (signed byte) sz#12 @@ -3067,7 +3485,7 @@ Self Phi Eliminated (signed byte*) zr#10 Self Phi Eliminated (signed byte*) pp#12 Self Phi Eliminated (signed byte*) xp#12 Self Phi Eliminated (signed byte*) yp#12 -Self Phi Eliminated (byte*) print_screen#55 +Self Phi Eliminated (byte*) print_screen#56 Self Phi Eliminated (byte*) SCREEN#66 Self Phi Eliminated (signed byte) sx#21 Self Phi Eliminated (signed byte) sy#22 @@ -3082,7 +3500,7 @@ Self Phi Eliminated (signed byte*) zr#11 Self Phi Eliminated (signed byte*) pp#10 Self Phi Eliminated (signed byte*) xp#10 Self Phi Eliminated (signed byte*) yp#10 -Self Phi Eliminated (byte*) print_screen#54 +Self Phi Eliminated (byte*) print_screen#55 Self Phi Eliminated (byte*) SCREEN#65 Self Phi Eliminated (signed byte) sx#14 Self Phi Eliminated (signed byte) sy#14 @@ -3097,7 +3515,7 @@ Self Phi Eliminated (signed byte*) zr#4 Self Phi Eliminated (signed byte*) pp#3 Self Phi Eliminated (signed byte*) xp#3 Self Phi Eliminated (signed byte*) yp#3 -Self Phi Eliminated (byte*) print_screen#45 +Self Phi Eliminated (byte*) print_screen#46 Self Phi Eliminated (byte*) SCREEN#60 Self Phi Eliminated (signed byte*) xr#1 Self Phi Eliminated (signed byte*) yr#1 @@ -3107,7 +3525,7 @@ Self Phi Eliminated (signed byte*) xp#1 Self Phi Eliminated (signed byte*) yp#1 Self Phi Eliminated (signed byte) sx#15 Self Phi Eliminated (signed byte) sy#15 -Self Phi Eliminated (byte*) print_screen#29 +Self Phi Eliminated (byte*) print_screen#30 Self Phi Eliminated (signed byte) sz#17 Self Phi Eliminated (signed byte*) COSH#12 Self Phi Eliminated (signed byte*) SINH#12 @@ -3118,22 +3536,26 @@ Self Phi Eliminated (byte) debug_print_init::i#5 Self Phi Eliminated (byte*) debug_print_init::at_cols#1 Self Phi Eliminated (byte) debug_print_init::c#5 Self Phi Eliminated (byte*) debug_print_init::at_line#4 +Self Phi Eliminated (byte*) print_line_cursor#12 +Self Phi Eliminated (byte*) print_char_cursor#12 Self Phi Eliminated (byte*) debug_print::at_line#1 Self Phi Eliminated (byte*) SPRITE#1 Self Phi Eliminated (byte*) sprites_init::sprites_ptr#1 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) print_byte_at::b#1 (byte) print_byte_at::b#0 Redundant Phi (byte*) print_byte_at::at#1 (byte*) print_byte_at::at#0 -Redundant Phi (byte*) print_screen#1 (byte*) print_screen#15 -Redundant Phi (byte*) print_screen#2 (byte*) print_screen#1 +Redundant Phi (byte*) print_screen#1 (byte*) print_screen#16 +Redundant Phi (byte*) print_line_cursor#1 (byte*) print_screen#1 Redundant Phi (byte*) mulf_sqr1#1 (byte*) mulf_sqr1#0 Redundant Phi (word*) psp1#1 (word*) psp1#0 Redundant Phi (byte*) mulf_sqr2#1 (byte*) mulf_sqr2#0 Redundant Phi (word*) psp2#1 (word*) psp2#0 +Redundant Phi (byte*) print_line_cursor#14 (byte*) print_line_cursor#0 +Redundant Phi (byte*) print_char_cursor#14 (byte*) print_line_cursor#0 Redundant Phi (byte*) SPRITE#3 (byte*) SPRITE#0 Redundant Phi (signed byte) sx#13 (signed byte) sx#17 Redundant Phi (signed byte) sy#13 (signed byte) sy#18 -Redundant Phi (byte*) print_screen#28 (byte*) print_screen#0 +Redundant Phi (byte*) print_screen#29 (byte*) print_line_cursor#0 Redundant Phi (byte*) SCREEN#17 (byte*) SCREEN#0 Redundant Phi (signed byte) sz#19 (signed byte) sz#0 Redundant Phi (signed byte*) COSH#13 (signed byte*) COSH#0 @@ -3146,6 +3568,8 @@ Redundant Phi (signed byte*) zr#17 (signed byte*) zr#0 Redundant Phi (signed byte*) pp#16 (signed byte*) pp#0 Redundant Phi (signed byte*) xp#16 (signed byte*) xp#0 Redundant Phi (signed byte*) yp#16 (signed byte*) yp#0 +Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#12 +Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#12 Redundant Phi (signed byte) sx#0 (signed byte) sx#10 Redundant Phi (signed byte) sy#0 (signed byte) sy#10 Redundant Phi (signed byte) sx#19 (signed byte) sx#13 @@ -3161,7 +3585,7 @@ Redundant Phi (signed byte*) zr#15 (signed byte*) zr#17 Redundant Phi (signed byte*) pp#14 (signed byte*) pp#16 Redundant Phi (signed byte*) xp#14 (signed byte*) xp#16 Redundant Phi (signed byte*) yp#14 (signed byte*) yp#16 -Redundant Phi (byte*) print_screen#60 (byte*) print_screen#28 +Redundant Phi (byte*) print_screen#61 (byte*) print_screen#29 Redundant Phi (byte*) SCREEN#71 (byte*) SCREEN#17 Redundant Phi (signed byte) sx#25 (signed byte) sx#10 Redundant Phi (signed byte) sy#27 (signed byte) sy#10 @@ -3176,7 +3600,7 @@ Redundant Phi (signed byte*) zr#10 (signed byte*) zr#12 Redundant Phi (signed byte*) pp#12 (signed byte*) pp#11 Redundant Phi (signed byte*) xp#12 (signed byte*) xp#11 Redundant Phi (signed byte*) yp#12 (signed byte*) yp#11 -Redundant Phi (byte*) print_screen#55 (byte*) print_screen#57 +Redundant Phi (byte*) print_screen#56 (byte*) print_screen#58 Redundant Phi (byte*) SCREEN#66 (byte*) SCREEN#68 Redundant Phi (signed byte) sx#21 (signed byte) sx#25 Redundant Phi (signed byte) sy#22 (signed byte) sy#27 @@ -3191,7 +3615,7 @@ Redundant Phi (signed byte*) zr#11 (signed byte*) zr#10 Redundant Phi (signed byte*) pp#10 (signed byte*) pp#12 Redundant Phi (signed byte*) xp#10 (signed byte*) xp#12 Redundant Phi (signed byte*) yp#10 (signed byte*) yp#12 -Redundant Phi (byte*) print_screen#54 (byte*) print_screen#55 +Redundant Phi (byte*) print_screen#55 (byte*) print_screen#56 Redundant Phi (byte*) SCREEN#65 (byte*) SCREEN#66 Redundant Phi (signed byte) sx#14 (signed byte) sx#21 Redundant Phi (signed byte) sy#14 (signed byte) sy#22 @@ -3206,7 +3630,7 @@ Redundant Phi (signed byte*) zr#4 (signed byte*) zr#11 Redundant Phi (signed byte*) pp#3 (signed byte*) pp#10 Redundant Phi (signed byte*) xp#3 (signed byte*) xp#10 Redundant Phi (signed byte*) yp#3 (signed byte*) yp#10 -Redundant Phi (byte*) print_screen#45 (byte*) print_screen#54 +Redundant Phi (byte*) print_screen#46 (byte*) print_screen#55 Redundant Phi (byte*) SCREEN#60 (byte*) SCREEN#65 Redundant Phi (signed byte*) xr#1 (signed byte*) xr#4 Redundant Phi (signed byte*) yr#1 (signed byte*) yr#4 @@ -3216,21 +3640,27 @@ Redundant Phi (signed byte*) xp#1 (signed byte*) xp#3 Redundant Phi (signed byte*) yp#1 (signed byte*) yp#3 Redundant Phi (signed byte) sx#15 (signed byte) sx#14 Redundant Phi (signed byte) sy#15 (signed byte) sy#14 -Redundant Phi (byte*) print_screen#29 (byte*) print_screen#45 +Redundant Phi (byte*) print_screen#30 (byte*) print_screen#46 Redundant Phi (signed byte) sz#17 (signed byte) sz#1 Redundant Phi (signed byte*) COSH#12 (signed byte*) COSH#19 Redundant Phi (signed byte*) SINH#12 (signed byte*) SINH#19 Redundant Phi (signed byte*) COSQ#12 (signed byte*) COSQ#19 Redundant Phi (signed byte*) SINQ#12 (signed byte*) SINQ#19 Redundant Phi (byte*) SCREEN#57 (byte*) SCREEN#60 -Redundant Phi (byte*) print_screen#15 (byte*) print_screen#28 +Redundant Phi (byte*) print_screen#16 (byte*) print_screen#29 +Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#14 +Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#14 Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#17 +Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#1 +Redundant Phi (byte*) print_char_cursor#11 (byte*) print_line_cursor#1 Redundant Phi (byte) debug_print_init::i#5 (byte) debug_print_init::i#2 Redundant Phi (byte*) debug_print_init::at_cols#1 (byte*) debug_print_init::at_cols#2 Redundant Phi (byte) debug_print_init::c#5 (byte) debug_print_init::c#2 Redundant Phi (byte*) debug_print_init::at_line#4 (byte*) debug_print_init::at_line#1 +Redundant Phi (byte*) print_line_cursor#12 (byte*) print_line_cursor#22 +Redundant Phi (byte*) print_char_cursor#12 (byte*) print_char_cursor#22 Redundant Phi (signed byte) sx#11 (signed byte) sx#15 -Redundant Phi (byte*) print_screen#10 (byte*) print_screen#29 +Redundant Phi (byte*) print_screen#10 (byte*) print_screen#30 Redundant Phi (signed byte) sy#11 (signed byte) sy#15 Redundant Phi (signed byte) sz#10 (signed byte) sz#17 Redundant Phi (byte*) SCREEN#14 (byte*) SCREEN#57 @@ -3251,6 +3681,8 @@ Redundant Phi (signed byte) rotate_matrix::y#1 (signed byte) rotate_matrix::y#0 Redundant Phi (signed byte*) yr#2 (signed byte*) yr#1 Redundant Phi (signed byte) rotate_matrix::z#1 (signed byte) rotate_matrix::z#0 Redundant Phi (signed byte*) zr#2 (signed byte*) zr#1 +Redundant Phi (byte*) print_line_cursor#13 (byte*) print_line_cursor#10 +Redundant Phi (byte*) print_char_cursor#13 (byte*) print_char_cursor#10 Redundant Phi (signed byte) sx#12 (signed byte) sx#0 Redundant Phi (signed byte) sy#12 (signed byte) sy#0 Successful SSA optimization Pass2RedundantPhiElimination @@ -3266,16 +3698,86 @@ Simple Condition (bool~) debug_print_init::$94 if((byte) debug_print_init::i#1!= Simple Condition (bool~) debug_print::$38 if((byte) debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 Simple Condition (bool~) sprites_init::$3 if((byte) sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 Constant (const byte) LIGHT_BLUE#0 = 14 Constant (const byte) LIGHT_GREY#0 = 15 -Constant (const byte*) print_screen#0 = ((byte*))1024 +Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char_at::ch#0 = '-' Constant (const byte) print_char_at::ch#1 = ' ' Constant (const byte[]) print_hextab#0 = $12 @@ -3394,8 +3896,8 @@ Constant (const byte*) SINH_HI#0 = ((byte*))16896 Constant (const byte*) SINQ_LO#0 = ((byte*))17408 Constant (const byte*) SINQ_HI#0 = ((byte*))17920 Successful SSA optimization Pass2ConstantIdentification -Constant (const byte*) print_cls::sc#0 = print_screen#0 -Constant (const byte*) print_cls::$0 = print_screen#0+1000 +Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 +Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 Constant (const word) main::$1 = ((word))mulf_sqr1#0 Constant (const word) main::$2 = ((word))mulf_sqr2#0 Constant (const signed byte[8]) xs#0 = { $0, $1, $2, 0, 0, 52, 52, 52 } @@ -3430,6 +3932,10 @@ Constant (const byte*) sprites_init::sprites_ptr#0 = sprites_init::SCREEN#0+1016 Constant (const byte*) sprites_init::$1 = SPRITE#0/64 Constant (const signed byte*) COSH#0 = SINH#0+64 Constant (const signed byte*) COSQ#0 = SINQ#0+64 +Constant (const byte*) COSH_LO#0 = SINH_LO#0+64 +Constant (const byte*) COSH_HI#0 = SINH_HI#0+64 +Constant (const byte*) COSQ_LO#0 = SINQ_LO#0+64 +Constant (const byte*) COSQ_HI#0 = SINQ_HI#0+64 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_str_at::at#1 = debug_print_init::$2+34 Constant (const byte*) print_str_at::at#2 = debug_print_init::$6+34 @@ -3469,6 +3975,7 @@ Consolidated array index constant in *(rotation_matrix#0+8) Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto anim::@2 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte) print_byte_at::b#0 ← ((byte)) (signed byte) print_sbyte_at::b#24 Eliminating Noop Cast (byte~) anim::$7 ← ((byte)) *((signed byte*) xp#11) Eliminating Noop Cast (byte~) anim::$9 ← ((byte)) *((signed byte*) yp#11) @@ -3485,12 +3992,13 @@ Resolved ranged next value debug_print::i#1 ← ++ debug_print::i#2 to ++ Resolved ranged comparison value if(debug_print::i#1!=rangelast(0,7)) goto debug_print::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value sprites_init::i#1 ← ++ sprites_init::i#2 to ++ Resolved ranged comparison value if(sprites_init::i#1!=rangelast(0,7)) goto sprites_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8 -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) print_sbyte_at::@6 -Culled Empty Block (label) @15 -Culled Empty Block (label) @22 -Culled Empty Block (label) main::@3 +Culled Empty Block (label) @16 +Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) @23 +Culled Empty Block (label) main::@3 +Culled Empty Block (label) @24 Culled Empty Block (label) anim::@2 Culled Empty Block (label) anim::@5 Culled Empty Block (label) anim::@8 @@ -3510,8 +4018,8 @@ Culled Empty Block (label) debug_print::@23 Culled Empty Block (label) debug_print::@24 Culled Empty Block (label) debug_print::@25 Culled Empty Block (label) debug_print::@26 -Culled Empty Block (label) @27 -Culled Empty Block (label) @33 +Culled Empty Block (label) @28 +Culled Empty Block (label) @34 Successful SSA optimization Pass2CullEmptyBlocks Self Phi Eliminated (signed byte) sz#11 Self Phi Eliminated (signed byte*) COSH#10 @@ -3524,7 +4032,7 @@ Self Phi Eliminated (signed byte*) zr#12 Self Phi Eliminated (signed byte*) pp#11 Self Phi Eliminated (signed byte*) xp#11 Self Phi Eliminated (signed byte*) yp#11 -Self Phi Eliminated (byte*) print_screen#57 +Self Phi Eliminated (byte*) print_screen#58 Self Phi Eliminated (byte*) SCREEN#68 Self Phi Eliminated (byte*) debug_print_init::at_line#1 Self Phi Eliminated (byte*) debug_print_init::at_cols#2 @@ -3540,7 +4048,7 @@ Redundant Phi (signed byte*) zr#12 (const signed byte*) zr#0 Redundant Phi (signed byte*) pp#11 (const signed byte*) pp#0 Redundant Phi (signed byte*) xp#11 (const signed byte*) xp#0 Redundant Phi (signed byte*) yp#11 (const signed byte*) yp#0 -Redundant Phi (byte*) print_screen#57 (const byte*) print_screen#0 +Redundant Phi (byte*) print_screen#58 (const byte*) print_line_cursor#0 Redundant Phi (byte*) SCREEN#68 (const byte*) SCREEN#0 Redundant Phi (byte*) debug_print_init::at_line#1 (const byte*) debug_print_init::at_line#0 Redundant Phi (byte*) debug_print_init::at_cols#2 (const byte*) debug_print_init::at_cols#0 @@ -3558,19 +4066,19 @@ Constant (const byte*) debug_print_init::$78 = debug_print_init::at_cols#0+debug Constant (const byte*) debug_print_init::$82 = debug_print_init::at_cols#0+debug_print_init::$81 Constant (const byte*) debug_print_init::$86 = debug_print_init::at_cols#0+debug_print_init::$85 Constant (const byte*) debug_print_init::$90 = debug_print_init::at_cols#0+debug_print_init::$89 -Constant (const byte*) debug_print::print_sbyte_pos1_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos2_$1#0 = print_screen#0 +Constant (const byte*) debug_print::print_sbyte_pos1_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos2_$1#0 = print_line_cursor#0 Constant (const signed byte) debug_print::print_sbyte_pos3_sb#0 = sz#0 -Constant (const byte*) debug_print::print_sbyte_pos3_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos4_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos5_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos6_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos7_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos8_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos9_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos10_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos11_$1#0 = print_screen#0 -Constant (const byte*) debug_print::print_sbyte_pos12_$1#0 = print_screen#0 +Constant (const byte*) debug_print::print_sbyte_pos3_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos4_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos5_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos6_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos7_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos8_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos9_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos10_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos11_$1#0 = print_line_cursor#0 +Constant (const byte*) debug_print::print_sbyte_pos12_$1#0 = print_line_cursor#0 Constant (const byte*) debug_print::at_line#0 = SCREEN#0+debug_print::$12 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_sbyte_at::at#3 = debug_print::print_sbyte_pos1_$1#0+debug_print::print_sbyte_pos1_$0#0+debug_print::print_sbyte_pos1_col#0 @@ -3649,9 +4157,9 @@ Inlining constant with var siblings (const byte) sprites_init::i#0 Inlining constant with var siblings (const signed byte) sx#17 Inlining constant with var siblings (const signed byte) sy#18 Constant inlined debug_print::print_sbyte_pos7_$0#0 = (const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined debug_print::print_sbyte_pos11_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos11_$1#0 = (const byte*) print_line_cursor#0 Constant inlined print_str_at::str#12 = (const string) debug_print_init::str11 -Constant inlined debug_print::print_sbyte_pos5_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos5_$1#0 = (const byte*) print_line_cursor#0 Constant inlined print_str_at::str#11 = (const string) debug_print_init::str10 Constant inlined print_str_at::str#10 = (const string) debug_print_init::str9 Constant inlined debug_print_init::$37 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 24 @@ -3661,24 +4169,24 @@ Constant inlined debug_print_init::$31 = (byte/signed byte/word/signed word/dwor Constant inlined debug_print::$18 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined debug_print::$19 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined debug_print::$14 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined debug_print::print_sbyte_pos6_$1#0 = (const byte*) print_screen#0 -Constant inlined debug_print::print_sbyte_pos3_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos6_$1#0 = (const byte*) print_line_cursor#0 +Constant inlined debug_print::print_sbyte_pos3_$1#0 = (const byte*) print_line_cursor#0 Constant inlined debug_print::$15 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined debug_print::$12 = (byte/signed byte/word/signed word/dword/signed dword) 19*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined sprites_init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined debug_print_init::$28 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 21 Constant inlined debug_print_init::$25 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 20 Constant inlined debug_print_init::$22 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 19 -Constant inlined debug_print::print_sbyte_pos12_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos12_$1#0 = (const byte*) print_line_cursor#0 Constant inlined debug_print_init::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined calculate_matrix::sz#0 = (const signed byte) sz#0 Constant inlined print_str_at::str#1 = (const string) debug_print_init::str Constant inlined print_str_at::str#2 = (const string) debug_print_init::str1 -Constant inlined debug_print::print_sbyte_pos7_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos7_$1#0 = (const byte*) print_line_cursor#0 Constant inlined print_str_at::str#3 = (const string) debug_print_init::str2 Constant inlined print_str_at::str#4 = (const string) debug_print_init::str3 -Constant inlined print_cls::$0 = (const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000 -Constant inlined debug_print::print_sbyte_pos1_$1#0 = (const byte*) print_screen#0 +Constant inlined print_cls::$0 = (const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000 +Constant inlined debug_print::print_sbyte_pos1_$1#0 = (const byte*) print_line_cursor#0 Constant inlined $12 = (const byte[]) print_hextab#0 Constant inlined debug_print::print_sbyte_pos3_sb#0 = (const signed byte) sz#0 Constant inlined print_str_at::at#11 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 23 @@ -3698,20 +4206,20 @@ Constant inlined print_str_at::str#6 = (const string) debug_print_init::str5 Constant inlined print_str_at::str#7 = (const string) debug_print_init::str6 Constant inlined print_str_at::str#8 = (const string) debug_print_init::str7 Constant inlined debug_print::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 4 -Constant inlined print_sbyte_at::at#13 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 -Constant inlined print_sbyte_at::at#12 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 -Constant inlined print_sbyte_at::at#14 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 +Constant inlined print_sbyte_at::at#13 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 +Constant inlined print_sbyte_at::at#12 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 +Constant inlined print_sbyte_at::at#14 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 Constant inlined debug_print::print_sbyte_pos3_$0#0 = (const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined print_sbyte_at::at#11 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 -Constant inlined print_sbyte_at::at#10 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 -Constant inlined print_cls::sc#0 = (const byte*) print_screen#0 -Constant inlined print_sbyte_at::at#6 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 -Constant inlined print_sbyte_at::at#5 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 -Constant inlined print_sbyte_at::at#4 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 -Constant inlined print_sbyte_at::at#3 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 -Constant inlined print_sbyte_at::at#9 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 -Constant inlined print_sbyte_at::at#8 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 -Constant inlined print_sbyte_at::at#7 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 +Constant inlined print_sbyte_at::at#11 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 +Constant inlined print_sbyte_at::at#10 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 +Constant inlined print_cls::sc#0 = (const byte*) print_line_cursor#0 +Constant inlined print_sbyte_at::at#6 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 +Constant inlined print_sbyte_at::at#5 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 +Constant inlined print_sbyte_at::at#4 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 +Constant inlined print_sbyte_at::at#3 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 +Constant inlined print_sbyte_at::at#9 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 +Constant inlined print_sbyte_at::at#8 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 +Constant inlined print_sbyte_at::at#7 = (const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 Constant inlined main::$1 = ((word))(const byte*) mulf_sqr1#0 Constant inlined debug_print_init::$49 = (const byte*) debug_print_init::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined main::$2 = ((word))(const byte*) mulf_sqr2#0 @@ -3721,7 +4229,7 @@ Constant inlined debug_print_init::i#0 = (byte/signed byte/word/signed word/dwor Constant inlined debug_print_init::$44 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined debug_print_init::$42 = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined debug_print_init::$40 = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined debug_print::print_sbyte_pos4_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos4_$1#0 = (const byte*) print_line_cursor#0 Constant inlined debug_print_init::$70 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 Constant inlined print_str_at::at#4 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 Constant inlined print_str_at::at#3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 34 @@ -3746,11 +4254,11 @@ Constant inlined $5 = -(byte/signed byte/word/signed word/dword/signed dword) 52 Constant inlined debug_print::print_sbyte_pos2_$0#0 = (const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined debug_print_init::$78 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 Constant inlined debug_print_init::$77 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 -Constant inlined debug_print::print_sbyte_pos9_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos9_$1#0 = (const byte*) print_line_cursor#0 Constant inlined debug_print_init::$74 = (const byte*) debug_print_init::at_cols#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined debug_print_init::$73 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined debug_print::print_sbyte_pos10_$0#0 = (const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined debug_print::print_sbyte_pos8_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos8_$1#0 = (const byte*) print_line_cursor#0 Constant inlined print_sbyte_at::b#6 = (const signed byte) sz#0 Constant inlined debug_print_init::$1 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined debug_print_init::$5 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 @@ -3769,13 +4277,13 @@ Constant inlined debug_print::$26 = (byte/signed byte/word/signed word/dword/sig Constant inlined debug_print::$23 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined debug_print::$22 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined debug_print_init::$19 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 18 -Constant inlined debug_print::print_sbyte_pos2_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos2_$1#0 = (const byte*) print_line_cursor#0 Constant inlined debug_print::print_sbyte_pos5_$0#0 = (const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined debug_print_init::$16 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 17 Constant inlined debug_print_init::$13 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 16 Constant inlined debug_print_init::$10 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined debug_print_init::$81 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 6 -Constant inlined debug_print::print_sbyte_pos10_$1#0 = (const byte*) print_screen#0 +Constant inlined debug_print::print_sbyte_pos10_$1#0 = (const byte*) print_line_cursor#0 Constant inlined sy#18 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined debug_print::$34 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 Constant inlined debug_print::$35 = (const byte*) debug_print::at_line#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 @@ -3918,8 +4426,8 @@ Adding NOP phi() at start of print_cls FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@32 -@32: scope:[] from @begin + to:@33 +@33: scope:[] from @begin kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } @@ -4012,9 +4520,9 @@ FINAL CONTROL FLOW GRAPH }} [11] call main to:@end -@end: scope:[] from @32 +@end: scope:[] from @33 [12] phi() -main: scope:[main] from @32 +main: scope:[main] from @33 asm { sei } [14] call sprites_init to:main::@1 @@ -4210,7 +4718,7 @@ debug_print::@return: scope:[debug_print] from debug_print::@32 [113] return to:@return print_sbyte_at: scope:[print_sbyte_at] from debug_print::@1 debug_print::@27 debug_print::@28 debug_print::@29 debug_print::@30 debug_print::@31 debug_print::print_sbyte_pos1 debug_print::print_sbyte_pos10 debug_print::print_sbyte_pos11 debug_print::print_sbyte_pos12 debug_print::print_sbyte_pos2 debug_print::print_sbyte_pos3 debug_print::print_sbyte_pos4 debug_print::print_sbyte_pos5 debug_print::print_sbyte_pos6 debug_print::print_sbyte_pos7 debug_print::print_sbyte_pos8 debug_print::print_sbyte_pos9 debug_print_init::@1 debug_print_init::@18 debug_print_init::@19 - [114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 ) + [114] (byte*) print_sbyte_at::at#21 ← phi( debug_print::@1/(byte*) print_sbyte_at::at#15 debug_print::@27/(byte*) print_sbyte_at::at#16 debug_print::@28/(byte*) print_sbyte_at::at#17 debug_print::@29/(byte*) print_sbyte_at::at#18 debug_print::@30/(byte*) print_sbyte_at::at#19 debug_print::@31/(byte*) print_sbyte_at::at#20 debug_print::print_sbyte_pos1/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 debug_print::print_sbyte_pos10/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 debug_print::print_sbyte_pos11/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 debug_print::print_sbyte_pos12/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 debug_print::print_sbyte_pos2/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 debug_print::print_sbyte_pos3/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 debug_print::print_sbyte_pos4/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 debug_print::print_sbyte_pos5/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 debug_print::print_sbyte_pos6/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 debug_print::print_sbyte_pos7/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 debug_print::print_sbyte_pos8/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 debug_print::print_sbyte_pos9/(const byte*) print_line_cursor#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 debug_print_init::@1/(byte*) print_sbyte_at::at#0 debug_print_init::@18/(byte*) print_sbyte_at::at#1 debug_print_init::@19/(byte*) print_sbyte_at::at#2 ) [114] (signed byte) print_sbyte_at::b#22 ← phi( debug_print::@1/(signed byte) print_sbyte_at::b#16 debug_print::@27/(signed byte) print_sbyte_at::b#17 debug_print::@28/(signed byte) print_sbyte_at::b#18 debug_print::@29/(signed byte) print_sbyte_at::b#19 debug_print::@30/(signed byte) print_sbyte_at::b#20 debug_print::@31/(signed byte) print_sbyte_at::b#21 debug_print::print_sbyte_pos1/(signed byte) print_sbyte_at::b#4 debug_print::print_sbyte_pos10/(signed byte) print_sbyte_at::b#13 debug_print::print_sbyte_pos11/(signed byte) print_sbyte_at::b#14 debug_print::print_sbyte_pos12/(signed byte) print_sbyte_at::b#15 debug_print::print_sbyte_pos2/(signed byte) print_sbyte_at::b#5 debug_print::print_sbyte_pos3/(const signed byte) sz#0 debug_print::print_sbyte_pos4/(signed byte) print_sbyte_at::b#7 debug_print::print_sbyte_pos5/(signed byte) print_sbyte_at::b#8 debug_print::print_sbyte_pos6/(signed byte) print_sbyte_at::b#9 debug_print::print_sbyte_pos7/(signed byte) print_sbyte_at::b#10 debug_print::print_sbyte_pos8/(signed byte) print_sbyte_at::b#11 debug_print::print_sbyte_pos9/(signed byte) print_sbyte_at::b#12 debug_print_init::@1/(signed byte) print_sbyte_at::b#1 debug_print_init::@18/(signed byte) print_sbyte_at::b#2 debug_print_init::@19/(signed byte) print_sbyte_at::b#3 ) [115] if((signed byte) print_sbyte_at::b#22<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte_at::@1 to:print_sbyte_at::@3 @@ -4451,10 +4959,10 @@ print_cls: scope:[print_cls] from debug_print_init [267] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_screen#0 print_cls::@1/(byte*) print_cls::sc#1 ) + [268] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 ) [269] *((byte*) print_cls::sc#2) ← (byte) ' ' [270] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [271] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 [272] return @@ -4481,14 +4989,68 @@ null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 bl null depth in calling loop Loop head: debug_print::@1 tails: debug_print::@32 blocks: debug_print::@32 debug_print::@31 debug_print::@30 debug_print::@29 debug_print::@28 debug_print::@27 debug_print::@1 in scope print_sbyte_at VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS (signed byte*) COSH +(byte*) COSH_HI +(byte*) COSH_LO (signed byte*) COSQ +(byte*) COSQ_HI +(byte*) COSQ_LO +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y (byte) LIGHT_BLUE +(byte) LIGHT_GREEN (byte) LIGHT_GREY +(byte) ORANGE (signed byte*) PERSP_Z +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN (signed byte*) SINH (byte*) SINH_HI @@ -4499,8 +5061,28 @@ VARIABLE REGISTER WEIGHTS (byte*) SPRITE (byte*) SPRITES_COLS (byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB (byte*) SPRITES_XPOS (byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) anim() (byte/word/signed word/dword/signed dword~) anim::$10 202.0 (byte/word/signed word/dword/signed dword~) anim::$8 202.0 @@ -4706,11 +5288,13 @@ VARIABLE REGISTER WEIGHTS (byte) print_char_at::ch#2 2.0 (byte) print_char_at::ch#3 4.0 (byte) print_char_at::ch#4 6.0 +(byte*) print_char_cursor (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 (byte*) print_cls::sc#2 16.5 (byte[]) print_hextab +(byte*) print_line_cursor (void()) print_sbyte_at((signed byte) print_sbyte_at::b , (byte*) print_sbyte_at::at) (byte*) print_sbyte_at::at (byte*) print_sbyte_at::at#0 11.0 @@ -5089,7 +5673,7 @@ INITIAL ASM .const GREEN = 5 .const LIGHT_BLUE = $e .const LIGHT_GREY = $f - .label print_screen = $400 + .label print_line_cursor = $400 .label xr = $f0 .label yr = $f1 .label zr = $f2 @@ -5116,9 +5700,9 @@ INITIAL ASM .label sy = 3 //SEG2 @begin bbegin: - jmp b32 -//SEG3 @32 -b32: + jmp b33 +//SEG3 @33 +b33: //SEG4 kickasm(location (const byte*) mulf_sqr1#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((i*i)/256) } .if(i>159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} //SEG5 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} //SEG6 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} @@ -5131,8 +5715,8 @@ b32: //SEG13 kickasm(location (const byte*) SINQ_HI#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} //SEG14 [11] call main jsr main -//SEG15 [12] phi from @32 to @end [phi:@32->@end] -bend_from_b32: +//SEG15 [12] phi from @33 to @end [phi:@33->@end] +bend_from_b33: jmp bend //SEG16 @end bend: @@ -5395,10 +5979,10 @@ debug_print: { //SEG88 [58] call print_sbyte_at //SEG89 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos1: - //SEG90 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos1_row*$28+print_sbyte_pos1_col + lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col sta print_sbyte_at.at+1 //SEG91 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5417,10 +6001,10 @@ debug_print: { //SEG96 [61] call print_sbyte_at //SEG97 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos2: - //SEG98 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col + lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col sta print_sbyte_at.at+1 //SEG99 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5432,10 +6016,10 @@ debug_print: { //SEG102 [63] call print_sbyte_at //SEG103 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos3: - //SEG104 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col + lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta print_sbyte_at.at+1 //SEG105 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsz1=vbsc1 lda #sz @@ -5456,10 +6040,10 @@ debug_print: { //SEG110 [66] call print_sbyte_at //SEG111 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos4: - //SEG112 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col + lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta print_sbyte_at.at+1 //SEG113 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5478,10 +6062,10 @@ debug_print: { //SEG118 [69] call print_sbyte_at //SEG119 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos5: - //SEG120 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col + lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta print_sbyte_at.at+1 //SEG121 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5500,10 +6084,10 @@ debug_print: { //SEG126 [72] call print_sbyte_at //SEG127 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos6: - //SEG128 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col + lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta print_sbyte_at.at+1 //SEG129 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5522,10 +6106,10 @@ debug_print: { //SEG134 [75] call print_sbyte_at //SEG135 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos7: - //SEG136 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col + lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta print_sbyte_at.at+1 //SEG137 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5544,10 +6128,10 @@ debug_print: { //SEG142 [78] call print_sbyte_at //SEG143 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos8: - //SEG144 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col + lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta print_sbyte_at.at+1 //SEG145 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5566,10 +6150,10 @@ debug_print: { //SEG150 [81] call print_sbyte_at //SEG151 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos9: - //SEG152 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col + lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta print_sbyte_at.at+1 //SEG153 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5588,10 +6172,10 @@ debug_print: { //SEG158 [84] call print_sbyte_at //SEG159 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos10: - //SEG160 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col + lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta print_sbyte_at.at+1 //SEG161 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5610,10 +6194,10 @@ debug_print: { //SEG166 [87] call print_sbyte_at //SEG167 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos11: - //SEG168 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col + lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta print_sbyte_at.at+1 //SEG169 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -5632,10 +6216,10 @@ debug_print: { //SEG174 [90] call print_sbyte_at //SEG175 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos12: - //SEG176 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col + lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col sta print_sbyte_at.at+1 //SEG177 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -6985,10 +7569,10 @@ print_cls: { .label sc = $14 //SEG491 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG492 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 - lda #print_cls::@1#0] -- pbuz1=pbuc1 + lda #print_screen + lda #>print_line_cursor sta sc+1 jmp b1 //SEG493 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] @@ -7006,12 +7590,12 @@ print_cls: { bne !+ inc sc+1 !: - //SEG498 [271] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG498 [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1_from_b1 lda sc - cmp #159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} //SEG5 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} //SEG6 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} @@ -7875,8 +8459,8 @@ b32: //SEG13 kickasm(location (const byte*) SINQ_HI#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} //SEG14 [11] call main jsr main -//SEG15 [12] phi from @32 to @end [phi:@32->@end] -bend_from_b32: +//SEG15 [12] phi from @33 to @end [phi:@33->@end] +bend_from_b33: jmp bend //SEG16 @end bend: @@ -8114,10 +8698,10 @@ debug_print: { //SEG88 [58] call print_sbyte_at //SEG89 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos1: - //SEG90 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos1_row*$28+print_sbyte_pos1_col + lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col sta print_sbyte_at.at+1 //SEG91 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8134,10 +8718,10 @@ debug_print: { //SEG96 [61] call print_sbyte_at //SEG97 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos2: - //SEG98 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col + lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col sta print_sbyte_at.at+1 //SEG99 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8149,10 +8733,10 @@ debug_print: { //SEG102 [63] call print_sbyte_at //SEG103 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos3: - //SEG104 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col + lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta print_sbyte_at.at+1 //SEG105 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 ldx #sz @@ -8170,10 +8754,10 @@ debug_print: { //SEG110 [66] call print_sbyte_at //SEG111 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos4: - //SEG112 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col + lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta print_sbyte_at.at+1 //SEG113 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8190,10 +8774,10 @@ debug_print: { //SEG118 [69] call print_sbyte_at //SEG119 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos5: - //SEG120 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col + lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta print_sbyte_at.at+1 //SEG121 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8210,10 +8794,10 @@ debug_print: { //SEG126 [72] call print_sbyte_at //SEG127 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos6: - //SEG128 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col + lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta print_sbyte_at.at+1 //SEG129 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8230,10 +8814,10 @@ debug_print: { //SEG134 [75] call print_sbyte_at //SEG135 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos7: - //SEG136 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col + lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta print_sbyte_at.at+1 //SEG137 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8250,10 +8834,10 @@ debug_print: { //SEG142 [78] call print_sbyte_at //SEG143 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos8: - //SEG144 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col + lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta print_sbyte_at.at+1 //SEG145 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8270,10 +8854,10 @@ debug_print: { //SEG150 [81] call print_sbyte_at //SEG151 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos9: - //SEG152 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col + lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta print_sbyte_at.at+1 //SEG153 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8290,10 +8874,10 @@ debug_print: { //SEG158 [84] call print_sbyte_at //SEG159 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos10: - //SEG160 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col + lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta print_sbyte_at.at+1 //SEG161 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8310,10 +8894,10 @@ debug_print: { //SEG166 [87] call print_sbyte_at //SEG167 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos11: - //SEG168 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col + lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta print_sbyte_at.at+1 //SEG169 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -8330,10 +8914,10 @@ debug_print: { //SEG174 [90] call print_sbyte_at //SEG175 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] print_sbyte_at_from_print_sbyte_pos12: - //SEG176 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col + lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col sta print_sbyte_at.at+1 //SEG177 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -9580,10 +10164,10 @@ print_cls: { .label sc = 6 //SEG491 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG492 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 - lda #print_cls::@1#0] -- pbuz1=pbuc1 + lda #print_screen + lda #>print_line_cursor sta sc+1 jmp b1 //SEG493 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] @@ -9601,12 +10185,12 @@ print_cls: { bne !+ inc sc+1 !: - //SEG498 [271] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG498 [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1_from_b1 lda sc - cmp #159 && i<=351 ) { .byte round(((i-256)*(i-256))/256) } .if(i>351) { .byte round(((512-i)*(512-i))/256) } } }} //SEG5 kickasm(location (const byte*) mulf_sqr2#0) {{ .for(var i=0;i<$200;i++) { .if(i<=159) { .byte round((-i-1)*(-i-1)/256) } .if(i>159 && i<=351 ) { .byte round(((255-i)*(255-i))/256) } .if(i>351) { .byte round(((i-511)*(i-511))/256) } } }} //SEG6 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} @@ -10638,7 +11298,7 @@ Score: 85532 //SEG13 kickasm(location (const byte*) SINQ_HI#0) {{ { .var min = -$1000 .var max = $1000 .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >(min+(ampl/2)+(ampl/2)*sin(rad)) } } }} //SEG14 [11] call main jsr main -//SEG15 [12] phi from @32 to @end [phi:@32->@end] +//SEG15 [12] phi from @33 to @end [phi:@33->@end] //SEG16 @end //SEG17 main main: { @@ -10833,10 +11493,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#4 = (signed byte) debug_print::print_sbyte_pos1_sb#0 // register copy reg byte x //SEG88 [58] call print_sbyte_at //SEG89 [114] phi from debug_print::print_sbyte_pos1 to print_sbyte_at [phi:debug_print::print_sbyte_pos1->print_sbyte_at] - //SEG90 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos1_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos1_col#0 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos1_row*$28+print_sbyte_pos1_col + lda #>print_line_cursor+print_sbyte_pos1_row*$28+print_sbyte_pos1_col sta print_sbyte_at.at+1 //SEG91 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#4 [phi:debug_print::print_sbyte_pos1->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10848,10 +11508,10 @@ debug_print: { tax //SEG96 [61] call print_sbyte_at //SEG97 [114] phi from debug_print::print_sbyte_pos2 to print_sbyte_at [phi:debug_print::print_sbyte_pos2->print_sbyte_at] - //SEG98 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos2_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos2_col#0 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos2_row*$28+print_sbyte_pos2_col + lda #>print_line_cursor+print_sbyte_pos2_row*$28+print_sbyte_pos2_col sta print_sbyte_at.at+1 //SEG99 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#5 [phi:debug_print::print_sbyte_pos2->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10859,10 +11519,10 @@ debug_print: { //SEG101 debug_print::print_sbyte_pos3 //SEG102 [63] call print_sbyte_at //SEG103 [114] phi from debug_print::print_sbyte_pos3 to print_sbyte_at [phi:debug_print::print_sbyte_pos3->print_sbyte_at] - //SEG104 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos3_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos3_col#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos3_row*$28+print_sbyte_pos3_col + lda #>print_line_cursor+print_sbyte_pos3_row*$28+print_sbyte_pos3_col sta print_sbyte_at.at+1 //SEG105 [114] phi (signed byte) print_sbyte_at::b#22 = (const signed byte) sz#0 [phi:debug_print::print_sbyte_pos3->print_sbyte_at#1] -- vbsxx=vbsc1 ldx #sz @@ -10875,10 +11535,10 @@ debug_print: { tax //SEG110 [66] call print_sbyte_at //SEG111 [114] phi from debug_print::print_sbyte_pos4 to print_sbyte_at [phi:debug_print::print_sbyte_pos4->print_sbyte_at] - //SEG112 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos4_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos4_col#0 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos4_row*$28+print_sbyte_pos4_col + lda #>print_line_cursor+print_sbyte_pos4_row*$28+print_sbyte_pos4_col sta print_sbyte_at.at+1 //SEG113 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#7 [phi:debug_print::print_sbyte_pos4->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10890,10 +11550,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#8 = (signed byte) debug_print::print_sbyte_pos5_sb#0 // register copy reg byte x //SEG118 [69] call print_sbyte_at //SEG119 [114] phi from debug_print::print_sbyte_pos5 to print_sbyte_at [phi:debug_print::print_sbyte_pos5->print_sbyte_at] - //SEG120 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos5_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos5_col#0 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos5_row*$28+print_sbyte_pos5_col + lda #>print_line_cursor+print_sbyte_pos5_row*$28+print_sbyte_pos5_col sta print_sbyte_at.at+1 //SEG121 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#8 [phi:debug_print::print_sbyte_pos5->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10905,10 +11565,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#9 = (signed byte) debug_print::print_sbyte_pos6_sb#0 // register copy reg byte x //SEG126 [72] call print_sbyte_at //SEG127 [114] phi from debug_print::print_sbyte_pos6 to print_sbyte_at [phi:debug_print::print_sbyte_pos6->print_sbyte_at] - //SEG128 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos6_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos6_col#0 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos6_row*$28+print_sbyte_pos6_col + lda #>print_line_cursor+print_sbyte_pos6_row*$28+print_sbyte_pos6_col sta print_sbyte_at.at+1 //SEG129 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#9 [phi:debug_print::print_sbyte_pos6->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10920,10 +11580,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#10 = (signed byte) debug_print::print_sbyte_pos7_sb#0 // register copy reg byte x //SEG134 [75] call print_sbyte_at //SEG135 [114] phi from debug_print::print_sbyte_pos7 to print_sbyte_at [phi:debug_print::print_sbyte_pos7->print_sbyte_at] - //SEG136 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos7_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos7_col#0 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos7_row*$28+print_sbyte_pos7_col + lda #>print_line_cursor+print_sbyte_pos7_row*$28+print_sbyte_pos7_col sta print_sbyte_at.at+1 //SEG137 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#10 [phi:debug_print::print_sbyte_pos7->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10935,10 +11595,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#11 = (signed byte) debug_print::print_sbyte_pos8_sb#0 // register copy reg byte x //SEG142 [78] call print_sbyte_at //SEG143 [114] phi from debug_print::print_sbyte_pos8 to print_sbyte_at [phi:debug_print::print_sbyte_pos8->print_sbyte_at] - //SEG144 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos8_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos8_col#0 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos8_row*$28+print_sbyte_pos8_col + lda #>print_line_cursor+print_sbyte_pos8_row*$28+print_sbyte_pos8_col sta print_sbyte_at.at+1 //SEG145 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#11 [phi:debug_print::print_sbyte_pos8->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10950,10 +11610,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#12 = (signed byte) debug_print::print_sbyte_pos9_sb#0 // register copy reg byte x //SEG150 [81] call print_sbyte_at //SEG151 [114] phi from debug_print::print_sbyte_pos9 to print_sbyte_at [phi:debug_print::print_sbyte_pos9->print_sbyte_at] - //SEG152 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos9_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos9_col#0 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos9_row*$28+print_sbyte_pos9_col + lda #>print_line_cursor+print_sbyte_pos9_row*$28+print_sbyte_pos9_col sta print_sbyte_at.at+1 //SEG153 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#12 [phi:debug_print::print_sbyte_pos9->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10965,10 +11625,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#13 = (signed byte) debug_print::print_sbyte_pos10_sb#0 // register copy reg byte x //SEG158 [84] call print_sbyte_at //SEG159 [114] phi from debug_print::print_sbyte_pos10 to print_sbyte_at [phi:debug_print::print_sbyte_pos10->print_sbyte_at] - //SEG160 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos10_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos10_col#0 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos10_row*$28+print_sbyte_pos10_col + lda #>print_line_cursor+print_sbyte_pos10_row*$28+print_sbyte_pos10_col sta print_sbyte_at.at+1 //SEG161 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#13 [phi:debug_print::print_sbyte_pos10->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10980,10 +11640,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#14 = (signed byte) debug_print::print_sbyte_pos11_sb#0 // register copy reg byte x //SEG166 [87] call print_sbyte_at //SEG167 [114] phi from debug_print::print_sbyte_pos11 to print_sbyte_at [phi:debug_print::print_sbyte_pos11->print_sbyte_at] - //SEG168 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos11_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos11_col#0 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos11_row*$28+print_sbyte_pos11_col + lda #>print_line_cursor+print_sbyte_pos11_row*$28+print_sbyte_pos11_col sta print_sbyte_at.at+1 //SEG169 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#14 [phi:debug_print::print_sbyte_pos11->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -10995,10 +11655,10 @@ debug_print: { // (signed byte) print_sbyte_at::b#15 = (signed byte) debug_print::print_sbyte_pos12_sb#0 // register copy reg byte x //SEG174 [90] call print_sbyte_at //SEG175 [114] phi from debug_print::print_sbyte_pos12 to print_sbyte_at [phi:debug_print::print_sbyte_pos12->print_sbyte_at] - //SEG176 [114] phi (byte*) print_sbyte_at::at#21 = (const byte*) print_screen#0+(const byte) debug_print::print_sbyte_pos12_row#0*(byte/signed byte/word/signed word/dword/signed dword) 40+(const byte) debug_print::print_sbyte_pos12_col#0 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#0] -- pbuz1=pbuc1 - lda #print_sbyte_at#0] -- pbuz1=pbuc1 + lda #print_screen+print_sbyte_pos12_row*$28+print_sbyte_pos12_col + lda #>print_line_cursor+print_sbyte_pos12_row*$28+print_sbyte_pos12_col sta print_sbyte_at.at+1 //SEG177 [114] phi (signed byte) print_sbyte_at::b#22 = (signed byte) print_sbyte_at::b#15 [phi:debug_print::print_sbyte_pos12->print_sbyte_at#1] -- register_copy jsr print_sbyte_at @@ -12117,10 +12777,10 @@ print_str_at: { print_cls: { .label sc = 6 //SEG491 [268] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG492 [268] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 - lda #print_cls::@1#0] -- pbuz1=pbuc1 + lda #print_screen + lda #>print_line_cursor sta sc+1 //SEG493 [268] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] //SEG494 [268] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy @@ -12135,12 +12795,12 @@ print_cls: { bne !+ inc sc+1 !: - //SEG498 [271] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG498 [271] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1 lda sc - cmp #127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }} //SEG5 [2] call main jsr main -//SEG6 [3] phi from @26 to @end [phi:@26->@end] -bend_from_b26: +//SEG6 [3] phi from @27 to @end [phi:@27->@end] +bend_from_b27: jmp bend //SEG7 @end bend: @@ -2335,14 +2731,14 @@ ASSEMBLER BEFORE OPTIMIZATION .label print_line_cursor = 2 //SEG2 @begin bbegin: - jmp b26 -//SEG3 @26 -b26: + jmp b27 +//SEG3 @27 +b27: //SEG4 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 5.0 .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }} //SEG5 [2] call main jsr main -//SEG6 [3] phi from @26 to @end [phi:@26->@end] -bend_from_b26: +//SEG6 [3] phi from @27 to @end [phi:@27->@end] +bend_from_b27: jmp bend //SEG7 @end bend: @@ -2958,7 +3354,7 @@ mulf_init: { ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b26 +Removing instruction jmp b27 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b2 @@ -3013,7 +3409,7 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction bend_from_b26: +Removing instruction bend_from_b27: Removing instruction b2_from_b1: Removing instruction do_perspective_from_b2: Removing instruction b1_from_do_perspective: @@ -3047,7 +3443,7 @@ Removing instruction print_char_from_b1: Removing instruction b1_from_b1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b26: +Removing instruction b27: Removing instruction bend: Removing instruction mulf_init_from_main: Removing instruction b1: @@ -3094,11 +3490,90 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @26 +(label) @27 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE (signed byte*) PERSP_Z (const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) 9216 +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z) (label) do_perspective::@1 (label) do_perspective::@10 @@ -3255,11 +3730,11 @@ Score: 3787 .label print_char_cursor = 4 .label print_line_cursor = 2 //SEG2 @begin -//SEG3 @26 +//SEG3 @27 //SEG4 kickasm(location (const signed byte*) PERSP_Z#0) {{ { .var d = 256.0 .var z0 = 5.0 .for(var z=0;z<$100;z++) { .if(z>127) { .byte round(d / (z0 - ((z - 256) / 64.0))); } else { .byte round(d / (z0 - (z / 64.0))); } } } }} //SEG5 [2] call main jsr main -//SEG6 [3] phi from @26 to @end [phi:@26->@end] +//SEG6 [3] phi from @27 to @end [phi:@27->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/examples/3d/perspective.sym b/src/test/ref/examples/3d/perspective.sym index b93f87ca1..35be20f7e 100644 --- a/src/test/ref/examples/3d/perspective.sym +++ b/src/test/ref/examples/3d/perspective.sym @@ -1,8 +1,87 @@ -(label) @26 +(label) @27 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE (signed byte*) PERSP_Z (const signed byte*) PERSP_Z#0 PERSP_Z = ((signed byte*))(word/signed word/dword/signed dword) 9216 +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z) (label) do_perspective::@1 (label) do_perspective::@10 diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.cfg b/src/test/ref/examples/bresenham/bitmap-bresenham.cfg index d00231b2a..6d42b7e3b 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.cfg +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@14 -@14: scope:[] from @begin + to:@15 +@15: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @14 +@end: scope:[] from @15 [3] phi() -main: scope:[main] from @14 +main: scope:[main] from @15 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [6] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.log b/src/test/ref/examples/bresenham/bitmap-bresenham.log index b0c6e6383..18c8aace9 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.log +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.log @@ -2,21 +2,93 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 - to:@3 -@3: scope:[] from @begin + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte[256]) bitmap_plot_xlo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_xhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@11 + to:@12 bitmap_init: scope:[bitmap_init] from main (byte*) bitmap_init::bitmap#2 ← phi( main/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -560,15 +632,15 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return -@11: scope:[] from @3 +@12: scope:[] from @4 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte[]) lines_x#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60 } (byte[]) lines_y#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 80, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 40, (byte/signed byte/word/signed word/dword/signed dword) 10 } (byte) lines_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@14 -main: scope:[main] from @14 - (byte) lines_cnt#9 ← phi( @14/(byte) lines_cnt#10 ) + to:@15 +main: scope:[main] from @15 + (byte) lines_cnt#9 ← phi( @15/(byte) lines_cnt#10 ) *((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 *((byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0 @@ -648,39 +720,183 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 init_screen::@return: scope:[init_screen] from init_screen::@1 return to:@return -@14: scope:[] from @11 - (byte) lines_cnt#10 ← phi( @11/(byte) lines_cnt#0 ) +@15: scope:[] from @12 + (byte) lines_cnt#10 ← phi( @12/(byte) lines_cnt#0 ) call main - to:@15 -@15: scope:[] from @14 + to:@16 +@16: scope:[] from @15 to:@end -@end: scope:[] from @15 +@end: scope:[] from @16 SYMBOL TABLE SSA -(label) @11 -(label) @14 +(label) @12 (label) @15 -(label) @3 +(label) @16 +(label) @4 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte*) BITMAP (byte*) BITMAP#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 (byte*) D011 (byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 +(byte*) RASTER +(byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 (byte) VIC_BMM (byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 (byte) VIC_DEN (byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 (byte*) VIC_MEMORY (byte*) VIC_MEMORY#0 (byte) VIC_RSEL (byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) bitmap_clear() (byte*~) bitmap_clear::$0 (bool~) bitmap_clear::$1 @@ -1234,7 +1450,7 @@ Culled Empty Block (label) bitmap_line::@33 Culled Empty Block (label) bitmap_line::@34 Culled Empty Block (label) bitmap_line::@35 Culled Empty Block (label) bitmap_line::@36 -Culled Empty Block (label) @15 +Culled Empty Block (label) @16 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7 @@ -1393,13 +1609,85 @@ Simple Condition (bool~) bitmap_line_ydxd::$7 if((byte) bitmap_line_ydxd::y#3!=( Simple Condition (bool~) lines::$3 if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1 Simple Condition (bool~) init_screen::$1 if((byte*) init_screen::c#1!=(byte*~) init_screen::$0) goto init_screen::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 Constant (const byte) VIC_BMM#0 = 32 Constant (const byte) VIC_DEN#0 = 16 Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte[256]) bitmap_plot_xlo#0 = { fill( 256, 0) } Constant (const byte[256]) bitmap_plot_xhi#0 = { fill( 256, 0) } Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) } @@ -1451,6 +1739,7 @@ Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_ Successful SSA optimization Pass2FixInlineConstructors Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) lines::$0 ← (byte) lines::l#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) lines::$1 ← (byte) lines::l#2 +Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3 Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$0 Successful SSA optimization Pass2NopCastElimination @@ -1464,9 +1753,9 @@ Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) 200 Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40 -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) bitmap_init::@6 -Culled Empty Block (label) @11 +Culled Empty Block (label) @12 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@6 Successful SSA optimization Pass2CullEmptyBlocks @@ -1530,7 +1819,7 @@ Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3) Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @14 +Adding NOP phi() at start of @15 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 @@ -1670,7 +1959,7 @@ Culled Empty Block (label) bitmap_init::@11 Culled Empty Block (label) bitmap_init::@12 Culled Empty Block (label) bitmap_init::@9 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @14 +Adding NOP phi() at start of @15 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 @@ -1683,14 +1972,14 @@ Adding NOP phi() at start of bitmap_init::@10 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@14 -@14: scope:[] from @begin + to:@15 +@15: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @14 +@end: scope:[] from @15 [3] phi() -main: scope:[main] from @14 +main: scope:[main] from @15 [4] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [5] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [6] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 @@ -2052,14 +2341,86 @@ bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte*) BITMAP +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM (byte*) VIC_MEMORY (byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 2.0 (byte*) bitmap_clear::bitmap @@ -2483,15 +2844,15 @@ INITIAL ASM .const lines_cnt = 8 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] -b14_from_bbegin: - jmp b14 -//SEG4 @14 -b14: +//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] +b15_from_bbegin: + jmp b15 +//SEG4 @15 +b15: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @14 to @end [phi:@14->@end] -bend_from_b14: +//SEG6 [3] phi from @15 to @end [phi:@15->@end] +bend_from_b15: jmp bend //SEG7 @end bend: @@ -3903,15 +4264,15 @@ ASSEMBLER BEFORE OPTIMIZATION .const lines_cnt = 8 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] -b14_from_bbegin: - jmp b14 -//SEG4 @14 -b14: +//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] +b15_from_bbegin: + jmp b15 +//SEG4 @15 +b15: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @14 to @end [phi:@14->@end] -bend_from_b14: +//SEG6 [3] phi from @15 to @end [phi:@15->@end] +bend_from_b15: jmp bend //SEG7 @end bend: @@ -4858,7 +5219,7 @@ bitmap_init: { lines_y: .byte $a, $28, $3c, $50, $6e, $50, $3c, $28, $a ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b14 +Removing instruction jmp b15 Removing instruction jmp bend Removing instruction jmp b3 Removing instruction jmp b4 @@ -4940,8 +5301,8 @@ Replacing label b1_from_b2 with b1 Replacing label b4_from_b3 with b4 Replacing label b3_from_b4 with b3 Removing instruction bbegin: -Removing instruction b14_from_bbegin: -Removing instruction bend_from_b14: +Removing instruction b15_from_bbegin: +Removing instruction bend_from_b15: Removing instruction b3_from_main: Removing instruction b4_from_b3: Removing instruction init_screen_from_b4: @@ -4976,7 +5337,7 @@ Removing instruction b4_from_b7: Removing instruction b10_from_b1: Removing instruction b2_from_b10: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b14: +Removing instruction b15: Removing instruction bend: Removing instruction bitmap_init_from_main: Removing instruction b3: @@ -5044,27 +5405,99 @@ Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @14 +(label) @15 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte*) BITMAP (const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 (const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM (const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN (const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_ECM +(byte) VIC_MCM (byte*) VIC_MEMORY (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 $3 zp ZP_WORD:9 2.0 (label) bitmap_clear::@1 @@ -5399,11 +5832,11 @@ Score: 221049 .label BITMAP = $2000 .const lines_cnt = 8 //SEG2 @begin -//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] -//SEG4 @14 +//SEG3 [1] phi from @begin to @15 [phi:@begin->@15] +//SEG4 @15 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @14 to @end [phi:@14->@end] +//SEG6 [3] phi from @15 to @end [phi:@15->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/examples/bresenham/bitmap-bresenham.sym b/src/test/ref/examples/bresenham/bitmap-bresenham.sym index 4fe89b06e..2eaae403d 100644 --- a/src/test/ref/examples/bresenham/bitmap-bresenham.sym +++ b/src/test/ref/examples/bresenham/bitmap-bresenham.sym @@ -1,24 +1,96 @@ -(label) @14 +(label) @15 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte*) BITMAP (const byte*) BITMAP#0 BITMAP = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 (const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM (const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN (const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_ECM +(byte) VIC_MCM (byte*) VIC_MEMORY (const byte*) VIC_MEMORY#0 VIC_MEMORY = ((byte*))(word/dword/signed dword) 53272 (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 $3 zp ZP_WORD:9 2.0 (label) bitmap_clear::@1 diff --git a/src/test/ref/examples/chargen/chargen-analysis.cfg b/src/test/ref/examples/chargen/chargen-analysis.cfg index 7c5d676f8..2ed7fb7f0 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.cfg +++ b/src/test/ref/examples/chargen/chargen-analysis.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@18 -@18: scope:[] from @begin + to:@19 +@19: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @18 +@end: scope:[] from @19 [3] phi() -main: scope:[main] from @18 +main: scope:[main] from @19 [4] phi() to:main::@1 main::@1: scope:[main] from main main::@1 diff --git a/src/test/ref/examples/chargen/chargen-analysis.log b/src/test/ref/examples/chargen/chargen-analysis.log index 9238ab5bb..d6dbcff0a 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.log +++ b/src/test/ref/examples/chargen/chargen-analysis.log @@ -2,11 +2,86 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 - to:@8 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@9 mul8u: scope:[mul8u] from plot_chargen::@1 (byte) mul8u::a#5 ← phi( plot_chargen::@1/(byte) mul8u::a#1 ) (byte) mul8u::b#1 ← phi( plot_chargen::@1/(byte) mul8u::b#0 ) @@ -54,11 +129,15 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 (word) mul8u::return#1 ← (word) mul8u::return#3 return to:@return -@8: scope:[] from @begin +@9: scope:[] from @begin + (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 @@ -102,18 +181,23 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 (byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 + (byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52 (byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 (byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 (byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 (byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 57 + (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58 (byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 + (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 (byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62 + (byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 63 (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@15 + to:@13 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) *((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1) @@ -157,11 +241,23 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k (byte) keyboard_get_keycode::return#1 ← (byte) keyboard_get_keycode::return#3 return to:@return -@15: scope:[] from @8 +@13: scope:[] from @9 + (byte[8]) keyboard_events#0 ← { fill( 8, 0) } + (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_MODIFIER_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 + (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 + (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } + to:@16 +@16: scope:[] from @13 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@18 -main: scope:[main] from @18 - (byte*) SCREEN#1 ← phi( @18/(byte*) SCREEN#8 ) + to:@19 +main: scope:[main] from @19 + (byte*) SCREEN#1 ← phi( @19/(byte*) SCREEN#8 ) (byte*) main::sc#0 ← (byte*) SCREEN#1 to:main::@1 main::@1: scope:[main] from main main::@1 @@ -544,27 +640,97 @@ plot_chargen::@8: scope:[plot_chargen] from plot_chargen::@7 plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8 return to:@return -@18: scope:[] from @15 - (byte*) SCREEN#8 ← phi( @15/(byte*) SCREEN#0 ) +@19: scope:[] from @16 + (byte*) SCREEN#8 ← phi( @16/(byte*) SCREEN#0 ) call main - to:@19 -@19: scope:[] from @18 + to:@20 +@20: scope:[] from @19 to:@end -@end: scope:[] from @19 +@end: scope:[] from @20 SYMBOL TABLE SSA -(label) @15 -(label) @18 +(byte~) $0 +(label) @13 +(label) @16 (label) @19 -(label) @8 +(label) @20 +(label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 (byte*) CHARGEN (byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 (byte*) CIA1_PORT_B (byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 (byte) KEY_0 (byte) KEY_0#0 (byte) KEY_1 @@ -603,8 +769,18 @@ SYMBOL TABLE SSA (byte) KEY_COLON#0 (byte) KEY_COMMA (byte) KEY_COMMA#0 +(byte) KEY_COMMODORE +(byte) KEY_COMMODORE#0 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_DOWN#0 +(byte) KEY_CRSR_RIGHT +(byte) KEY_CRSR_RIGHT#0 +(byte) KEY_CTRL +(byte) KEY_CTRL#0 (byte) KEY_D (byte) KEY_D#0 +(byte) KEY_DEL +(byte) KEY_DEL#0 (byte) KEY_DOT (byte) KEY_DOT#0 (byte) KEY_E @@ -625,6 +801,8 @@ SYMBOL TABLE SSA (byte) KEY_G#0 (byte) KEY_H (byte) KEY_H#0 +(byte) KEY_HOME +(byte) KEY_HOME#0 (byte) KEY_I (byte) KEY_I#0 (byte) KEY_J @@ -639,6 +817,16 @@ SYMBOL TABLE SSA (byte) KEY_M#0 (byte) KEY_MINUS (byte) KEY_MINUS#0 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_COMMODORE#0 +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_CTRL#0 +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_LSHIFT#0 +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_MODIFIER_SHIFT#0 (byte) KEY_N (byte) KEY_N#0 (byte) KEY_O @@ -653,6 +841,12 @@ SYMBOL TABLE SSA (byte) KEY_Q#0 (byte) KEY_R (byte) KEY_R#0 +(byte) KEY_RETURN +(byte) KEY_RETURN#0 +(byte) KEY_RSHIFT +(byte) KEY_RSHIFT#0 +(byte) KEY_RUNSTOP +(byte) KEY_RUNSTOP#0 (byte) KEY_S (byte) KEY_S#0 (byte) KEY_SEMICOLON @@ -675,8 +869,42 @@ SYMBOL TABLE SSA (byte) KEY_Y#0 (byte) KEY_Z (byte) KEY_Z#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 +(byte*) RASTER +(byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -719,8 +947,60 @@ SYMBOL TABLE SSA (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (byte[]) keyboard_char_keycodes (byte[]) keyboard_char_keycodes#0 +(byte[8]) keyboard_events +(byte[8]) keyboard_events#0 +(byte) keyboard_events_size +(byte) keyboard_events_size#0 (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -786,6 +1066,10 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid#1 (byte[8]) keyboard_matrix_row_bitmask (byte[8]) keyboard_matrix_row_bitmask#0 +(byte) keyboard_modifiers +(byte) keyboard_modifiers#0 +(byte[8]) keyboard_scan_values +(byte[8]) keyboard_scan_values#0 (void()) main() (byte*~) main::$0 (bool~) main::$1 @@ -1083,7 +1367,7 @@ SYMBOL TABLE SSA (byte*) print_str_at::str#6 (byte*) print_str_at::str#7 -Culled Empty Block (label) @19 +Culled Empty Block (label) @20 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1107,6 +1391,7 @@ Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#8 (byte) keyboard_key_pressed::return#1 Alias (byte) keyboard_get_keycode::return#0 = (byte) keyboard_get_keycode::return#3 (byte) keyboard_get_keycode::return#1 +Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte*) SCREEN#13 = (byte*) SCREEN#3 (byte*) SCREEN#2 (byte*) SCREEN#4 (byte*) SCREEN#5 (byte*) SCREEN#6 Alias (byte*) print_str_at::at#0 = (byte*~) main::$2 Alias (byte*) print_str_at::at#1 = (byte*~) main::$5 @@ -1220,15 +1505,94 @@ Simple Condition (bool~) plot_chargen::$12 if((byte~) plot_chargen::$10==(byte/s Simple Condition (bool~) plot_chargen::$14 if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@3 Simple Condition (bool~) plot_chargen::$16 if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@2 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const word) mul8u::res#0 = 0 +Constant (const byte) KEY_DEL#0 = 0 +Constant (const byte) KEY_RETURN#0 = 1 +Constant (const byte) KEY_CRSR_RIGHT#0 = 2 Constant (const byte) KEY_F7#0 = 3 Constant (const byte) KEY_F1#0 = 4 Constant (const byte) KEY_F3#0 = 5 Constant (const byte) KEY_F5#0 = 6 +Constant (const byte) KEY_CRSR_DOWN#0 = 7 Constant (const byte) KEY_3#0 = 8 Constant (const byte) KEY_W#0 = 9 Constant (const byte) KEY_A#0 = 10 @@ -1272,16 +1636,29 @@ Constant (const byte) KEY_COMMA#0 = 47 Constant (const byte) KEY_POUND#0 = 48 Constant (const byte) KEY_ASTERISK#0 = 49 Constant (const byte) KEY_SEMICOLON#0 = 50 +Constant (const byte) KEY_HOME#0 = 51 +Constant (const byte) KEY_RSHIFT#0 = 52 Constant (const byte) KEY_EQUALS#0 = 53 Constant (const byte) KEY_ARROW_UP#0 = 54 Constant (const byte) KEY_SLASH#0 = 55 Constant (const byte) KEY_1#0 = 56 Constant (const byte) KEY_ARROW_LEFT#0 = 57 +Constant (const byte) KEY_CTRL#0 = 58 Constant (const byte) KEY_2#0 = 59 Constant (const byte) KEY_SPACE#0 = 60 +Constant (const byte) KEY_COMMODORE#0 = 61 Constant (const byte) KEY_Q#0 = 62 +Constant (const byte) KEY_RUNSTOP#0 = 63 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } +Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) } +Constant (const byte) keyboard_events_size#0 = 0 +Constant (const byte) keyboard_modifiers#0 = 0 +Constant (const byte) KEY_MODIFIER_LSHIFT#0 = 1 +Constant (const byte) KEY_MODIFIER_RSHIFT#0 = 2 +Constant (const byte) KEY_MODIFIER_CTRL#0 = 4 +Constant (const byte) KEY_MODIFIER_COMMODORE#0 = 8 +Constant (const byte[8]) keyboard_scan_values#0 = { fill( 8, 0) } Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) print_str_at::str#0 = main::str Constant (const byte*) print_str_at::str#1 = main::str1 @@ -1308,6 +1685,7 @@ Constant (const byte) plot_chargen::c#1 = '*' Successful SSA optimization Pass2ConstantIdentification Constant (const word) mul8u::mb#0 = ((word))mul8u::b#0 Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } +Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 Constant (const byte*) main::sc#0 = SCREEN#0 Constant (const byte*) main::$0 = SCREEN#0+1000 Constant (const byte*) print_str_at::at#0 = SCREEN#0+1 @@ -1329,6 +1707,7 @@ Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@3 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ @@ -1340,8 +1719,9 @@ Resolved ranged comparison value if(plot_chargen::x#1!=rangelast(0,7)) goto plot Resolved ranged next value plot_chargen::y#1 ← ++ plot_chargen::y#2 to ++ Resolved ranged comparison value if(plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8 Culled Empty Block (label) mul8u::@3 -Culled Empty Block (label) @8 -Culled Empty Block (label) @15 +Culled Empty Block (label) @9 +Culled Empty Block (label) @13 +Culled Empty Block (label) @16 Culled Empty Block (label) main::@28 Culled Empty Block (label) main::@14 Culled Empty Block (label) main::@8 @@ -1444,7 +1824,7 @@ Added new block during phi lifting plot_chargen::@11(between plot_chargen::@7 an Added new block during phi lifting plot_chargen::@12(between plot_chargen::@4 and plot_chargen::@3) Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @18 +Adding NOP phi() at start of @19 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@13 @@ -1512,7 +1892,7 @@ Culled Empty Block (label) plot_chargen::@12 Culled Empty Block (label) plot_chargen::@10 Culled Empty Block (label) mul8u::@10 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @18 +Adding NOP phi() at start of @19 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@13 @@ -1530,14 +1910,14 @@ Adding NOP phi() at start of mul8u FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@18 -@18: scope:[] from @begin + to:@19 +@19: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @18 +@end: scope:[] from @19 [3] phi() -main: scope:[main] from @18 +main: scope:[main] from @19 [4] phi() to:main::@1 main::@1: scope:[main] from main main::@1 @@ -1797,9 +2177,43 @@ print_str_at::@2: scope:[print_str_at] from print_str_at::@1 VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN (byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (byte) KEY_1 (byte) KEY_2 @@ -1819,7 +2233,12 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_C (byte) KEY_COLON (byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D +(byte) KEY_DEL (byte) KEY_DOT (byte) KEY_E (byte) KEY_EQUALS @@ -1830,6 +2249,7 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_F7 (byte) KEY_G (byte) KEY_H +(byte) KEY_HOME (byte) KEY_I (byte) KEY_J (byte) KEY_K @@ -1837,6 +2257,11 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_LSHIFT (byte) KEY_M (byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT (byte) KEY_N (byte) KEY_O (byte) KEY_P @@ -1844,6 +2269,9 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_POUND (byte) KEY_Q (byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP (byte) KEY_S (byte) KEY_SEMICOLON (byte) KEY_SLASH @@ -1855,9 +2283,52 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_X (byte) KEY_Y (byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (byte) keyboard_get_keycode::ch (byte) keyboard_get_keycode::ch#0 103.0 @@ -1890,6 +2361,8 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 4.0 (byte[8]) keyboard_matrix_row_bitmask +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$15 22.0 (byte~) main::$18 22.0 @@ -2199,17 +2672,17 @@ INITIAL ASM .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] -b18_from_bbegin: - jmp b18 -//SEG4 @18 -b18: +//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +b19_from_bbegin: + jmp b19 +//SEG4 @19 +b19: //SEG5 [2] call main -//SEG6 [4] phi from @18 to main [phi:@18->main] -main_from_b18: +//SEG6 [4] phi from @19 to main [phi:@19->main] +main_from_b19: jsr main -//SEG7 [3] phi from @18 to @end [phi:@18->@end] -bend_from_b18: +//SEG7 [3] phi from @19 to @end [phi:@19->@end] +bend_from_b19: jmp bend //SEG8 @end bend: @@ -3336,17 +3809,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] -b18_from_bbegin: - jmp b18 -//SEG4 @18 -b18: +//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +b19_from_bbegin: + jmp b19 +//SEG4 @19 +b19: //SEG5 [2] call main -//SEG6 [4] phi from @18 to main [phi:@18->main] -main_from_b18: +//SEG6 [4] phi from @19 to main [phi:@19->main] +main_from_b19: jsr main -//SEG7 [3] phi from @18 to @end [phi:@18->@end] -bend_from_b18: +//SEG7 [3] phi from @19 to @end [phi:@19->@end] +bend_from_b19: jmp bend //SEG8 @end bend: @@ -4111,7 +4584,7 @@ print_str_at: { keyboard_char_keycodes: .byte KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b18 +Removing instruction jmp b19 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b13 @@ -4181,9 +4654,9 @@ Replacing label b2_from_b7 with b2 Replacing label b4_from_b2 with b4 Replacing label b1_from_b2 with b1 Removing instruction bbegin: -Removing instruction b18_from_bbegin: -Removing instruction main_from_b18: -Removing instruction bend_from_b18: +Removing instruction b19_from_bbegin: +Removing instruction main_from_b19: +Removing instruction bend_from_b19: Removing instruction b1_from_b1: Removing instruction b13_from_b1: Removing instruction print_str_at_from_b13: @@ -4222,7 +4695,7 @@ Removing instruction b4_from_b7: Removing instruction b1_from_print_str_at: Removing instruction b1_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b18: +Removing instruction b19: Removing instruction bend: Removing instruction b1_from_main: Removing instruction b13: @@ -4297,15 +4770,49 @@ Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @18 +(label) @19 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35 (byte) KEY_1 @@ -4344,8 +4851,13 @@ FINAL SYMBOL TABLE (const byte) KEY_COLON#0 KEY_COLON = (byte/signed byte/word/signed word/dword/signed dword) 45 (byte) KEY_COMMA (const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47 +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D (const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18 +(byte) KEY_DEL (byte) KEY_DOT (const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44 (byte) KEY_E @@ -4366,6 +4878,7 @@ FINAL SYMBOL TABLE (const byte) KEY_G#0 KEY_G = (byte/signed byte/word/signed word/dword/signed dword) 26 (byte) KEY_H (const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29 +(byte) KEY_HOME (byte) KEY_I (const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) 33 (byte) KEY_J @@ -4380,6 +4893,11 @@ FINAL SYMBOL TABLE (const byte) KEY_M#0 KEY_M = (byte/signed byte/word/signed word/dword/signed dword) 36 (byte) KEY_MINUS (const byte) KEY_MINUS#0 KEY_MINUS = (byte/signed byte/word/signed word/dword/signed dword) 43 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT (byte) KEY_N (const byte) KEY_N#0 KEY_N = (byte/signed byte/word/signed word/dword/signed dword) 39 (byte) KEY_O @@ -4394,6 +4912,9 @@ FINAL SYMBOL TABLE (const byte) KEY_Q#0 KEY_Q = (byte/signed byte/word/signed word/dword/signed dword) 62 (byte) KEY_R (const byte) KEY_R#0 KEY_R = (byte/signed byte/word/signed word/dword/signed dword) 17 +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP (byte) KEY_S (const byte) KEY_S#0 KEY_S = (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) KEY_SEMICOLON @@ -4416,12 +4937,55 @@ FINAL SYMBOL TABLE (const byte) KEY_Y#0 KEY_Y = (byte/signed byte/word/signed word/dword/signed dword) 25 (byte) KEY_Z (const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (byte[]) keyboard_char_keycodes (const byte[]) keyboard_char_keycodes#0 keyboard_char_keycodes = { (const byte) KEY_AT#0, (const byte) KEY_A#0, (const byte) KEY_B#0, (const byte) KEY_C#0, (const byte) KEY_D#0, (const byte) KEY_E#0, (const byte) KEY_F#0, (const byte) KEY_G#0, (const byte) KEY_H#0, (const byte) KEY_I#0, (const byte) KEY_J#0, (const byte) KEY_K#0, (const byte) KEY_L#0, (const byte) KEY_M#0, (const byte) KEY_N#0, (const byte) KEY_O#0, (const byte) KEY_P#0, (const byte) KEY_Q#0, (const byte) KEY_R#0, (const byte) KEY_S#0, (const byte) KEY_T#0, (const byte) KEY_U#0, (const byte) KEY_V#0, (const byte) KEY_W#0, (const byte) KEY_X#0, (const byte) KEY_Y#0, (const byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ARROW_UP#0, (const byte) KEY_ARROW_LEFT#0, (const byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ASTERISK#0, (const byte) KEY_PLUS#0, (const byte) KEY_COMMA#0, (const byte) KEY_MINUS#0, (const byte) KEY_DOT#0, (const byte) KEY_SLASH#0, (const byte) KEY_0#0, (const byte) KEY_1#0, (const byte) KEY_2#0, (const byte) KEY_3#0, (const byte) KEY_4#0, (const byte) KEY_5#0, (const byte) KEY_6#0, (const byte) KEY_7#0, (const byte) KEY_8#0, (const byte) KEY_9#0, (const byte) KEY_COLON#0, (const byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -4460,6 +5024,8 @@ FINAL SYMBOL TABLE (byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$15 reg byte a 22.0 (byte~) main::$18 reg byte a 22.0 @@ -4715,12 +5281,12 @@ Score: 628899 .const KEY_Q = $3e .label SCREEN = $400 //SEG2 @begin -//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] -//SEG4 @18 +//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG4 @19 //SEG5 [2] call main -//SEG6 [4] phi from @18 to main [phi:@18->main] +//SEG6 [4] phi from @19 to main [phi:@19->main] jsr main -//SEG7 [3] phi from @18 to @end [phi:@18->@end] +//SEG7 [3] phi from @19 to @end [phi:@19->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/ref/examples/chargen/chargen-analysis.sym b/src/test/ref/examples/chargen/chargen-analysis.sym index d4e463ff5..0397950ce 100644 --- a/src/test/ref/examples/chargen/chargen-analysis.sym +++ b/src/test/ref/examples/chargen/chargen-analysis.sym @@ -1,12 +1,46 @@ -(label) @18 +(label) @19 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35 (byte) KEY_1 @@ -45,8 +79,13 @@ (const byte) KEY_COLON#0 KEY_COLON = (byte/signed byte/word/signed word/dword/signed dword) 45 (byte) KEY_COMMA (const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47 +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D (const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18 +(byte) KEY_DEL (byte) KEY_DOT (const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44 (byte) KEY_E @@ -67,6 +106,7 @@ (const byte) KEY_G#0 KEY_G = (byte/signed byte/word/signed word/dword/signed dword) 26 (byte) KEY_H (const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29 +(byte) KEY_HOME (byte) KEY_I (const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) 33 (byte) KEY_J @@ -81,6 +121,11 @@ (const byte) KEY_M#0 KEY_M = (byte/signed byte/word/signed word/dword/signed dword) 36 (byte) KEY_MINUS (const byte) KEY_MINUS#0 KEY_MINUS = (byte/signed byte/word/signed word/dword/signed dword) 43 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT (byte) KEY_N (const byte) KEY_N#0 KEY_N = (byte/signed byte/word/signed word/dword/signed dword) 39 (byte) KEY_O @@ -95,6 +140,9 @@ (const byte) KEY_Q#0 KEY_Q = (byte/signed byte/word/signed word/dword/signed dword) 62 (byte) KEY_R (const byte) KEY_R#0 KEY_R = (byte/signed byte/word/signed word/dword/signed dword) 17 +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP (byte) KEY_S (const byte) KEY_S#0 KEY_S = (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) KEY_SEMICOLON @@ -117,12 +165,55 @@ (const byte) KEY_Y#0 KEY_Y = (byte/signed byte/word/signed word/dword/signed dword) 25 (byte) KEY_Z (const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (byte[]) keyboard_char_keycodes (const byte[]) keyboard_char_keycodes#0 keyboard_char_keycodes = { (const byte) KEY_AT#0, (const byte) KEY_A#0, (const byte) KEY_B#0, (const byte) KEY_C#0, (const byte) KEY_D#0, (const byte) KEY_E#0, (const byte) KEY_F#0, (const byte) KEY_G#0, (const byte) KEY_H#0, (const byte) KEY_I#0, (const byte) KEY_J#0, (const byte) KEY_K#0, (const byte) KEY_L#0, (const byte) KEY_M#0, (const byte) KEY_N#0, (const byte) KEY_O#0, (const byte) KEY_P#0, (const byte) KEY_Q#0, (const byte) KEY_R#0, (const byte) KEY_S#0, (const byte) KEY_T#0, (const byte) KEY_U#0, (const byte) KEY_V#0, (const byte) KEY_W#0, (const byte) KEY_X#0, (const byte) KEY_Y#0, (const byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ARROW_UP#0, (const byte) KEY_ARROW_LEFT#0, (const byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ASTERISK#0, (const byte) KEY_PLUS#0, (const byte) KEY_COMMA#0, (const byte) KEY_MINUS#0, (const byte) KEY_DOT#0, (const byte) KEY_SLASH#0, (const byte) KEY_0#0, (const byte) KEY_1#0, (const byte) KEY_2#0, (const byte) KEY_3#0, (const byte) KEY_4#0, (const byte) KEY_5#0, (const byte) KEY_6#0, (const byte) KEY_7#0, (const byte) KEY_8#0, (const byte) KEY_9#0, (const byte) KEY_COLON#0, (const byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -161,6 +252,8 @@ (byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$15 reg byte a 22.0 (byte~) main::$18 reg byte a 22.0 diff --git a/src/test/ref/examples/fastmultiply/fastmultiply8.kc.asm b/src/test/ref/examples/fastmultiply/fastmultiply8.kc.asm index f042b7478..63f196508 100644 --- a/src/test/ref/examples/fastmultiply/fastmultiply8.kc.asm +++ b/src/test/ref/examples/fastmultiply/fastmultiply8.kc.asm @@ -1,7 +1,7 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" - .label print_screen = $400 + .label print_line_cursor = $400 .label ap = $fd .label bp = $fe .label cp = $ff @@ -211,9 +211,9 @@ init_screen: { } print_cls: { .label sc = 2 - lda #print_screen + lda #>print_line_cursor sta sc+1 b1: lda #' ' @@ -224,10 +224,10 @@ print_cls: { inc sc+1 !: lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1 lda sc - cmp #print_cls::@1] b1_from_print_cls: - //SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 - lda #print_cls::@1#0] -- pbuz1=pbuc1 + lda #print_screen + lda #>print_line_cursor sta sc+1 jmp b1 //SEG155 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] @@ -1627,12 +1809,12 @@ print_cls: { bne !+ inc sc+1 !: - //SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1_from_b1 lda sc - cmp #print_cls::@1] b1_from_print_cls: - //SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 - lda #print_cls::@1#0] -- pbuz1=pbuc1 + lda #print_screen + lda #>print_line_cursor sta sc+1 jmp b1 //SEG155 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] @@ -2256,12 +2438,12 @@ print_cls: { bne !+ inc sc+1 !: - //SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1_from_b1 lda sc - cmp #print_cls::@1] - //SEG154 [79] phi (byte*) print_cls::sc#2 = (const byte*) print_screen#0 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 - lda #print_cls::@1#0] -- pbuz1=pbuc1 + lda #print_screen + lda #>print_line_cursor sta sc+1 //SEG155 [79] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] //SEG156 [79] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy @@ -2906,12 +3090,12 @@ print_cls: { bne !+ inc sc+1 !: - //SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_screen#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG160 [82] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 - cmp #>print_screen+$3e8 + cmp #>print_line_cursor+$3e8 bne b1 lda sc - cmp #@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG6 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG7 @end bend: @@ -396,15 +732,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label GHOST_BYTE = $3fff //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG6 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG7 @end bend: @@ -503,17 +839,17 @@ irq_bottom_1: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp bend Removing instruction jmp breturn Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: -Removing instruction b6_from_bbegin: -Removing instruction bend_from_b6: +Removing instruction b7_from_bbegin: +Removing instruction bend_from_b7: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b6: +Removing instruction b7: Removing instruction bend: Removing instruction breturn: Removing instruction breturn: @@ -521,35 +857,102 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @6 +(label) @7 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CIA1_INTERRUPT (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte*) GHOST_BYTE (const byte*) GHOST_BYTE#0 GHOST_BYTE = ((byte*))(word/signed word/dword/signed dword) 16383 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ (const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte) RED (const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW interrupt(KERNEL_MIN)(void()) irq_bottom_1() (label) irq_bottom_1::@return interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() @@ -581,11 +984,11 @@ Score: 160 .const RED = 2 .label GHOST_BYTE = $3fff //SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 @7 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG6 [3] phi from @7 to @end [phi:@7->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/examples/irq/irq-hyperscreen.sym b/src/test/ref/examples/irq/irq-hyperscreen.sym index 3f3261555..36f27e786 100644 --- a/src/test/ref/examples/irq/irq-hyperscreen.sym +++ b/src/test/ref/examples/irq/irq-hyperscreen.sym @@ -1,32 +1,99 @@ -(label) @6 +(label) @7 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CIA1_INTERRUPT (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte*) GHOST_BYTE (const byte*) GHOST_BYTE#0 GHOST_BYTE = ((byte*))(word/signed word/dword/signed dword) 16383 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 (void()**) KERNEL_IRQ (const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte) RED (const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW interrupt(KERNEL_MIN)(void()) irq_bottom_1() (label) irq_bottom_1::@return interrupt(KERNEL_KEYBOARD)(void()) irq_bottom_2() diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.cfg b/src/test/ref/examples/multiplexer/simple-multiplexer.cfg index afe5077f6..89081e903 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.cfg +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.cfg @@ -1,7 +1,7 @@ @begin: scope:[] from [0] phi() - to:@11 -@11: scope:[] from @begin + to:@12 +@12: scope:[] from @begin kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; @@ -13,14 +13,14 @@ .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - to:@14 -@14: scope:[] from @11 + to:@15 +@15: scope:[] from @12 [3] phi() [4] call main to:@end -@end: scope:[] from @14 +@end: scope:[] from @15 [5] phi() -main: scope:[main] from @14 +main: scope:[main] from @15 asm { sei } [7] call init to:main::@1 diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log index eea8de1b0..16055441c 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.log +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log @@ -6,21 +6,87 @@ Inlined call (byte~) loop::$7 ← call plexFreeNextYpos CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 - to:@3 -@3: scope:[] from @begin + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte) PLEX_COUNT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (word[PLEX_COUNT#0]) PLEX_XPOS#0 ← { fill( PLEX_COUNT#0, 0) } (byte[PLEX_COUNT#0]) PLEX_YPOS#0 ← { fill( PLEX_COUNT#0, 0) } @@ -31,7 +97,7 @@ CONTROL FLOW GRAPH SSA (byte) plex_show_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) plex_sprite_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) plex_sprite_msb#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@8 + to:@9 plexInit: scope:[plexInit] from init (byte*) plexInit::screen#1 ← phi( init/(byte*) plexInit::screen#0 ) (byte*) plexInit::plexSetScreen1_screen#0 ← (byte*) plexInit::screen#1 @@ -236,20 +302,20 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 plexSho (byte) plex_sprite_msb#5 ← (byte) plex_sprite_msb#16 return to:@return -@8: scope:[] from @3 - (byte) plex_sprite_msb#41 ← phi( @3/(byte) plex_sprite_msb#0 ) - (byte) plex_sprite_idx#41 ← phi( @3/(byte) plex_sprite_idx#0 ) - (byte) plex_show_idx#41 ← phi( @3/(byte) plex_show_idx#0 ) - (byte*) PLEX_SCREEN_PTR#27 ← phi( @3/(byte*) PLEX_SCREEN_PTR#0 ) +@9: scope:[] from @4 + (byte) plex_sprite_msb#41 ← phi( @4/(byte) plex_sprite_msb#0 ) + (byte) plex_sprite_idx#41 ← phi( @4/(byte) plex_sprite_idx#0 ) + (byte) plex_show_idx#41 ← phi( @4/(byte) plex_show_idx#0 ) + (byte*) PLEX_SCREEN_PTR#27 ← phi( @4/(byte*) PLEX_SCREEN_PTR#0 ) (byte[8]) PLEX_FREE_YPOS#0 ← { fill( 8, 0) } (byte) plex_free_next#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@11 -@11: scope:[] from @8 - (byte) plex_free_next#37 ← phi( @8/(byte) plex_free_next#4 ) - (byte) plex_sprite_msb#38 ← phi( @8/(byte) plex_sprite_msb#41 ) - (byte) plex_sprite_idx#39 ← phi( @8/(byte) plex_sprite_idx#41 ) - (byte) plex_show_idx#39 ← phi( @8/(byte) plex_show_idx#41 ) - (byte*) PLEX_SCREEN_PTR#25 ← phi( @8/(byte*) PLEX_SCREEN_PTR#27 ) + to:@12 +@12: scope:[] from @9 + (byte) plex_free_next#37 ← phi( @9/(byte) plex_free_next#4 ) + (byte) plex_sprite_msb#38 ← phi( @9/(byte) plex_sprite_msb#41 ) + (byte) plex_sprite_idx#39 ← phi( @9/(byte) plex_sprite_idx#41 ) + (byte) plex_show_idx#39 ← phi( @9/(byte) plex_show_idx#41 ) + (byte*) PLEX_SCREEN_PTR#25 ← phi( @9/(byte*) PLEX_SCREEN_PTR#27 ) (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*) YSIN#0 ← ((byte*)) (word/signed word/dword/signed dword) 8448 @@ -264,16 +330,16 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 plexSho .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - to:@14 -main: scope:[main] from @14 - (byte*) YSIN#11 ← phi( @14/(byte*) YSIN#13 ) - (byte*) SPRITE#4 ← phi( @14/(byte*) SPRITE#5 ) - (byte) plex_free_next#31 ← phi( @14/(byte) plex_free_next#29 ) - (byte) plex_sprite_msb#33 ← phi( @14/(byte) plex_sprite_msb#30 ) - (byte) plex_sprite_idx#34 ← phi( @14/(byte) plex_sprite_idx#32 ) - (byte) plex_show_idx#34 ← phi( @14/(byte) plex_show_idx#32 ) - (byte*) SCREEN#2 ← phi( @14/(byte*) SCREEN#3 ) - (byte*) PLEX_SCREEN_PTR#17 ← phi( @14/(byte*) PLEX_SCREEN_PTR#21 ) + to:@15 +main: scope:[main] from @15 + (byte*) YSIN#11 ← phi( @15/(byte*) YSIN#13 ) + (byte*) SPRITE#4 ← phi( @15/(byte*) SPRITE#5 ) + (byte) plex_free_next#31 ← phi( @15/(byte) plex_free_next#29 ) + (byte) plex_sprite_msb#33 ← phi( @15/(byte) plex_sprite_msb#30 ) + (byte) plex_sprite_idx#34 ← phi( @15/(byte) plex_sprite_idx#32 ) + (byte) plex_show_idx#34 ← phi( @15/(byte) plex_show_idx#32 ) + (byte*) SCREEN#2 ← phi( @15/(byte*) SCREEN#3 ) + (byte*) PLEX_SCREEN_PTR#17 ← phi( @15/(byte*) PLEX_SCREEN_PTR#21 ) asm { sei } call init to:main::@1 @@ -618,48 +684,128 @@ loop::@return: scope:[loop] from loop::@1 (byte) plex_free_next#9 ← (byte) plex_free_next#19 return to:@return -@14: scope:[] from @11 - (byte*) YSIN#13 ← phi( @11/(byte*) YSIN#0 ) - (byte*) SPRITE#5 ← phi( @11/(byte*) SPRITE#0 ) - (byte*) SCREEN#3 ← phi( @11/(byte*) SCREEN#0 ) - (byte) plex_free_next#29 ← phi( @11/(byte) plex_free_next#37 ) - (byte) plex_sprite_msb#30 ← phi( @11/(byte) plex_sprite_msb#38 ) - (byte) plex_sprite_idx#32 ← phi( @11/(byte) plex_sprite_idx#39 ) - (byte) plex_show_idx#32 ← phi( @11/(byte) plex_show_idx#39 ) - (byte*) PLEX_SCREEN_PTR#21 ← phi( @11/(byte*) PLEX_SCREEN_PTR#25 ) +@15: scope:[] from @12 + (byte*) YSIN#13 ← phi( @12/(byte*) YSIN#0 ) + (byte*) SPRITE#5 ← phi( @12/(byte*) SPRITE#0 ) + (byte*) SCREEN#3 ← phi( @12/(byte*) SCREEN#0 ) + (byte) plex_free_next#29 ← phi( @12/(byte) plex_free_next#37 ) + (byte) plex_sprite_msb#30 ← phi( @12/(byte) plex_sprite_msb#38 ) + (byte) plex_sprite_idx#32 ← phi( @12/(byte) plex_sprite_idx#39 ) + (byte) plex_show_idx#32 ← phi( @12/(byte) plex_show_idx#39 ) + (byte*) PLEX_SCREEN_PTR#21 ← phi( @12/(byte*) PLEX_SCREEN_PTR#25 ) call main - to:@15 -@15: scope:[] from @14 - (byte) plex_free_next#20 ← phi( @14/(byte) plex_free_next#6 ) - (byte) plex_sprite_msb#22 ← phi( @14/(byte) plex_sprite_msb#7 ) - (byte) plex_sprite_idx#21 ← phi( @14/(byte) plex_sprite_idx#6 ) - (byte) plex_show_idx#21 ← phi( @14/(byte) plex_show_idx#6 ) - (byte*) PLEX_SCREEN_PTR#14 ← phi( @14/(byte*) PLEX_SCREEN_PTR#4 ) + to:@16 +@16: scope:[] from @15 + (byte) plex_free_next#20 ← phi( @15/(byte) plex_free_next#6 ) + (byte) plex_sprite_msb#22 ← phi( @15/(byte) plex_sprite_msb#7 ) + (byte) plex_sprite_idx#21 ← phi( @15/(byte) plex_sprite_idx#6 ) + (byte) plex_show_idx#21 ← phi( @15/(byte) plex_show_idx#6 ) + (byte*) PLEX_SCREEN_PTR#14 ← phi( @15/(byte*) PLEX_SCREEN_PTR#4 ) (byte*) PLEX_SCREEN_PTR#7 ← (byte*) PLEX_SCREEN_PTR#14 (byte) plex_show_idx#10 ← (byte) plex_show_idx#21 (byte) plex_sprite_idx#10 ← (byte) plex_sprite_idx#21 (byte) plex_sprite_msb#11 ← (byte) plex_sprite_msb#22 (byte) plex_free_next#10 ← (byte) plex_free_next#20 to:@end -@end: scope:[] from @15 +@end: scope:[] from @16 SYMBOL TABLE SSA (word/signed word/dword/signed dword~) $0 -(label) @11 -(label) @14 +(label) @12 (label) @15 -(label) @3 -(label) @8 +(label) @16 +(label) @4 +(label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte) BLACK (byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 (byte*) D011 (byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) GREEN (byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (byte) PLEX_COUNT (byte) PLEX_COUNT#0 (byte[8]) PLEX_FREE_YPOS @@ -722,8 +868,28 @@ SYMBOL TABLE SSA (word[PLEX_COUNT#0]) PLEX_XPOS#0 (byte[PLEX_COUNT#0]) PLEX_YPOS (byte[PLEX_COUNT#0]) PLEX_YPOS#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -740,18 +906,50 @@ SYMBOL TABLE SSA (byte*) SPRITES_COLS#0 (byte*) SPRITES_ENABLE (byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 (byte*) SPRITES_XMSB (byte*) SPRITES_XMSB#0 (byte*) SPRITES_XPOS (byte*) SPRITES_XPOS#0 (byte*) SPRITES_YPOS (byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 (byte) VIC_DEN (byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 (byte) VIC_RSEL (byte) VIC_RSEL#0 (byte) VIC_RST8 (byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (byte*) YSIN (byte*) YSIN#0 (byte*) YSIN#1 @@ -1479,19 +1677,85 @@ Simple Condition (bool~) loop::$10 if((byte) loop::ss#1!=rangelast(0,loop::$6)) Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting && if()-condition to two if()s (bool~) plexSort::$7 ← (bool~) plexSort::$5 && (bool~) plexSort::$6 Successful SSA optimization Pass2ConditionalAndOrRewriting +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) D011#0 = ((byte*))53265 Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 Constant (const byte) VIC_DEN#0 = 16 Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte) PLEX_COUNT#0 = 32 Constant (const word/signed word/dword/signed dword) $0 = 1024+1016 Constant (const byte) plex_show_idx#0 = 0 @@ -1560,13 +1824,13 @@ Resolved ranged next value loop::sy#1 ← ++ loop::sy#2 to ++ Resolved ranged comparison value if(loop::sy#1!=rangelast(0,loop::$1)) goto loop::@7 to (const byte/signed word/word/dword/signed dword) loop::$1+(byte/signed byte/word/signed word/dword/signed dword) 1 Resolved ranged next value loop::ss#1 ← ++ loop::ss#6 to ++ Resolved ranged comparison value if(loop::ss#1!=rangelast(0,loop::$6)) goto loop::@11 to (const byte/signed word/word/dword/signed dword) loop::$6+(byte/signed byte/word/signed word/dword/signed dword) 1 -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) plexInit::@3 Culled Empty Block (label) plexSort::@4 Culled Empty Block (label) plexSort::@6 Culled Empty Block (label) plexSort::plexFreePrepare1_@2 Culled Empty Block (label) plexShowSprite::@3 -Culled Empty Block (label) @8 +Culled Empty Block (label) @9 Culled Empty Block (label) main::@2 Culled Empty Block (label) init::@5 Culled Empty Block (label) loop::@2 @@ -1576,7 +1840,7 @@ Culled Empty Block (label) loop::@10 Culled Empty Block (label) loop::plexFreeNextYpos1_@return Culled Empty Block (label) loop::@29 Culled Empty Block (label) loop::@13 -Culled Empty Block (label) @15 +Culled Empty Block (label) @16 Successful SSA optimization Pass2CullEmptyBlocks Alias (byte) plexSort::m#2 = (byte~) plexSort::$1 Alias (byte) plexSort::s#3 = (byte~) plexSort::$4 @@ -1648,7 +1912,7 @@ Added new block during phi lifting init::@6(between init::@1 and init::@1) Added new block during phi lifting init::@7(between init::@2 and init::@2) Added new block during phi lifting plexInit::@4(between plexInit::@1 and plexInit::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @14 +Adding NOP phi() at start of @15 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@1 Adding NOP phi() at start of loop @@ -1693,7 +1957,7 @@ Culled Empty Block (label) init::@7 Culled Empty Block (label) init::@6 Culled Empty Block (label) plexInit::@4 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @14 +Adding NOP phi() at start of @15 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@1 Adding NOP phi() at start of loop @@ -1706,8 +1970,8 @@ Adding NOP phi() at start of plexInit::plexSetScreen1 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@11 -@11: scope:[] from @begin + to:@12 +@12: scope:[] from @begin kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; @@ -1719,14 +1983,14 @@ FINAL CONTROL FLOW GRAPH .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} - to:@14 -@14: scope:[] from @11 + to:@15 +@15: scope:[] from @12 [3] phi() [4] call main to:@end -@end: scope:[] from @14 +@end: scope:[] from @15 [5] phi() -main: scope:[main] from @14 +main: scope:[main] from @15 asm { sei } [7] call init to:main::@1 @@ -1920,10 +2184,50 @@ plexInit::@return: scope:[plexInit] from plexInit::@1 VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte) PLEX_COUNT (byte[8]) PLEX_FREE_YPOS (byte[PLEX_COUNT#0]) PLEX_PTR @@ -1931,17 +2235,43 @@ VARIABLE REGISTER WEIGHTS (byte[PLEX_COUNT#0]) PLEX_SORTED_IDX (word[PLEX_COUNT#0]) PLEX_XPOS (byte[PLEX_COUNT#0]) PLEX_YPOS +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN (byte*) SPRITE (byte*) SPRITES_COLS (byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (byte*) SPRITES_XPOS (byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL (byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (byte*) YSIN (void()) init() (byte~) init::$6 22.0 @@ -2151,20 +2481,20 @@ INITIAL ASM .label plex_sprite_msb = 8 //SEG2 @begin bbegin: - jmp b11 -//SEG3 @11 -b11: + jmp b12 +//SEG3 @12 +b12: //SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }} //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG6 [3] phi from @11 to @14 [phi:@11->@14] -b14_from_b11: - jmp b14 -//SEG7 @14 -b14: +//SEG6 [3] phi from @12 to @15 [phi:@12->@15] +b15_from_b12: + jmp b15 +//SEG7 @15 +b15: //SEG8 [4] call main jsr main -//SEG9 [5] phi from @14 to @end [phi:@14->@end] -bend_from_b14: +//SEG9 [5] phi from @15 to @end [phi:@15->@end] +bend_from_b15: jmp bend //SEG10 @end bend: @@ -2964,20 +3294,20 @@ ASSEMBLER BEFORE OPTIMIZATION .label plex_sprite_msb = 5 //SEG2 @begin bbegin: - jmp b11 -//SEG3 @11 -b11: + jmp b12 +//SEG3 @12 +b12: //SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }} //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG6 [3] phi from @11 to @14 [phi:@11->@14] -b14_from_b11: - jmp b14 -//SEG7 @14 -b14: +//SEG6 [3] phi from @12 to @15 [phi:@12->@15] +b15_from_b12: + jmp b15 +//SEG7 @15 +b15: //SEG8 [4] call main jsr main -//SEG9 [5] phi from @14 to @end [phi:@14->@end] -bend_from_b14: +//SEG9 [5] phi from @15 to @end [phi:@15->@end] +bend_from_b15: jmp bend //SEG10 @end bend: @@ -3504,8 +3834,8 @@ plexInit: { ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b11 -Removing instruction jmp b14 +Removing instruction jmp b12 +Removing instruction jmp b15 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp breturn @@ -3562,9 +3892,9 @@ Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b11: -Removing instruction b14_from_b11: -Removing instruction bend_from_b14: +Removing instruction b12: +Removing instruction b15_from_b12: +Removing instruction bend_from_b15: Removing instruction b1_from_main: Removing instruction loop_from_b1: Removing instruction b1: @@ -3584,7 +3914,7 @@ Removing instruction plexSetScreen1_from_plexInit: Removing instruction b1_from_plexSetScreen1: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b14: +Removing instruction b15: Removing instruction bend: Removing instruction b1: Removing instruction breturn: @@ -3634,18 +3964,58 @@ Removing unreachable instruction jmp breturn Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @11 -(label) @14 +(label) @12 +(label) @15 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 (const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte) PLEX_COUNT (const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 32 (byte[8]) PLEX_FREE_YPOS @@ -3660,8 +4030,18 @@ FINAL SYMBOL TABLE (const word[PLEX_COUNT#0]) PLEX_XPOS#0 PLEX_XPOS = { fill( PLEX_COUNT#0, 0) } (byte[PLEX_COUNT#0]) PLEX_YPOS (const byte[PLEX_COUNT#0]) PLEX_YPOS#0 PLEX_YPOS = { fill( PLEX_COUNT#0, 0) } +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SPRITE @@ -3670,18 +4050,34 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 (byte*) SPRITES_ENABLE (const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264 (byte*) SPRITES_XPOS (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN (const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) VIC_RST8 (const byte) VIC_RST8#0 VIC_RST8 = (byte/word/signed word/dword/signed dword) 128 +(byte) WHITE +(byte) YELLOW (byte*) YSIN (const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) 8448 (void()) init() @@ -3865,14 +4261,14 @@ Score: 63466 .label plex_show_idx = 4 .label plex_sprite_msb = 5 //SEG2 @begin -//SEG3 @11 +//SEG3 @12 //SEG4 kickasm(location (const byte*) YSIN#0) {{ .var min = 50 .var max = 250-21 .var ampl = max-min; .for(var i=0;i<256;i++) .byte round(min+(ampl/2)+(ampl/2)*sin(toRadians(360*i/256))) }} //SEG5 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} -//SEG6 [3] phi from @11 to @14 [phi:@11->@14] -//SEG7 @14 +//SEG6 [3] phi from @12 to @15 [phi:@12->@15] +//SEG7 @15 //SEG8 [4] call main jsr main -//SEG9 [5] phi from @14 to @end [phi:@14->@end] +//SEG9 [5] phi from @15 to @end [phi:@15->@end] //SEG10 @end //SEG11 main main: { diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.sym b/src/test/ref/examples/multiplexer/simple-multiplexer.sym index d9bc86c18..04b7e604f 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.sym +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.sym @@ -1,15 +1,55 @@ -(label) @11 -(label) @14 +(label) @12 +(label) @15 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 (const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte) PLEX_COUNT (const byte) PLEX_COUNT#0 PLEX_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 32 (byte[8]) PLEX_FREE_YPOS @@ -24,8 +64,18 @@ (const word[PLEX_COUNT#0]) PLEX_XPOS#0 PLEX_XPOS = { fill( PLEX_COUNT#0, 0) } (byte[PLEX_COUNT#0]) PLEX_YPOS (const byte[PLEX_COUNT#0]) PLEX_YPOS#0 PLEX_YPOS = { fill( PLEX_COUNT#0, 0) } +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SPRITE @@ -34,18 +84,34 @@ (const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 (byte*) SPRITES_ENABLE (const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264 (byte*) SPRITES_XPOS (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN (const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) VIC_RST8 (const byte) VIC_RST8#0 VIC_RST8 = (byte/word/signed word/dword/signed dword) 128 +(byte) WHITE +(byte) YELLOW (byte*) YSIN (const byte*) YSIN#0 YSIN = ((byte*))(word/signed word/dword/signed dword) 8448 (void()) init() diff --git a/src/test/ref/examples/rasterbars/raster-bars.cfg b/src/test/ref/examples/rasterbars/raster-bars.cfg index c16d498cb..d332f4f8c 100644 --- a/src/test/ref/examples/rasterbars/raster-bars.cfg +++ b/src/test/ref/examples/rasterbars/raster-bars.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [3] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 asm { sei } to:main::@2 main::@2: scope:[main] from main main::@2 main::@5 diff --git a/src/test/ref/examples/rasterbars/raster-bars.log b/src/test/ref/examples/rasterbars/raster-bars.log index 6367f030b..5ada87d19 100644 --- a/src/test/ref/examples/rasterbars/raster-bars.log +++ b/src/test/ref/examples/rasterbars/raster-bars.log @@ -2,11 +2,87 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 - to:@4 -main: scope:[main] from @5 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@5 +main: scope:[main] from @6 asm { sei } to:main::@2 main::@1: scope:[main] from main::@7 @@ -28,9 +104,9 @@ main::@7: scope:[main] from main::@5 main::@return: scope:[main] from main::@7 return to:@return -@4: scope:[] from @begin +@5: scope:[] from @begin (byte[]) rastercols#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/word/signed word/dword/signed dword) 255 } - to:@5 + to:@6 raster: scope:[raster] from main::@5 asm { nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop } (byte) raster::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -50,25 +126,177 @@ raster::@1: scope:[raster] from raster raster::@1 raster::@return: scope:[raster] from raster::@1 return to:@return -@5: scope:[] from @4 - call main - to:@6 @6: scope:[] from @5 + call main + to:@7 +@7: scope:[] from @6 to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 SYMBOL TABLE SSA -(label) @4 (label) @5 (label) @6 +(label) @7 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) main() (bool~) main::$0 (bool~) main::$1 @@ -94,15 +322,91 @@ SYMBOL TABLE SSA (byte[]) rastercols#0 Culled Empty Block (label) main::@1 -Culled Empty Block (label) @6 +Culled Empty Block (label) @7 Successful SSA optimization Pass2CullEmptyBlocks Simple Condition (bool~) main::$0 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 Simple Condition (bool~) main::$1 if(*((byte*) RASTER#0)!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@3 Simple Condition (bool~) raster::$0 if((byte) raster::col#1!=(byte/word/signed word/dword/signed dword) 255) goto raster::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte[]) rastercols#0 = { 11, 0, 11, 11, 12, 11, 12, 12, 15, 12, 15, 15, 1, 15, 1, 1, 15, 1, 15, 15, 12, 15, 12, 12, 11, 12, 11, 11, 0, 11, 0, 255 } Constant (const byte) raster::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification @@ -110,10 +414,11 @@ Consolidated array index constant in *(rastercols#0+raster::i#0) Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Culled Empty Block (label) main::@7 -Culled Empty Block (label) @4 +Culled Empty Block (label) @5 Successful SSA optimization Pass2CullEmptyBlocks Inlining constant with var siblings (const byte) raster::i#0 Constant inlined raster::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -121,7 +426,7 @@ Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero rastercols#0+0 Added new block during phi lifting raster::@3(between raster::@1 and raster::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@5 CALL GRAPH @@ -135,21 +440,21 @@ Coalesced [21] raster::i#3 ← raster::i#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) raster::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@5 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@5 -@5: scope:[] from @begin + to:@6 +@6: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [3] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 asm { sei } to:main::@2 main::@2: scope:[main] from main main::@2 main::@5 @@ -183,8 +488,84 @@ raster::@return: scope:[raster] from raster::@1 VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (void()) raster() (byte) raster::col @@ -216,15 +597,15 @@ INITIAL ASM .label BGCOL = $d021 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -369,15 +750,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label BGCOL = $d021 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -b5_from_bbegin: - jmp b5 -//SEG4 @5 -b5: +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +b6_from_bbegin: + jmp b6 +//SEG4 @6 +b6: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG6 [3] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG7 @end bend: @@ -488,7 +869,7 @@ raster: { rastercols: .byte $b, 0, $b, $b, $c, $b, $c, $c, $f, $c, $f, $f, 1, $f, 1, 1, $f, 1, $f, $f, $c, $f, $c, $c, $b, $c, $b, $b, 0, $b, 0, $ff ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b5 +Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -498,12 +879,12 @@ Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b5_from_bbegin: -Removing instruction bend_from_b5: +Removing instruction b6_from_bbegin: +Removing instruction bend_from_b6: Removing instruction b5_from_b3: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b5: +Removing instruction b6: Removing instruction bend: Removing instruction b5: Removing instruction b1_from_raster: @@ -513,15 +894,91 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (label) main::@2 (label) main::@3 @@ -555,11 +1012,11 @@ Score: 8346 .label BORDERCOL = $d020 .label BGCOL = $d021 //SEG2 @begin -//SEG3 [1] phi from @begin to @5 [phi:@begin->@5] -//SEG4 @5 +//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] +//SEG4 @6 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @5 to @end [phi:@5->@end] +//SEG6 [3] phi from @6 to @end [phi:@6->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/examples/rasterbars/raster-bars.sym b/src/test/ref/examples/rasterbars/raster-bars.sym index 4e9483073..048434fc0 100644 --- a/src/test/ref/examples/rasterbars/raster-bars.sym +++ b/src/test/ref/examples/rasterbars/raster-bars.sym @@ -1,12 +1,88 @@ -(label) @5 +(label) @6 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) main() (label) main::@2 (label) main::@3 diff --git a/src/test/ref/examples/rotate/rotate.cfg b/src/test/ref/examples/rotate/rotate.cfg index 2225d8519..541a4920c 100644 --- a/src/test/ref/examples/rotate/rotate.cfg +++ b/src/test/ref/examples/rotate/rotate.cfg @@ -1,7 +1,7 @@ @begin: scope:[] from [0] phi() - to:@12 -@12: scope:[] from @begin + to:@13 +@13: scope:[] from @begin kickasm(location (const byte*) COS#0) {{ { .var min = -$7fff .var max = $7fff @@ -12,8 +12,8 @@ } } }} - to:@15 -@15: scope:[] from @12 + to:@16 +@16: scope:[] from @13 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) @@ -21,9 +21,9 @@ }} [3] call main to:@end -@end: scope:[] from @15 +@end: scope:[] from @16 [4] phi() -main: scope:[main] from @15 +main: scope:[main] from @16 asm { sei } [6] call init to:main::@1 @@ -129,110 +129,112 @@ mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 - [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 + [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 + [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [70] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [71] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 + [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [75] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [77] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [76] return + [78] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared - [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 + [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [80] return + [82] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from anim::mulf8s_prepare1 anim::mulf8s_prepare2 - [81] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) - [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [83] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) + [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [84] return + [86] return to:@return init: scope:[init] from main - [85] phi() - [86] call mulf_init + [87] phi() + [88] call mulf_init to:init::@3 init::@3: scope:[init] from init - [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 + [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 to:init::@1 init::@1: scope:[init] from init::@1 init::@3 - [88] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 - [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 - [91] (byte) init::i#1 ← ++ (byte) init::i#2 - [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 + [90] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 + [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 + [93] (byte) init::i#1 ← ++ (byte) init::i#2 + [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 to:init::@return init::@return: scope:[init] from init::@1 - [93] return + [95] return to:@return mulf_init: scope:[mulf_init] from init - [94] phi() + [96] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [95] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [95] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [95] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [95] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [95] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [97] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [97] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [97] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [97] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [97] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [101] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [101] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [103] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [103] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [110] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [110] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [110] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [110] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [112] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [112] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [112] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [112] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [116] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [118] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [121] return + [123] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [122] phi() + [124] phi() to:mulf_init::@4 diff --git a/src/test/ref/examples/rotate/rotate.log b/src/test/ref/examples/rotate/rotate.log index 4371049fb..0a36c4082 100644 --- a/src/test/ref/examples/rotate/rotate.log +++ b/src/test/ref/examples/rotate/rotate.log @@ -6,22 +6,92 @@ Inlined call call mulf8s_prepare (signed byte) anim::sin_a CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 - to:@3 -@3: scope:[] from @begin + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte[512]) mulf_sqr1_lo#0 ← { fill( 512, 0) } (byte[512]) mulf_sqr1_hi#0 ← { fill( 512, 0) } (byte[512]) mulf_sqr2_lo#0 ← { fill( 512, 0) } (byte[512]) mulf_sqr2_hi#0 ← { fill( 512, 0) } - to:@12 + to:@13 mulf_init: scope:[mulf_init] from init (word) mulf_init::sqr#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) mulf_init::x_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -168,6 +238,7 @@ mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_pr mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 (signed byte) mulf8s_prepared::b#6 ← phi( mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#7 ) (word) mulf8s_prepared::m#3 ← phi( mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#6 (byte~) mulf8s_prepared::$7 ← (byte~) mulf8s_prepared::$5 - (byte~) mulf8s_prepared::$6 @@ -181,6 +252,7 @@ mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_pr to:mulf8s_prepared::@return mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 ) + (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$12 ← ((byte)) *((signed byte*) mulf8s_prepared::memA#0) (byte~) mulf8s_prepared::$13 ← (byte~) mulf8s_prepared::$11 - (byte~) mulf8s_prepared::$12 @@ -192,7 +264,7 @@ mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 (signed word) mulf8s_prepared::return#1 ← (signed word) mulf8s_prepared::return#6 return to:@return -@12: scope:[] from @3 +@13: scope:[] from @4 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) COS#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*~) $0 ← (byte*) COS#0 + (byte/signed byte/word/signed word/dword/signed dword) 64 @@ -207,12 +279,12 @@ mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 } } }} - to:@14 -main: scope:[main] from @15 - (byte*) SIN#10 ← phi( @15/(byte*) SIN#13 ) - (byte*) COS#10 ← phi( @15/(byte*) COS#13 ) - (byte*) SPRITE#4 ← phi( @15/(byte*) SPRITE#0 ) - (byte*) SCREEN#3 ← phi( @15/(byte*) SCREEN#4 ) + to:@15 +main: scope:[main] from @16 + (byte*) SIN#10 ← phi( @16/(byte*) SIN#13 ) + (byte*) COS#10 ← phi( @16/(byte*) COS#13 ) + (byte*) SPRITE#4 ← phi( @16/(byte*) SPRITE#0 ) + (byte*) SCREEN#3 ← phi( @16/(byte*) SCREEN#4 ) asm { sei } call init to:main::@1 @@ -254,10 +326,10 @@ init::@1: scope:[init] from init::@1 init::@3 init::@return: scope:[init] from init::@1 return to:@return -@14: scope:[] from @12 - (byte*) SIN#16 ← phi( @12/(byte*) SIN#0 ) - (byte*) COS#16 ← phi( @12/(byte*) COS#0 ) - (byte*) SCREEN#5 ← phi( @12/(byte*) SCREEN#0 ) +@15: scope:[] from @13 + (byte*) SIN#16 ← phi( @13/(byte*) SIN#0 ) + (byte*) COS#16 ← phi( @13/(byte*) COS#0 ) + (byte*) SCREEN#5 ← phi( @13/(byte*) SCREEN#0 ) (signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) 70 (signed byte/signed word/signed dword~) $2 ← - (byte/signed byte/word/signed word/dword/signed dword) 70 (signed byte/signed word/signed dword~) $3 ← - (byte/signed byte/word/signed word/dword/signed dword) 70 @@ -266,7 +338,7 @@ init::@return: scope:[init] from init::@1 (signed byte/signed word/signed dword~) $5 ← - (byte/signed byte/word/signed word/dword/signed dword) 70 (signed byte/signed word/signed dword~) $6 ← - (byte/signed byte/word/signed word/dword/signed dword) 70 (signed byte[8]) ys#0 ← { (signed byte/signed word/signed dword~) $4, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 70, (signed byte/signed word/signed dword~) $5, (byte/signed byte/word/signed word/dword/signed dword) 70, (signed byte/signed word/signed dword~) $6, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 70 } - to:@15 + to:@16 anim: scope:[anim] from main::@1 (byte*) SIN#6 ← phi( main::@1/(byte*) SIN#8 ) (byte*) COS#6 ← phi( main::@1/(byte*) COS#8 ) @@ -532,10 +604,10 @@ anim::@15: scope:[anim] from anim::@8 anim::@return: scope:[anim] from anim::@1 return to:@return -@15: scope:[] from @14 - (byte*) SIN#13 ← phi( @14/(byte*) SIN#16 ) - (byte*) COS#13 ← phi( @14/(byte*) COS#16 ) - (byte*) SCREEN#4 ← phi( @14/(byte*) SCREEN#5 ) +@16: scope:[] from @15 + (byte*) SIN#13 ← phi( @15/(byte*) SIN#16 ) + (byte*) COS#13 ← phi( @15/(byte*) COS#16 ) + (byte*) SCREEN#4 ← phi( @15/(byte*) SCREEN#5 ) (byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 12288 kickasm(location (byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) @@ -543,10 +615,10 @@ anim::@return: scope:[anim] from anim::@1 .byte pic.getSinglecolorByte(x,y) }} call main - to:@16 -@16: scope:[] from @15 + to:@17 +@17: scope:[] from @16 to:@end -@end: scope:[] from @16 +@end: scope:[] from @17 SYMBOL TABLE SSA (byte*~) $0 @@ -556,15 +628,57 @@ SYMBOL TABLE SSA (signed byte/signed word/signed dword~) $4 (signed byte/signed word/signed dword~) $5 (signed byte/signed word/signed dword~) $6 -(label) @12 -(label) @14 +(label) @13 (label) @15 (label) @16 -(label) @3 +(label) @17 +(label) @4 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 (byte*) COS (byte*) COS#0 (byte*) COS#1 @@ -591,12 +705,72 @@ SYMBOL TABLE SSA (byte*) COS#7 (byte*) COS#8 (byte*) COS#9 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) GREEN (byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 (byte) LIGHT_BLUE (byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -640,12 +814,50 @@ SYMBOL TABLE SSA (byte*) SPRITES_COLS#0 (byte*) SPRITES_ENABLE (byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 (byte*) SPRITES_XMSB (byte*) SPRITES_XMSB#0 (byte*) SPRITES_XPOS (byte*) SPRITES_XPOS#0 (byte*) SPRITES_YPOS (byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) anim() (bool~) anim::$0 (signed byte~) anim::$1 @@ -858,6 +1070,7 @@ SYMBOL TABLE SSA (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) (byte~) mulf8s_prepared::$0 (word~) mulf8s_prepared::$1 +(byte~) mulf8s_prepared::$10 (byte~) mulf8s_prepared::$11 (byte~) mulf8s_prepared::$12 (byte~) mulf8s_prepared::$13 @@ -866,6 +1079,7 @@ SYMBOL TABLE SSA (byte~) mulf8s_prepared::$16 (bool~) mulf8s_prepared::$2 (bool~) mulf8s_prepared::$3 +(byte~) mulf8s_prepared::$4 (byte~) mulf8s_prepared::$5 (byte~) mulf8s_prepared::$6 (byte~) mulf8s_prepared::$7 @@ -1030,7 +1244,7 @@ SYMBOL TABLE SSA (signed byte[8]) ys#0 Culled Empty Block (label) main::@2 -Culled Empty Block (label) @16 +Culled Empty Block (label) @17 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mulf_init::$3 ← (byte~) mulf_init::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1161,15 +1375,85 @@ Simple Condition (bool~) anim::$0 if(*((byte*) RASTER#0)!=(byte/word/signed word Simple Condition (bool~) anim::$20 if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8 Simple Condition (bool~) anim::$26 if((byte) anim::i#1!=rangelast(0,7)) goto anim::@7 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte[512]) mulf_sqr1_lo#0 = { fill( 512, 0) } Constant (const byte[512]) mulf_sqr1_hi#0 = { fill( 512, 0) } Constant (const byte[512]) mulf_sqr2_lo#0 = { fill( 512, 0) } @@ -1226,6 +1510,7 @@ Fixing inline constructor with mulf8u_prepared::$0 ← *(mulf8u_prepared::memB#0 Successful SSA optimization Pass2FixInlineConstructors Inferred type updated to signed byte in (signed word/signed byte/signed dword~) anim::$15 ← (signed byte~) anim::$14 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) anim::$22 ← (byte~) anim::$21 +Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte) mulf8u_prepared::b#0 ← ((byte)) (signed byte) mulf8s_prepared::b#4 Eliminating Noop Cast (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#4 Eliminating Noop Cast (signed word) mulf8s_prepared::return#0 ← ((signed word)) (word) mulf8s_prepared::m#4 @@ -1242,9 +1527,9 @@ Resolved ranged next value init::i#1 ← ++ init::i#2 to ++ Resolved ranged comparison value if(init::i#1!=rangelast(0,7)) goto init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value anim::i#1 ← ++ anim::i#10 to ++ Resolved ranged comparison value if(anim::i#1!=rangelast(0,7)) goto anim::@7 to (byte/signed byte/word/signed word/dword/signed dword) 8 -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) mulf_init::@6 -Culled Empty Block (label) @14 +Culled Empty Block (label) @15 Culled Empty Block (label) anim::@2 Culled Empty Block (label) anim::@5 Culled Empty Block (label) anim::@19 @@ -1324,7 +1609,7 @@ Calls in [] to main:3 Calls in [main] to init:6 anim:8 Calls in [anim] to mulf8u_prepare:18 mulf8s_prepared:21 mulf8s_prepared:27 mulf8u_prepare:32 mulf8s_prepared:35 mulf8s_prepared:42 Calls in [mulf8s_prepared] to mulf8u_prepared:72 -Calls in [init] to mulf_init:99 +Calls in [init] to mulf_init:101 Created 21 initial phi equivalence classes Coalesced [20] mulf8s_prepared::b#8 ← mulf8s_prepared::b#0 @@ -1336,25 +1621,25 @@ Coalesced [67] anim::angle#21 ← anim::angle#1 Coalesced [68] anim::i#15 ← anim::i#1 Coalesced [69] anim::sprite_msb#17 ← anim::sprite_msb#5 Coalesced [70] anim::sprite_msb#19 ← anim::sprite_msb#1 -Coalesced [79] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 -Coalesced [85] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 -Coalesced [88] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 -Coalesced [89] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 -Coalesced [107] init::i#3 ← init::i#1 -Coalesced [115] mulf_init::sqr#8 ← mulf_init::sqr#2 -Coalesced [116] mulf_init::x_2#7 ← mulf_init::x_2#1 -Coalesced [139] mulf_init::x_255#5 ← mulf_init::x_255#1 -Coalesced [140] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 -Coalesced [141] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 -Coalesced [142] mulf_init::dir#4 ← mulf_init::dir#3 -Coalesced (already) [143] mulf_init::dir#5 ← mulf_init::dir#2 -Coalesced [144] mulf_init::c#5 ← mulf_init::c#1 -Coalesced [145] mulf_init::sqr#6 ← mulf_init::sqr#1 -Coalesced [146] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 -Coalesced [147] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 -Coalesced [148] mulf_init::x_2#5 ← mulf_init::x_2#2 -Coalesced [149] mulf_init::sqr#7 ← mulf_init::sqr#4 -Coalesced (already) [150] mulf_init::x_2#6 ← mulf_init::x_2#3 +Coalesced [80] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 +Coalesced [87] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 +Coalesced [90] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 +Coalesced [91] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 +Coalesced [109] init::i#3 ← init::i#1 +Coalesced [117] mulf_init::sqr#8 ← mulf_init::sqr#2 +Coalesced [118] mulf_init::x_2#7 ← mulf_init::x_2#1 +Coalesced [141] mulf_init::x_255#5 ← mulf_init::x_255#1 +Coalesced [142] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 +Coalesced [143] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 +Coalesced [144] mulf_init::dir#4 ← mulf_init::dir#3 +Coalesced (already) [145] mulf_init::dir#5 ← mulf_init::dir#2 +Coalesced [146] mulf_init::c#5 ← mulf_init::c#1 +Coalesced [147] mulf_init::sqr#6 ← mulf_init::sqr#1 +Coalesced [148] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 +Coalesced [149] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 +Coalesced [150] mulf_init::x_2#5 ← mulf_init::x_2#2 +Coalesced [151] mulf_init::sqr#7 ← mulf_init::sqr#4 +Coalesced (already) [152] mulf_init::x_2#6 ← mulf_init::x_2#3 Coalesced down to 16 phi equivalence classes Culled Empty Block (label) anim::@25 Culled Empty Block (label) anim::@26 @@ -1376,8 +1661,8 @@ Adding NOP phi() at start of mulf_init::@12 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@12 -@12: scope:[] from @begin + to:@13 +@13: scope:[] from @begin kickasm(location (const byte*) COS#0) {{ { .var min = -$7fff .var max = $7fff @@ -1388,8 +1673,8 @@ FINAL CONTROL FLOW GRAPH } } }} - to:@15 -@15: scope:[] from @12 + to:@16 +@16: scope:[] from @13 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) @@ -1397,9 +1682,9 @@ FINAL CONTROL FLOW GRAPH }} [3] call main to:@end -@end: scope:[] from @15 +@end: scope:[] from @16 [4] phi() -main: scope:[main] from @15 +main: scope:[main] from @16 asm { sei } [6] call init to:main::@1 @@ -1505,129 +1790,201 @@ mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 - [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 + [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 + [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [70] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [71] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 + [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [75] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [77] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [76] return + [78] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared - [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 + [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [80] return + [82] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from anim::mulf8s_prepare1 anim::mulf8s_prepare2 - [81] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) - [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [83] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 ) + [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [84] return + [86] return to:@return init: scope:[init] from main - [85] phi() - [86] call mulf_init + [87] phi() + [88] call mulf_init to:init::@3 init::@3: scope:[init] from init - [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 + [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 to:init::@1 init::@1: scope:[init] from init::@1 init::@3 - [88] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 - [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 - [91] (byte) init::i#1 ← ++ (byte) init::i#2 - [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 + [90] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 + [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 + [93] (byte) init::i#1 ← ++ (byte) init::i#2 + [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 to:init::@return init::@return: scope:[init] from init::@1 - [93] return + [95] return to:@return mulf_init: scope:[mulf_init] from init - [94] phi() + [96] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [95] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [95] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [95] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [95] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [95] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [97] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [97] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [97] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [97] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [97] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [101] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [101] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [103] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [103] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [110] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [110] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [110] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [110] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [112] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [112] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [112] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [112] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [116] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [118] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [121] return + [123] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [122] phi() + [124] phi() to:mulf_init::@4 VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS (byte*) COS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y (byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN (byte*) SIN (byte*) SPRITE (byte*) SPRITES_COLS (byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (byte*) SPRITES_XPOS (byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) anim() (signed word~) anim::$10 202.0 (signed word~) anim::$11 202.0 @@ -1680,22 +2037,24 @@ VARIABLE REGISTER WEIGHTS (byte*) init::sprites_ptr (void()) main() (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) +(byte~) mulf8s_prepared::$10 20.0 (byte~) mulf8s_prepared::$11 4.0 (byte~) mulf8s_prepared::$15 4.0 (byte~) mulf8s_prepared::$16 4.0 +(byte~) mulf8s_prepared::$4 20.0 (byte~) mulf8s_prepared::$5 4.0 (signed byte) mulf8s_prepared::b (signed byte) mulf8s_prepared::b#0 202.0 (signed byte) mulf8s_prepared::b#1 202.0 (signed byte) mulf8s_prepared::b#2 202.0 (signed byte) mulf8s_prepared::b#3 202.0 -(signed byte) mulf8s_prepared::b#4 31.23076923076923 +(signed byte) mulf8s_prepared::b#4 29.0 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 2.0 (word) mulf8s_prepared::m#1 4.0 (word) mulf8s_prepared::m#2 4.0 (word) mulf8s_prepared::m#4 0.6666666666666666 -(word) mulf8s_prepared::m#5 2.5 +(word) mulf8s_prepared::m#5 2.4 (signed byte*) mulf8s_prepared::memA (signed word) mulf8s_prepared::return (signed word) mulf8s_prepared::return#10 202.0 @@ -1798,8 +2157,10 @@ Added variable anim::ypos#0 to zero page equivalence class [ anim::ypos#0 ] Added variable anim::i2#0 to zero page equivalence class [ anim::i2#0 ] Added variable anim::$25 to zero page equivalence class [ anim::$25 ] Added variable mulf8u_prepared::return#2 to zero page equivalence class [ mulf8u_prepared::return#2 ] +Added variable mulf8s_prepared::$4 to zero page equivalence class [ mulf8s_prepared::$4 ] Added variable mulf8s_prepared::$5 to zero page equivalence class [ mulf8s_prepared::$5 ] Added variable mulf8s_prepared::$15 to zero page equivalence class [ mulf8s_prepared::$15 ] +Added variable mulf8s_prepared::$10 to zero page equivalence class [ mulf8s_prepared::$10 ] Added variable mulf8s_prepared::$11 to zero page equivalence class [ mulf8s_prepared::$11 ] Added variable mulf8s_prepared::$16 to zero page equivalence class [ mulf8s_prepared::$16 ] Added variable mulf8u_prepared::return#0 to zero page equivalence class [ mulf8u_prepared::return#0 ] @@ -1848,8 +2209,10 @@ Complete equivalence classes [ anim::i2#0 ] [ anim::$25 ] [ mulf8u_prepared::return#2 ] +[ mulf8s_prepared::$4 ] [ mulf8s_prepared::$5 ] [ mulf8s_prepared::$15 ] +[ mulf8s_prepared::$10 ] [ mulf8s_prepared::$11 ] [ mulf8s_prepared::$16 ] [ mulf8u_prepared::return#0 ] @@ -1897,14 +2260,16 @@ Allocated zp ZP_BYTE:60 [ anim::ypos#0 ] Allocated zp ZP_BYTE:61 [ anim::i2#0 ] Allocated zp ZP_BYTE:62 [ anim::$25 ] Allocated zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] -Allocated zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] -Allocated zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] -Allocated zp ZP_BYTE:67 [ mulf8s_prepared::$11 ] -Allocated zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] -Allocated zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] -Allocated zp ZP_BYTE:71 [ mulf_init::$2 ] -Allocated zp ZP_BYTE:72 [ mulf_init::$5 ] -Allocated zp ZP_BYTE:73 [ mulf_init::$6 ] +Allocated zp ZP_BYTE:65 [ mulf8s_prepared::$4 ] +Allocated zp ZP_BYTE:66 [ mulf8s_prepared::$5 ] +Allocated zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] +Allocated zp ZP_BYTE:68 [ mulf8s_prepared::$10 ] +Allocated zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] +Allocated zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] +Allocated zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] +Allocated zp ZP_BYTE:73 [ mulf_init::$2 ] +Allocated zp ZP_BYTE:74 [ mulf_init::$5 ] +Allocated zp ZP_BYTE:75 [ mulf_init::$6 ] INITIAL ASM //SEG0 Basic Upstart @@ -1927,18 +2292,18 @@ INITIAL ASM .label SIN = COS+$40 //SEG2 @begin bbegin: - jmp b12 -//SEG3 @12 -b12: + jmp b13 +//SEG3 @13 +b13: //SEG4 kickasm(location (const byte*) COS#0) {{ { .var min = -$7fff .var max = $7fff .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >round(min+(ampl/2)+(ampl/2)*cos(rad)) } } }} - jmp b15 -//SEG5 @15 -b15: + jmp b16 +//SEG5 @16 +b16: //SEG6 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} //SEG7 [3] call main jsr main -//SEG8 [4] phi from @15 to @end [phi:@15->@end] -bend_from_b15: +//SEG8 [4] phi from @16 to @end [phi:@16->@end] +bend_from_b16: jmp bend //SEG9 @end bend: @@ -1947,7 +2312,7 @@ main: { //SEG11 asm { sei } sei //SEG12 [6] call init - //SEG13 [85] phi from main to init [phi:main->init] + //SEG13 [87] phi from main to init [phi:main->init] init_from_main: jsr init //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] @@ -2042,9 +2407,9 @@ anim: { lda COS,y sta mulf8u_prepare.a //SEG39 [18] call mulf8u_prepare - //SEG40 [81] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG40 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG41 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG41 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b17 //SEG42 anim::@17 @@ -2113,9 +2478,9 @@ anim: { lda SIN,y sta mulf8u_prepare.a //SEG61 [30] call mulf8u_prepare - //SEG62 [81] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG62 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare2: - //SEG63 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG63 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b18 //SEG64 anim::@18 @@ -2284,10 +2649,12 @@ anim: { //SEG108 mulf8s_prepared mulf8s_prepared: { .label memA = $fd - .label _5 = $41 - .label _11 = $43 - .label _15 = $42 - .label _16 = $44 + .label _4 = $41 + .label _5 = $42 + .label _10 = $44 + .label _11 = $45 + .label _15 = $43 + .label _16 = $46 .label m = 6 .label b = 5 .label return = $1a @@ -2316,65 +2683,71 @@ mulf8s_prepared: { jmp b3 //SEG114 mulf8s_prepared::@3 b3: - //SEG115 [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + //SEG115 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + lda m+1 + sta _4 + //SEG116 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _5 - //SEG116 [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuz1=vbuz2_minus_vbuz3 + //SEG117 [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuz1=vbuz2_minus_vbuz3 lda _5 sec sbc b sta _15 - //SEG117 [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG118 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 lda _15 sta m+1 - //SEG118 [70] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG119 [71] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG119 [70] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG120 [71] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG120 mulf8s_prepared::@1 + //SEG121 mulf8s_prepared::@1 b1: - //SEG121 [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG122 [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG122 mulf8s_prepared::@4 + //SEG123 mulf8s_prepared::@4 b4: - //SEG123 [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + //SEG124 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + lda m+1 + sta _10 + //SEG125 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _11 - //SEG124 [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 + //SEG126 [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 lda _11 sec sbc memA sta _16 - //SEG125 [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG127 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG126 [75] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG128 [77] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG127 [75] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG129 [77] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG128 mulf8s_prepared::@2 + //SEG130 mulf8s_prepared::@2 b2: jmp breturn - //SEG129 mulf8s_prepared::@return + //SEG131 mulf8s_prepared::@return breturn: - //SEG130 [76] return + //SEG132 [78] return rts } -//SEG131 mulf8u_prepared +//SEG133 mulf8u_prepared mulf8u_prepared: { .label resL = $fe .label memB = $ff - .label return = $45 + .label return = $47 .label return_2 = $3f - //SEG132 [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuz1 + //SEG134 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuz1 lda mulf8s_prepared.b sta memB - //SEG133 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG135 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -2387,25 +2760,25 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG134 [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG136 [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG135 mulf8u_prepared::@return + //SEG137 mulf8u_prepared::@return breturn: - //SEG136 [80] return + //SEG138 [82] return rts } -//SEG137 mulf8u_prepare +//SEG139 mulf8u_prepare mulf8u_prepare: { .label memA = $fd .label a = 8 - //SEG138 [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 + //SEG140 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG139 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG141 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -2413,62 +2786,62 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG140 mulf8u_prepare::@return + //SEG142 mulf8u_prepare::@return breturn: - //SEG141 [84] return + //SEG143 [86] return rts } -//SEG142 init +//SEG144 init init: { .label sprites_ptr = SCREEN+$3f8 .label i = 9 - //SEG143 [86] call mulf_init - //SEG144 [94] phi from init to mulf_init [phi:init->mulf_init] + //SEG145 [88] call mulf_init + //SEG146 [96] phi from init to mulf_init [phi:init->mulf_init] mulf_init_from_init: jsr mulf_init jmp b3 - //SEG145 init::@3 + //SEG147 init::@3 b3: - //SEG146 [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG148 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG147 [88] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG149 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] b1_from_b3: - //SEG148 [88] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuz1=vbuc1 + //SEG150 [90] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG149 [88] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG151 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG150 [88] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG152 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG151 init::@1 + //SEG153 init::@1 b1: - //SEG152 [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG154 [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #$ff&SPRITE/$40 sta sprites_ptr,y - //SEG153 [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG155 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #GREEN sta SPRITES_COLS,y - //SEG154 [91] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 + //SEG156 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG155 [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG157 [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b1 jmp breturn - //SEG156 init::@return + //SEG158 init::@return breturn: - //SEG157 [93] return + //SEG159 [95] return rts } -//SEG158 mulf_init +//SEG160 mulf_init mulf_init: { - .label _2 = $47 - .label _5 = $48 - .label _6 = $49 + .label _2 = $49 + .label _5 = $4a + .label _6 = $4b .label c = $a .label sqr1_hi = $d .label sqr = $10 @@ -2478,88 +2851,88 @@ mulf_init: { .label x_255 = $12 .label sqr2_lo = $13 .label dir = $17 - //SEG159 [95] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG161 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG160 [95] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG162 [97] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG161 [95] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG163 [97] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG162 [95] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG164 [97] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG163 [95] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG165 [97] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG164 [95] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG166 [97] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG165 [95] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG167 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG166 [95] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG167 [95] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG168 [95] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG169 [95] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG170 [95] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG168 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG169 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG170 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG171 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG172 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG171 mulf_init::@1 + //SEG173 mulf_init::@1 b1: - //SEG172 [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG174 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG173 [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG175 [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _2 - //SEG174 [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG176 [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _2 cmp #0 bne b2_from_b1 jmp b5 - //SEG175 mulf_init::@5 + //SEG177 mulf_init::@5 b5: - //SEG176 [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG178 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG177 [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG179 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG178 [101] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG180 [103] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG179 [101] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG180 [101] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG181 [103] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG182 [103] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG181 mulf_init::@2 + //SEG183 mulf_init::@2 b2: - //SEG182 [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG184 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG183 [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG185 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG184 [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG186 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG185 [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG187 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG186 [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG188 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG187 [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG189 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -2567,84 +2940,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG188 [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG190 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG189 [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG191 [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG192 [112] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG191 [110] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG193 [112] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG192 [110] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG194 [112] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG193 [110] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG195 [112] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG194 [110] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 + //SEG196 [112] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG195 [110] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG197 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG196 [110] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG197 [110] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG198 [110] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG199 [110] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG198 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG199 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG200 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG201 [112] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG200 mulf_init::@3 + //SEG202 mulf_init::@3 b3: - //SEG201 [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG203 [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG202 [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG204 [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG203 [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG205 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG204 [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG206 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG205 [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 + //SEG207 [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b12_from_b3 - //SEG206 [116] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG208 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG207 [116] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG209 [118] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG208 mulf_init::@4 + //SEG210 mulf_init::@4 b4: - //SEG209 [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG211 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG210 [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG212 [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -2652,27 +3025,27 @@ mulf_init: { cmp #mulf_init::@12] + //SEG218 [124] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG217 mulf_init::@12 + //SEG219 mulf_init::@12 b12: - //SEG218 [116] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG220 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG219 [116] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG221 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } .align $100 @@ -2742,10 +3115,12 @@ Statement [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::retu Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] Statement [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a Statement [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a +Statement [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] @@ -2753,33 +3128,33 @@ Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ an Removing always clobbered register reg byte x as potential for zp ZP_BYTE:24 [ anim::x#0 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:25 [ anim::y#0 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] -Statement [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a +Statement [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ init::i#2 init::i#1 ] -Statement [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a -Statement [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] -Statement [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a -Statement [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a +Statement [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a +Statement [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a Statement [12] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto anim::@4 [ anim::angle#10 ] ( main:3::anim:8 [ anim::angle#10 ] ) always clobbers reg byte a Statement [17] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte)*((const byte*) COS#0 + (byte) anim::angle#10) [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8u_prepare::a#3 ] ) always clobbers reg byte a Statement [21] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::return#2 ] ( main:3::anim:8 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::return#2 ] ) always clobbers reg byte a @@ -2809,29 +3184,31 @@ Statement [61] *((const byte*) BORDERCOL#0) ← (const byte) LIGHT_BLUE#0 [ anim Statement [64] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#2 ] ) always clobbers reg byte a Statement [65] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#2 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a Statement [66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 [ mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a +Statement [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:3::anim:8::mulf8s_prepared:20 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:25 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:32 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] main:3::anim:8::mulf8s_prepared:38 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ( main:3::anim:8::mulf8s_prepared:20::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:25::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::y#0 anim::xr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:32::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::x#0 anim::xr#0 anim::yr#0 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] main:3::anim:8::mulf8s_prepared:38::mulf8u_prepared:63 [ anim::angle#10 anim::i#10 anim::sprite_msb#10 anim::yr#0 anim::xr#1 mulf8s_prepared::b#4 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a -Statement [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a -Statement [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a -Statement [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a -Statement [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:86 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:86 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a -Statement [120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:86 [ ] ) always clobbers reg byte a +Statement [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:3::init:6 [ ] ) always clobbers reg byte a +Statement [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 [ init::i#2 ] ( main:3::init:6 [ init::i#2 ] ) always clobbers reg byte a +Statement [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:3::init:6::mulf_init:88 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:3::init:6::mulf_init:88 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a +Statement [122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:3::init:6::mulf_init:88 [ ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] : zp ZP_BYTE:2 , reg byte y , Potential registers zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] : zp ZP_BYTE:3 , reg byte y , Potential registers zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] : zp ZP_BYTE:4 , reg byte y , @@ -2873,62 +3250,68 @@ Potential registers zp ZP_BYTE:60 [ anim::ypos#0 ] : zp ZP_BYTE:60 , reg byte x Potential registers zp ZP_BYTE:61 [ anim::i2#0 ] : zp ZP_BYTE:61 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:62 [ anim::$25 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:63 , -Potential registers zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:67 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:69 , -Potential registers zp ZP_BYTE:71 [ mulf_init::$2 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ mulf_init::$5 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:73 [ mulf_init::$6 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ mulf8s_prepared::$4 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:66 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:68 [ mulf8s_prepared::$10 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:71 , +Potential registers zp ZP_BYTE:73 [ mulf_init::$2 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ mulf_init::$5 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ mulf_init::$6 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [anim] 344.2: zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] 202: zp ZP_WORD:28 [ anim::$4 ] 202: zp ZP_WORD:34 [ anim::$6 ] 202: zp ZP_WORD:40 [ anim::$9 ] 202: zp ZP_WORD:42 [ anim::$10 ] 202: zp ZP_WORD:48 [ anim::$11 ] 202: zp ZP_WORD:50 [ anim::$12 ] 202: zp ZP_BYTE:55 [ anim::$15 ] 202: zp ZP_BYTE:58 [ anim::$18 ] 202: zp ZP_BYTE:59 [ anim::$22 ] 202: zp ZP_BYTE:62 [ anim::$25 ] 163.24: zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] 101: zp ZP_BYTE:54 [ anim::$13 ] 101: zp ZP_BYTE:61 [ anim::i2#0 ] 50.5: zp ZP_BYTE:60 [ anim::ypos#0 ] 33.67: zp ZP_WORD:56 [ anim::xpos#0 ] 28.86: zp ZP_WORD:44 [ anim::xr#1 ] 22.44: zp ZP_WORD:52 [ anim::yr#1 ] 20.2: zp ZP_BYTE:25 [ anim::y#0 ] 15.54: zp ZP_WORD:30 [ anim::xr#0 ] 14.43: zp ZP_WORD:36 [ anim::yr#0 ] 13.77: zp ZP_BYTE:24 [ anim::x#0 ] 11.45: zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] -Uplift Scope [mulf8s_prepared] 839.23: zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] 202: zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] 202: zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] 202: zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] 202: zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] 13.17: zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_BYTE:65 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:66 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:67 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] +Uplift Scope [mulf8s_prepared] 837: zp ZP_BYTE:5 [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] 202: zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] 202: zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] 202: zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] 202: zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] 20: zp ZP_BYTE:65 [ mulf8s_prepared::$4 ] 20: zp ZP_BYTE:68 [ mulf8s_prepared::$10 ] 13.07: zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_BYTE:66 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] Uplift Scope [mulf8u_prepare] 608: zp ZP_BYTE:8 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] -Uplift Scope [mulf_init] 45.1: zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:71 [ mulf_init::$2 ] 22: zp ZP_BYTE:72 [ mulf_init::$5 ] 22: zp ZP_BYTE:73 [ mulf_init::$6 ] 20.62: zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf_init] 45.1: zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:10 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:73 [ mulf_init::$2 ] 22: zp ZP_BYTE:74 [ mulf_init::$5 ] 22: zp ZP_BYTE:75 [ mulf_init::$6 ] 20.62: zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [init] 31.17: zp ZP_BYTE:9 [ init::i#2 init::i#1 ] -Uplift Scope [mulf8u_prepared] 4: zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] 1.33: zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] +Uplift Scope [mulf8u_prepared] 4: zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] 1.33: zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] Uplift Scope [main] Uplift Scope [] -Uplifting [anim] best 53519 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp ZP_WORD:28 [ anim::$4 ] zp ZP_WORD:34 [ anim::$6 ] zp ZP_WORD:40 [ anim::$9 ] zp ZP_WORD:42 [ anim::$10 ] zp ZP_WORD:48 [ anim::$11 ] zp ZP_WORD:50 [ anim::$12 ] reg byte a [ anim::$15 ] reg byte a [ anim::$18 ] reg byte a [ anim::$22 ] zp ZP_BYTE:62 [ anim::$25 ] zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] zp ZP_BYTE:54 [ anim::$13 ] zp ZP_BYTE:61 [ anim::i2#0 ] zp ZP_BYTE:60 [ anim::ypos#0 ] zp ZP_WORD:56 [ anim::xpos#0 ] zp ZP_WORD:44 [ anim::xr#1 ] zp ZP_WORD:52 [ anim::yr#1 ] zp ZP_BYTE:25 [ anim::y#0 ] zp ZP_WORD:30 [ anim::xr#0 ] zp ZP_WORD:36 [ anim::yr#0 ] zp ZP_BYTE:24 [ anim::x#0 ] zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] +Uplifting [anim] best 53531 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] zp ZP_WORD:28 [ anim::$4 ] zp ZP_WORD:34 [ anim::$6 ] zp ZP_WORD:40 [ anim::$9 ] zp ZP_WORD:42 [ anim::$10 ] zp ZP_WORD:48 [ anim::$11 ] zp ZP_WORD:50 [ anim::$12 ] reg byte a [ anim::$15 ] reg byte a [ anim::$18 ] reg byte a [ anim::$22 ] zp ZP_BYTE:62 [ anim::$25 ] zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] zp ZP_BYTE:54 [ anim::$13 ] zp ZP_BYTE:61 [ anim::i2#0 ] zp ZP_BYTE:60 [ anim::ypos#0 ] zp ZP_WORD:56 [ anim::xpos#0 ] zp ZP_WORD:44 [ anim::xr#1 ] zp ZP_WORD:52 [ anim::yr#1 ] zp ZP_BYTE:25 [ anim::y#0 ] zp ZP_WORD:30 [ anim::xr#0 ] zp ZP_WORD:36 [ anim::yr#0 ] zp ZP_BYTE:24 [ anim::x#0 ] zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] Limited combination testing to 100 combinations of 368640 possible. -Uplifting [mulf8s_prepared] best 52298 combination reg byte y [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ] zp ZP_BYTE:68 [ mulf8s_prepared::$16 ] -Limited combination testing to 100 combinations of 512 possible. -Uplifting [mulf8u_prepare] best 51695 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] -Uplifting [mulf_init] best 51445 combination zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [mulf8s_prepared] best 52316 combination reg byte y [ mulf8s_prepared::b#4 mulf8s_prepared::b#0 mulf8s_prepared::b#2 mulf8s_prepared::b#1 mulf8s_prepared::b#3 ] zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] zp ZP_WORD:46 [ mulf8s_prepared::return#10 ] reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$10 ] zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] reg byte a [ mulf8s_prepared::$5 ] zp ZP_BYTE:67 [ mulf8s_prepared::$15 ] zp ZP_BYTE:69 [ mulf8s_prepared::$11 ] zp ZP_BYTE:70 [ mulf8s_prepared::$16 ] +Limited combination testing to 100 combinations of 8192 possible. +Uplifting [mulf8u_prepare] best 51713 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#4 ] +Uplifting [mulf_init] best 51463 combination zp ZP_WORD:16 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:19 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:11 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:21 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:13 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [init] best 51295 combination reg byte x [ init::i#2 init::i#1 ] -Uplifting [mulf8u_prepared] best 51295 combination zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] -Uplifting [main] best 51295 combination -Uplifting [] best 51295 combination +Uplifting [init] best 51313 combination reg byte x [ init::i#2 init::i#1 ] +Uplifting [mulf8u_prepared] best 51313 combination zp ZP_WORD:63 [ mulf8u_prepared::return#2 ] zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] +Uplifting [main] best 51313 combination +Uplifting [] best 51313 combination Attempting to uplift remaining variables inzp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] -Uplifting [anim] best 51295 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] +Uplifting [anim] best 51313 combination zp ZP_BYTE:4 [ anim::sprite_msb#10 anim::sprite_msb#5 anim::sprite_msb#2 anim::sprite_msb#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ anim::$25 ] -Uplifting [anim] best 50695 combination reg byte a [ anim::$25 ] +Uplifting [anim] best 50713 combination reg byte a [ anim::$25 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] -Uplifting [anim] best 50695 combination zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] +Uplifting [anim] best 50713 combination zp ZP_BYTE:3 [ anim::i#10 anim::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ anim::$13 ] -Uplifting [anim] best 50095 combination reg byte a [ anim::$13 ] +Uplifting [anim] best 50113 combination reg byte a [ anim::$13 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ anim::i2#0 ] -Uplifting [anim] best 49395 combination reg byte x [ anim::i2#0 ] +Uplifting [anim] best 49413 combination reg byte x [ anim::i2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:60 [ anim::ypos#0 ] -Uplifting [anim] best 49195 combination reg byte y [ anim::ypos#0 ] +Uplifting [anim] best 49213 combination reg byte y [ anim::ypos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 49195 combination zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 49213 combination zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ anim::y#0 ] -Uplifting [anim] best 49195 combination zp ZP_BYTE:25 [ anim::y#0 ] +Uplifting [anim] best 49213 combination zp ZP_BYTE:25 [ anim::y#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 49055 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 49073 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ anim::x#0 ] -Uplifting [anim] best 49055 combination zp ZP_BYTE:24 [ anim::x#0 ] +Uplifting [anim] best 49073 combination zp ZP_BYTE:24 [ anim::x#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 49055 combination zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 49073 combination zp ZP_BYTE:23 [ mulf_init::dir#2 mulf_init::dir#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] -Uplifting [anim] best 49055 combination zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:68 [ mulf8s_prepared::$16 ] -Uplifting [mulf8s_prepared] best 49049 combination reg byte a [ mulf8s_prepared::$16 ] +Uplifting [anim] best 49073 combination zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:67 [ mulf8s_prepared::$15 ] +Uplifting [mulf8s_prepared] best 49067 combination reg byte a [ mulf8s_prepared::$15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:69 [ mulf8s_prepared::$11 ] +Uplifting [mulf8s_prepared] best 49061 combination reg byte a [ mulf8s_prepared::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:70 [ mulf8s_prepared::$16 ] +Uplifting [mulf8s_prepared] best 49055 combination reg byte a [ mulf8s_prepared::$16 ] Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp ZP_WORD:26 [ mulf8s_prepared::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 ] ] with [ zp ZP_WORD:32 [ mulf8s_prepared::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 ] ] with [ zp ZP_WORD:38 [ mulf8s_prepared::return#4 ] ] - score: 1 @@ -2940,7 +3323,7 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ anim::$9 Coalescing zero page register with common assignment [ zp ZP_WORD:48 [ anim::$11 ] ] with [ zp ZP_WORD:50 [ anim::$12 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 ] ] with [ zp ZP_WORD:40 [ anim::$9 anim::$10 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 anim::$9 anim::$10 ] ] with [ zp ZP_WORD:48 [ anim::$11 anim::$12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 anim::$9 anim::$10 anim::$11 anim::$12 ] ] with [ zp ZP_WORD:69 [ mulf8u_prepared::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:6 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8s_prepared::return#3 mulf8s_prepared::return#4 mulf8s_prepared::return#10 mulf8u_prepared::return#2 anim::$9 anim::$10 anim::$11 anim::$12 ] ] with [ zp ZP_WORD:71 [ mulf8u_prepared::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ anim::$4 anim::xr#0 ] ] with [ zp ZP_WORD:44 [ anim::xr#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ anim::$6 anim::yr#0 ] ] with [ zp ZP_WORD:52 [ anim::yr#1 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ anim::angle#10 anim::angle#1 ] ] with [ zp ZP_BYTE:15 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] @@ -2978,18 +3361,18 @@ ASSEMBLER BEFORE OPTIMIZATION .label SIN = COS+$40 //SEG2 @begin bbegin: - jmp b12 -//SEG3 @12 -b12: + jmp b13 +//SEG3 @13 +b13: //SEG4 kickasm(location (const byte*) COS#0) {{ { .var min = -$7fff .var max = $7fff .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >round(min+(ampl/2)+(ampl/2)*cos(rad)) } } }} - jmp b15 -//SEG5 @15 -b15: + jmp b16 +//SEG5 @16 +b16: //SEG6 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} //SEG7 [3] call main jsr main -//SEG8 [4] phi from @15 to @end [phi:@15->@end] -bend_from_b15: +//SEG8 [4] phi from @16 to @end [phi:@16->@end] +bend_from_b16: jmp bend //SEG9 @end bend: @@ -2998,7 +3381,7 @@ main: { //SEG11 asm { sei } sei //SEG12 [6] call init - //SEG13 [85] phi from main to init [phi:main->init] + //SEG13 [87] phi from main to init [phi:main->init] init_from_main: jsr init //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] @@ -3083,9 +3466,9 @@ anim: { ldy angle lda COS,y //SEG39 [18] call mulf8u_prepare - //SEG40 [81] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG40 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG41 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG41 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b17 //SEG42 anim::@17 @@ -3137,9 +3520,9 @@ anim: { ldy angle lda SIN,y //SEG61 [30] call mulf8u_prepare - //SEG62 [81] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG62 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare2: - //SEG63 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG63 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b18 //SEG64 anim::@18 @@ -3293,55 +3676,59 @@ mulf8s_prepared: { jmp b3 //SEG114 mulf8s_prepared::@3 b3: - //SEG115 [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG115 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG116 [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy + //SEG116 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + lda m+1 + //SEG117 [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG117 [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG118 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG118 [70] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG119 [71] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG119 [70] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG120 [71] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG120 mulf8s_prepared::@1 + //SEG121 mulf8s_prepared::@1 b1: - //SEG121 [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 + //SEG122 [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2_from_b1 jmp b4 - //SEG122 mulf8s_prepared::@4 + //SEG123 mulf8s_prepared::@4 b4: - //SEG123 [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG124 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG124 [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG125 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + lda m+1 + //SEG126 [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG125 [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG127 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG126 [75] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG128 [77] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG127 [75] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG129 [77] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG128 mulf8s_prepared::@2 + //SEG130 mulf8s_prepared::@2 b2: jmp breturn - //SEG129 mulf8s_prepared::@return + //SEG131 mulf8s_prepared::@return breturn: - //SEG130 [76] return + //SEG132 [78] return rts } -//SEG131 mulf8u_prepared +//SEG133 mulf8u_prepared mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 5 - //SEG132 [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy + //SEG134 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy sty memB - //SEG133 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG135 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -3354,23 +3741,23 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG134 [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG136 [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG135 mulf8u_prepared::@return + //SEG137 mulf8u_prepared::@return breturn: - //SEG136 [80] return + //SEG138 [82] return rts } -//SEG137 mulf8u_prepare +//SEG139 mulf8u_prepare mulf8u_prepare: { .label memA = $fd - //SEG138 [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG140 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG139 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG141 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -3378,53 +3765,53 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG140 mulf8u_prepare::@return + //SEG142 mulf8u_prepare::@return breturn: - //SEG141 [84] return + //SEG143 [86] return rts } -//SEG142 init +//SEG144 init init: { .label sprites_ptr = SCREEN+$3f8 - //SEG143 [86] call mulf_init - //SEG144 [94] phi from init to mulf_init [phi:init->mulf_init] + //SEG145 [88] call mulf_init + //SEG146 [96] phi from init to mulf_init [phi:init->mulf_init] mulf_init_from_init: jsr mulf_init jmp b3 - //SEG145 init::@3 + //SEG147 init::@3 b3: - //SEG146 [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG148 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG147 [88] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG149 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] b1_from_b3: - //SEG148 [88] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 + //SEG150 [90] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG149 [88] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG151 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG150 [88] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG152 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG151 init::@1 + //SEG153 init::@1 b1: - //SEG152 [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG154 [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta sprites_ptr,x - //SEG153 [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG155 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG154 [91] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG156 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG155 [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG157 [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1_from_b1 jmp breturn - //SEG156 init::@return + //SEG158 init::@return breturn: - //SEG157 [93] return + //SEG159 [95] return rts } -//SEG158 mulf_init +//SEG160 mulf_init mulf_init: { .label sqr1_hi = 7 .label sqr = 9 @@ -3433,81 +3820,81 @@ mulf_init: { .label sqr2_hi = 7 .label sqr2_lo = 5 .label dir = 2 - //SEG159 [95] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG161 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG160 [95] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG162 [97] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG161 [95] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG163 [97] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG162 [95] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG164 [97] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG163 [95] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG165 [97] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG164 [95] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG166 [97] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG165 [95] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG167 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG166 [95] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG167 [95] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG168 [95] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG169 [95] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG170 [95] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG168 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG169 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG170 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG171 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG172 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG171 mulf_init::@1 + //SEG173 mulf_init::@1 b1: - //SEG172 [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG174 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG173 [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG175 [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG174 [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG176 [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG175 mulf_init::@5 + //SEG177 mulf_init::@5 b5: - //SEG176 [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG178 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG177 [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG179 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG178 [101] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG180 [103] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG179 [101] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG180 [101] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG181 [103] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG182 [103] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG181 mulf_init::@2 + //SEG183 mulf_init::@2 b2: - //SEG182 [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG184 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG183 [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG185 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG184 [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG186 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG185 [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG187 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG186 [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG188 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG187 [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG189 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -3515,80 +3902,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG188 [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG190 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG189 [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG191 [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG192 [112] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG191 [110] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG193 [112] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG192 [110] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG194 [112] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG193 [110] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG195 [112] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG194 [110] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG196 [112] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG195 [110] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG197 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG196 [110] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG197 [110] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG198 [110] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG199 [110] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG198 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG199 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG200 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG201 [112] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG200 mulf_init::@3 + //SEG202 mulf_init::@3 b3: - //SEG201 [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG203 [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG202 [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG204 [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG203 [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG205 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG204 [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG206 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG205 [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG207 [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG206 [116] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG208 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG207 [116] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG209 [118] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG208 mulf_init::@4 + //SEG210 mulf_init::@4 b4: - //SEG209 [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG211 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG210 [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG212 [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -3596,27 +3983,27 @@ mulf_init: { cmp #mulf_init::@12] + //SEG218 [124] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG217 mulf_init::@12 + //SEG219 mulf_init::@12 b12: - //SEG218 [116] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG220 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG219 [116] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG221 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } .align $100 @@ -3648,8 +4035,8 @@ mulf_init: { ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b12 -Removing instruction jmp b15 +Removing instruction jmp b13 +Removing instruction jmp b16 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp breturn @@ -3691,6 +4078,8 @@ Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction ldy i Removing instruction lda xpos+1 +Removing instruction lda m+1 +Removing instruction lda m+1 Removing instruction lda memA Removing instruction lda #>0 Replacing instruction ldx #0 with TAX @@ -3710,8 +4099,8 @@ Replacing label b12_from_b3 with b12 Replacing label b3_from_b4 with b3 Replacing label b3_from_b4 with b3 Removing instruction bbegin: -Removing instruction b12: -Removing instruction bend_from_b15: +Removing instruction b13: +Removing instruction bend_from_b16: Removing instruction b1_from_main: Removing instruction anim_from_b1: Removing instruction b1: @@ -3731,7 +4120,7 @@ Removing instruction b3_from_b4: Removing instruction b12_from_b3: Removing instruction b4_from_b12: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b15: +Removing instruction b16: Removing instruction bend: Removing instruction init_from_main: Removing instruction b1: @@ -3786,20 +4175,71 @@ Succesful ASM optimization Pass5UnreachableCodeElimination Fixing long branch [133] bne b7 to beq FINAL SYMBOL TABLE -(label) @12 -(label) @15 +(label) @13 +(label) @16 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS (byte*) COS (const byte*) COS#0 COS = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y (byte) LIGHT_BLUE (const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) 14 +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SIN @@ -3810,12 +4250,31 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 (byte*) SPRITES_ENABLE (const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264 (byte*) SPRITES_XPOS (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) anim() (signed word~) anim::$10 $10 zp ZP_WORD:5 202.0 (signed word~) anim::$11 $11 zp ZP_WORD:5 202.0 @@ -3889,9 +4348,11 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) +(byte~) mulf8s_prepared::$10 reg byte a 20.0 (byte~) mulf8s_prepared::$11 reg byte a 4.0 (byte~) mulf8s_prepared::$15 reg byte a 4.0 (byte~) mulf8s_prepared::$16 reg byte a 4.0 +(byte~) mulf8s_prepared::$4 reg byte a 20.0 (byte~) mulf8s_prepared::$5 reg byte a 4.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 @@ -3904,13 +4365,13 @@ FINAL SYMBOL TABLE (signed byte) mulf8s_prepared::b#1 reg byte y 202.0 (signed byte) mulf8s_prepared::b#2 reg byte y 202.0 (signed byte) mulf8s_prepared::b#3 reg byte y 202.0 -(signed byte) mulf8s_prepared::b#4 reg byte y 31.23076923076923 +(signed byte) mulf8s_prepared::b#4 reg byte y 29.0 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 m zp ZP_WORD:5 2.0 (word) mulf8s_prepared::m#1 m zp ZP_WORD:5 4.0 (word) mulf8s_prepared::m#2 m zp ZP_WORD:5 4.0 (word) mulf8s_prepared::m#4 m zp ZP_WORD:5 0.6666666666666666 -(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.5 +(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.4 (signed byte*) mulf8s_prepared::memA (const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253 (signed word) mulf8s_prepared::return @@ -4011,8 +4472,10 @@ reg byte a [ anim::$22 ] reg byte y [ anim::ypos#0 ] reg byte x [ anim::i2#0 ] reg byte a [ anim::$25 ] +reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] +reg byte a [ mulf8s_prepared::$10 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] reg byte a [ mulf_init::$2 ] @@ -4042,20 +4505,20 @@ Score: 34706 .label SPRITE = $3000 .label SIN = COS+$40 //SEG2 @begin -//SEG3 @12 +//SEG3 @13 //SEG4 kickasm(location (const byte*) COS#0) {{ { .var min = -$7fff .var max = $7fff .var ampl = max-min; .for(var i=0;i<$140;i++) { .var rad = i*2*PI/256; .byte >round(min+(ampl/2)+(ampl/2)*cos(rad)) } } }} -//SEG5 @15 +//SEG5 @16 //SEG6 kickasm(location (const byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff)) .for (var y=0; y<21; y++) .for (var x=0;x<3; x++) .byte pic.getSinglecolorByte(x,y) }} //SEG7 [3] call main jsr main -//SEG8 [4] phi from @15 to @end [phi:@15->@end] +//SEG8 [4] phi from @16 to @end [phi:@16->@end] //SEG9 @end //SEG10 main main: { //SEG11 asm { sei } sei //SEG12 [6] call init - //SEG13 [85] phi from main to init [phi:main->init] + //SEG13 [87] phi from main to init [phi:main->init] jsr init //SEG14 [7] phi from main to main::@1 [phi:main->main::@1] //SEG15 main::@1 @@ -4119,8 +4582,8 @@ anim: { ldy angle lda COS,y //SEG39 [18] call mulf8u_prepare - //SEG40 [81] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] - //SEG41 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG40 [83] phi from anim::mulf8s_prepare1 to mulf8u_prepare [phi:anim::mulf8s_prepare1->mulf8u_prepare] + //SEG41 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:anim::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare //SEG42 anim::@17 //SEG43 [19] (signed byte) mulf8s_prepared::b#0 ← (signed byte) anim::x#0 -- vbsyy=vbsz1 @@ -4162,8 +4625,8 @@ anim: { ldy angle lda SIN,y //SEG61 [30] call mulf8u_prepare - //SEG62 [81] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] - //SEG63 [81] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy + //SEG62 [83] phi from anim::mulf8s_prepare2 to mulf8u_prepare [phi:anim::mulf8s_prepare2->mulf8u_prepare] + //SEG63 [83] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#4 [phi:anim::mulf8s_prepare2->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare //SEG64 anim::@18 //SEG65 [31] (signed byte) mulf8s_prepared::b#2 ← (signed byte) anim::y#0 -- vbsyy=vbsz1 @@ -4298,45 +4761,47 @@ mulf8s_prepared: { cmp #0 bpl b1 //SEG114 mulf8s_prepared::@3 - //SEG115 [67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG115 [67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG116 [68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy + //SEG116 [68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG117 [69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG117 [69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG118 [70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG118 [70] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] - //SEG119 [70] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy - //SEG120 mulf8s_prepared::@1 + //SEG119 [71] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG120 [71] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG121 mulf8s_prepared::@1 b1: - //SEG121 [71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 + //SEG122 [72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2 - //SEG122 mulf8s_prepared::@4 - //SEG123 [72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG123 mulf8s_prepared::@4 + //SEG124 [73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG124 [73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG125 [74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG126 [75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG125 [74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG127 [76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG126 [75] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - //SEG127 [75] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - //SEG128 mulf8s_prepared::@2 + //SEG128 [77] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG129 [77] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG130 mulf8s_prepared::@2 b2: - //SEG129 mulf8s_prepared::@return - //SEG130 [76] return + //SEG131 mulf8s_prepared::@return + //SEG132 [78] return rts } -//SEG131 mulf8u_prepared +//SEG133 mulf8u_prepared mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = 5 - //SEG132 [77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy + //SEG134 [79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4 -- _deref_pbuc1=vbuyy sty memB - //SEG133 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG135 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -4349,63 +4814,63 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG134 [79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG136 [81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 - //SEG135 mulf8u_prepared::@return - //SEG136 [80] return + //SEG137 mulf8u_prepared::@return + //SEG138 [82] return rts } -//SEG137 mulf8u_prepare +//SEG139 mulf8u_prepare mulf8u_prepare: { .label memA = $fd - //SEG138 [82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG140 [84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG139 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG141 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 eor #$ff sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 - //SEG140 mulf8u_prepare::@return - //SEG141 [84] return + //SEG142 mulf8u_prepare::@return + //SEG143 [86] return rts } -//SEG142 init +//SEG144 init init: { .label sprites_ptr = SCREEN+$3f8 - //SEG143 [86] call mulf_init - //SEG144 [94] phi from init to mulf_init [phi:init->mulf_init] + //SEG145 [88] call mulf_init + //SEG146 [96] phi from init to mulf_init [phi:init->mulf_init] jsr mulf_init - //SEG145 init::@3 - //SEG146 [87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 + //SEG147 init::@3 + //SEG148 [89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255 -- _deref_pbuc1=vbuc2 lda #$ff sta SPRITES_ENABLE - //SEG147 [88] phi from init::@3 to init::@1 [phi:init::@3->init::@1] - //SEG148 [88] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 + //SEG149 [90] phi from init::@3 to init::@1 [phi:init::@3->init::@1] + //SEG150 [90] phi (byte) init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init::@3->init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG149 [88] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG150 [88] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG151 init::@1 + //SEG151 [90] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG152 [90] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG153 init::@1 b1: - //SEG152 [89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG154 [91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64 -- pbuc1_derefidx_vbuxx=vbuc2 lda #$ff&SPRITE/$40 sta sprites_ptr,x - //SEG153 [90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG155 [92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #GREEN sta SPRITES_COLS,x - //SEG154 [91] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx + //SEG156 [93] (byte) init::i#1 ← ++ (byte) init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG155 [92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG157 [94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b1 - //SEG156 init::@return - //SEG157 [93] return + //SEG158 init::@return + //SEG159 [95] return rts } -//SEG158 mulf_init +//SEG160 mulf_init mulf_init: { .label sqr1_hi = 7 .label sqr = 9 @@ -4414,70 +4879,70 @@ mulf_init: { .label sqr2_hi = 7 .label sqr2_lo = 5 .label dir = 2 - //SEG159 [95] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG160 [95] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG161 [97] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG162 [97] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG161 [95] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG163 [97] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG162 [95] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG164 [97] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG163 [95] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG165 [97] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr sta sqr+1 - //SEG164 [95] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG166 [97] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG165 [95] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG166 [95] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG167 [95] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG168 [95] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG169 [95] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG170 [95] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG171 mulf_init::@1 + //SEG167 [97] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG168 [97] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG169 [97] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG170 [97] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG171 [97] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG172 [97] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG173 mulf_init::@1 b1: - //SEG172 [96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG174 [98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG173 [97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG175 [99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG174 [98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG176 [100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG175 mulf_init::@5 - //SEG176 [99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG177 mulf_init::@5 + //SEG178 [101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG177 [100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG179 [102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG178 [101] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] - //SEG179 [101] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG180 [101] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy - //SEG181 mulf_init::@2 + //SEG180 [103] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG181 [103] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG182 [103] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG183 mulf_init::@2 b2: - //SEG182 [102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG184 [104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG183 [103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG185 [105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG184 [104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG186 [106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG185 [105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG187 [107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG186 [106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG188 [108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG187 [107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG189 [109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -4485,93 +4950,93 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG188 [108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG190 [110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG189 [109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG191 [111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@3] - //SEG191 [110] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG192 [112] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG193 [112] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG192 [110] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG194 [112] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG193 [110] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG195 [112] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG194 [110] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG196 [112] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG195 [110] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] - //SEG196 [110] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG197 [110] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG198 [110] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG199 [110] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy - //SEG200 mulf_init::@3 + //SEG197 [112] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG198 [112] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG199 [112] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG200 [112] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG201 [112] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG202 mulf_init::@3 b3: - //SEG201 [111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG203 [113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG202 [112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG204 [114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG203 [113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG205 [115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG204 [114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG206 [116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG205 [115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG207 [117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG206 [116] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] - //SEG207 [116] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG208 [118] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG209 [118] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG208 mulf_init::@4 + //SEG210 mulf_init::@4 b4: - //SEG209 [117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG211 [119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG210 [118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG212 [120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #mulf_init::@12] - //SEG217 mulf_init::@12 - //SEG218 [116] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] - //SEG219 [116] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG218 [124] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG219 mulf_init::@12 + //SEG220 [118] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG221 [118] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } .align $100 mulf_sqr1_lo: .fill $200, 0 diff --git a/src/test/ref/examples/rotate/rotate.sym b/src/test/ref/examples/rotate/rotate.sym index 020dd265e..c425c1f2b 100644 --- a/src/test/ref/examples/rotate/rotate.sym +++ b/src/test/ref/examples/rotate/rotate.sym @@ -1,17 +1,68 @@ -(label) @12 -(label) @15 +(label) @13 +(label) @16 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS (byte*) COS (const byte*) COS#0 COS = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y (byte) LIGHT_BLUE (const byte) LIGHT_BLUE#0 LIGHT_BLUE = (byte/signed byte/word/signed word/dword/signed dword) 14 +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SIN @@ -22,12 +73,31 @@ (const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 (byte*) SPRITES_ENABLE (const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264 (byte*) SPRITES_XPOS (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) anim() (signed word~) anim::$10 $10 zp ZP_WORD:5 202.0 (signed word~) anim::$11 $11 zp ZP_WORD:5 202.0 @@ -101,9 +171,11 @@ (label) main::@1 (label) main::@return (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) +(byte~) mulf8s_prepared::$10 reg byte a 20.0 (byte~) mulf8s_prepared::$11 reg byte a 4.0 (byte~) mulf8s_prepared::$15 reg byte a 4.0 (byte~) mulf8s_prepared::$16 reg byte a 4.0 +(byte~) mulf8s_prepared::$4 reg byte a 20.0 (byte~) mulf8s_prepared::$5 reg byte a 4.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 @@ -116,13 +188,13 @@ (signed byte) mulf8s_prepared::b#1 reg byte y 202.0 (signed byte) mulf8s_prepared::b#2 reg byte y 202.0 (signed byte) mulf8s_prepared::b#3 reg byte y 202.0 -(signed byte) mulf8s_prepared::b#4 reg byte y 31.23076923076923 +(signed byte) mulf8s_prepared::b#4 reg byte y 29.0 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 m zp ZP_WORD:5 2.0 (word) mulf8s_prepared::m#1 m zp ZP_WORD:5 4.0 (word) mulf8s_prepared::m#2 m zp ZP_WORD:5 4.0 (word) mulf8s_prepared::m#4 m zp ZP_WORD:5 0.6666666666666666 -(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.5 +(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.4 (signed byte*) mulf8s_prepared::memA (const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253 (signed word) mulf8s_prepared::return @@ -223,8 +295,10 @@ reg byte a [ anim::$22 ] reg byte y [ anim::ypos#0 ] reg byte x [ anim::i2#0 ] reg byte a [ anim::$25 ] +reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] +reg byte a [ mulf8s_prepared::$10 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] reg byte a [ mulf_init::$2 ] diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.asm b/src/test/ref/examples/scrolllogo/scrolllogo.asm index 4ba524a94..c76e900e6 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.asm +++ b/src/test/ref/examples/scrolllogo/scrolllogo.asm @@ -317,6 +317,7 @@ sin16s_gen2: { rts } mul16s: { + .label _5 = 2 .label _6 = $e .label _16 = $e .label m = $a @@ -334,6 +335,10 @@ mul16s: { lda a+1 bpl b2 lda m+2 + sta _5 + lda m+3 + sta _5+1 + lda m+2 sta _6 lda m+3 sta _6+1 diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.cfg b/src/test/ref/examples/scrolllogo/scrolllogo.cfg index d0947cb11..6e665e408 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.cfg +++ b/src/test/ref/examples/scrolllogo/scrolllogo.cfg @@ -1,21 +1,21 @@ @begin: scope:[] from [0] phi() - to:@24 -@24: scope:[] from @begin + to:@25 +@25: scope:[] from @begin kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} - to:@27 -@27: scope:[] from @24 + to:@28 +@28: scope:[] from @25 [2] phi() [3] call main to:@end -@end: scope:[] from @27 +@end: scope:[] from @28 [4] phi() -main: scope:[main] from @27 +main: scope:[main] from @28 asm { sei } [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 @@ -254,199 +254,200 @@ mul16s::@6: scope:[mul16s] from mul16s [122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@6 - [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 + [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [126] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [127] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [128] return + [129] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [129] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [129] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [130] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [130] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [131] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [131] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [131] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [132] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [132] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [132] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [133] return + [134] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [137] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [139] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [142] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [142] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [143] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [143] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [145] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [150] call mulu16_sel - [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [146] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [151] call mulu16_sel + [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [155] call mulu16_sel - [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [156] call mulu16_sel + [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [159] call mulu16_sel - [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [160] call mulu16_sel + [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [165] call mulu16_sel - [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [166] call mulu16_sel + [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [170] call mulu16_sel - [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [171] call mulu16_sel + [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [177] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [178] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [178] return + [179] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [180] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [180] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [180] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [183] call mul16u - [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [181] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [181] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [181] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [184] call mul16u + [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [188] return + [189] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [189] phi() - [190] call divr16u - [191] (word) divr16u::return#2 ← (word) divr16u::return#0 + [190] phi() + [191] call divr16u + [192] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [193] (word) divr16u::rem#4 ← (word) rem16u#1 - [194] call divr16u - [195] (word) divr16u::return#3 ← (word) divr16u::return#0 + [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [194] (word) divr16u::rem#4 ← (word) rem16u#1 + [195] call divr16u + [196] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [198] return + [199] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [199] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [199] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [200] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [200] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [200] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [200] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [200] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [200] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [204] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [201] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [201] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [201] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [201] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [206] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 + [207] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 + [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [212] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [212] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [213] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [213] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [215] (word) rem16u#1 ← (word) divr16u::rem#11 + [216] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [216] return + [217] return to:@return fill: scope:[fill] from main::@3 main::@4 - [217] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) - [217] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) - [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [218] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) + [218] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) + [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [219] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [220] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [223] return + [224] return to:@return diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.log b/src/test/ref/examples/scrolllogo/scrolllogo.log index d4b1731a1..3a268c115 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.log +++ b/src/test/ref/examples/scrolllogo/scrolllogo.log @@ -3,22 +3,92 @@ Inlined call (byte~) main::$0 ← call toD018 (byte*) SCREEN (byte*) LOGO CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 - to:@5 -@5: scope:[] from @begin + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @4 (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@16 + to:@9 divr16u: scope:[divr16u] from div32u16u div32u16u::@2 (word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@2/(word) divr16u::divisor#1 ) (word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@2/(word) divr16u::dividend#2 ) @@ -139,6 +209,14 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3 (word) rem16u#5 ← (word) rem16u#14 return to:@return +@9: scope:[] from @6 + (word) rem16u#36 ← phi( @6/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@10 +@10: scope:[] from @9 + (word) rem16u#34 ← phi( @9/(word) rem16u#36 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@17 mul16u: scope:[mul16u] from mul16s mulu16_sel (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) (word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 ) @@ -218,6 +296,7 @@ mul16s::@3: scope:[mul16s] from mul16s::@6 (signed word) mul16s::a#5 ← phi( mul16s::@6/(signed word) mul16s::a#2 ) (signed word) mul16s::b#3 ← phi( mul16s::@6/(signed word) mul16s::b#4 ) (dword) mul16s::m#3 ← phi( mul16s::@6/(dword) mul16s::m#0 ) + (word~) mul16s::$5 ← > (dword) mul16s::m#3 (word~) mul16s::$6 ← > (dword) mul16s::m#3 (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b#3 (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 @@ -232,6 +311,7 @@ mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 (signed word) mul16s::a#3 ← phi( mul16s::@1/(signed word) mul16s::a#4 ) (dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 ) + (word~) mul16s::$11 ← > (dword) mul16s::m#5 (word~) mul16s::$12 ← > (dword) mul16s::m#5 (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a#3 (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 @@ -243,12 +323,15 @@ mul16s::@return: scope:[mul16s] from mul16s::@2 (signed dword) mul16s::return#1 ← (signed dword) mul16s::return#3 return to:@return -@16: scope:[] from @5 - (word) rem16u#32 ← phi( @5/(word) rem16u#0 ) +@17: scope:[] from @10 + (word) rem16u#32 ← phi( @10/(word) rem16u#34 ) (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 - to:@24 + (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 + to:@25 sin16s_gen2: scope:[sin16s_gen2] from main::@2 (signed word*) sin16s_gen2::sintab#6 ← phi( main::@2/(signed word*) sin16s_gen2::sintab#1 ) (word) rem16u#21 ← phi( main::@2/(word) rem16u#23 ) @@ -499,8 +582,8 @@ fill::@1: scope:[fill] from fill fill::@1 fill::@return: scope:[fill] from fill::@1 return to:@return -@24: scope:[] from @16 - (word) rem16u#31 ← phi( @16/(word) rem16u#32 ) +@25: scope:[] from @17 + (word) rem16u#31 ← phi( @17/(word) rem16u#32 ) (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40 @@ -513,12 +596,12 @@ fill::@return: scope:[fill] from fill::@1 }} (word) XSIN_SIZE#0 ← (word/signed word/dword/signed dword) 512 (signed word[XSIN_SIZE#0]) xsin#0 ← { fill( XSIN_SIZE#0, 0) } - to:@25 -main: scope:[main] from @27 - (word) xsin_idx#28 ← phi( @27/(word) xsin_idx#16 ) - (word) rem16u#37 ← phi( @27/(word) rem16u#25 ) - (byte*) LOGO#1 ← phi( @27/(byte*) LOGO#2 ) - (byte*) SCREEN#1 ← phi( @27/(byte*) SCREEN#8 ) + to:@26 +main: scope:[main] from @28 + (word) xsin_idx#28 ← phi( @28/(word) xsin_idx#16 ) + (word) rem16u#39 ← phi( @28/(word) rem16u#25 ) + (byte*) LOGO#1 ← phi( @28/(byte*) LOGO#2 ) + (byte*) SCREEN#1 ← phi( @28/(byte*) SCREEN#8 ) asm { sei } *((byte*) BORDERCOL#0) ← (byte) WHITE#0 *((byte*) BGCOL2#0) ← (byte) DARK_GREY#0 @@ -529,7 +612,7 @@ main: scope:[main] from @27 to:main::toD0181 main::toD0181: scope:[main] from main (word) xsin_idx#27 ← phi( main/(word) xsin_idx#28 ) - (word) rem16u#36 ← phi( main/(word) rem16u#37 ) + (word) rem16u#38 ← phi( main/(word) rem16u#39 ) (byte*) SCREEN#15 ← phi( main/(byte*) SCREEN#1 ) (byte*) main::toD0181_gfx#1 ← phi( main/(byte*) main::toD0181_gfx#0 ) (byte*) main::toD0181_screen#1 ← phi( main/(byte*) main::toD0181_screen#0 ) @@ -546,14 +629,14 @@ main::toD0181: scope:[main] from main to:main::toD0181_@return main::toD0181_@return: scope:[main] from main::toD0181 (word) xsin_idx#26 ← phi( main::toD0181/(word) xsin_idx#27 ) - (word) rem16u#35 ← phi( main::toD0181/(word) rem16u#36 ) + (word) rem16u#37 ← phi( main::toD0181/(word) rem16u#38 ) (byte*) SCREEN#9 ← phi( main::toD0181/(byte*) SCREEN#15 ) (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 to:main::@3 main::@3: scope:[main] from main::toD0181_@return (word) xsin_idx#25 ← phi( main::toD0181_@return/(word) xsin_idx#26 ) - (word) rem16u#34 ← phi( main::toD0181_@return/(word) rem16u#35 ) + (word) rem16u#35 ← phi( main::toD0181_@return/(word) rem16u#37 ) (byte*) SCREEN#2 ← phi( main::toD0181_@return/(byte*) SCREEN#9 ) (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 ) (byte~) main::$0 ← (byte) main::toD0181_return#3 @@ -566,7 +649,7 @@ main::@3: scope:[main] from main::toD0181_@return to:main::@4 main::@4: scope:[main] from main::@3 (word) xsin_idx#24 ← phi( main::@3/(word) xsin_idx#25 ) - (word) rem16u#33 ← phi( main::@3/(word) rem16u#34 ) + (word) rem16u#33 ← phi( main::@3/(word) rem16u#35 ) (byte*) SCREEN#16 ← phi( main::@3/(byte*) SCREEN#2 ) (byte/word/dword~) main::$2 ← (byte) WHITE#0 | (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) fill::start#1 ← (byte*) COLS#0 @@ -620,12 +703,12 @@ main::@return: scope:[main] from main::@7 (word) xsin_idx#1 ← (word) xsin_idx#8 return to:@return -@25: scope:[] from @24 - (word) rem16u#28 ← phi( @24/(word) rem16u#31 ) - (byte*) LOGO#3 ← phi( @24/(byte*) LOGO#0 ) - (byte*) SCREEN#21 ← phi( @24/(byte*) SCREEN#0 ) +@26: scope:[] from @25 + (word) rem16u#28 ← phi( @25/(word) rem16u#31 ) + (byte*) LOGO#3 ← phi( @25/(byte*) LOGO#0 ) + (byte*) SCREEN#21 ← phi( @25/(byte*) SCREEN#0 ) (word) xsin_idx#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@27 + to:@28 loop: scope:[loop] from main::@6 (byte*) SCREEN#35 ← phi( main::@6/(byte*) SCREEN#37 ) (word) xsin_idx#18 ← phi( main::@6/(word) xsin_idx#13 ) @@ -844,63 +927,162 @@ render_logo::@35: scope:[render_logo] from render_logo::@18 render_logo::@return: scope:[render_logo] from render_logo::@15 render_logo::@6 return to:@return -@27: scope:[] from @25 - (word) xsin_idx#16 ← phi( @25/(word) xsin_idx#2 ) - (word) rem16u#25 ← phi( @25/(word) rem16u#28 ) - (byte*) LOGO#2 ← phi( @25/(byte*) LOGO#3 ) - (byte*) SCREEN#8 ← phi( @25/(byte*) SCREEN#21 ) +@28: scope:[] from @26 + (word) xsin_idx#16 ← phi( @26/(word) xsin_idx#2 ) + (word) rem16u#25 ← phi( @26/(word) rem16u#28 ) + (byte*) LOGO#2 ← phi( @26/(byte*) LOGO#3 ) + (byte*) SCREEN#8 ← phi( @26/(byte*) SCREEN#21 ) call main - to:@28 -@28: scope:[] from @27 - (word) xsin_idx#12 ← phi( @27/(word) xsin_idx#1 ) - (word) rem16u#19 ← phi( @27/(word) rem16u#9 ) + to:@29 +@29: scope:[] from @28 + (word) xsin_idx#12 ← phi( @28/(word) xsin_idx#1 ) + (word) rem16u#19 ← phi( @28/(word) rem16u#9 ) (word) rem16u#10 ← (word) rem16u#19 (word) xsin_idx#6 ← (word) xsin_idx#12 to:@end -@end: scope:[] from @28 +@end: scope:[] from @29 SYMBOL TABLE SSA (byte/word/signed word/dword/signed dword~) $0 (byte/signed word/word/dword/signed dword~) $1 -(label) @16 -(label) @24 +(label) @10 +(label) @17 (label) @25 -(label) @27 +(label) @26 (label) @28 -(label) @5 +(label) @29 +(label) @4 +(label) @6 +(label) @9 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 (byte*) BGCOL2 (byte*) BGCOL2#0 (byte*) BGCOL3 (byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte) BLACK (byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 (byte*) COLS (byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 (byte*) D016 (byte*) D016#0 (byte*) D018 (byte*) D018#0 (byte) DARK_GREY (byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 (byte*) LOGO (byte*) LOGO#0 (byte*) LOGO#1 (byte*) LOGO#2 (byte*) LOGO#3 +(byte) ORANGE +(byte) ORANGE#0 +(word) PI2_u4f12 +(word) PI2_u4f12#0 (dword) PI2_u4f28 (dword) PI2_u4f28#0 +(byte) PINK +(byte) PINK#0 +(word) PI_HALF_u4f12 +(word) PI_HALF_u4f12#0 (dword) PI_HALF_u4f28 (dword) PI_HALF_u4f28#0 +(word) PI_u4f12 +(word) PI_u4f12#0 (dword) PI_u4f28 (dword) PI_u4f28#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -943,12 +1125,56 @@ SYMBOL TABLE SSA (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 (byte) VIC_MCM (byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 (byte) WHITE (byte) WHITE#0 (word) XSIN_SIZE (word) XSIN_SIZE#0 +(byte) YELLOW +(byte) YELLOW#0 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (word~) div32u16u::$0 (word~) div32u16u::$1 @@ -1150,6 +1376,7 @@ SYMBOL TABLE SSA (word~) mul16s::$0 (word~) mul16s::$1 (bool~) mul16s::$10 +(word~) mul16s::$11 (word~) mul16s::$12 (word~) mul16s::$13 (word~) mul16s::$14 @@ -1159,6 +1386,7 @@ SYMBOL TABLE SSA (dword~) mul16s::$2 (bool~) mul16s::$3 (bool~) mul16s::$4 +(word~) mul16s::$5 (word~) mul16s::$6 (word~) mul16s::$7 (word~) mul16s::$8 @@ -1288,6 +1516,8 @@ SYMBOL TABLE SSA (word) mulu16_sel::v2#3 (word) mulu16_sel::v2#4 (word) mulu16_sel::v2#5 +(signed word) rem16s +(signed word) rem16s#0 (word) rem16u (word) rem16u#0 (word) rem16u#1 @@ -1321,12 +1551,18 @@ SYMBOL TABLE SSA (word) rem16u#35 (word) rem16u#36 (word) rem16u#37 +(word) rem16u#38 +(word) rem16u#39 (word) rem16u#4 (word) rem16u#5 (word) rem16u#6 (word) rem16u#7 (word) rem16u#8 (word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (void()) render_logo((signed word) render_logo::xpos) (byte~) render_logo::$0 (byte~) render_logo::$1 @@ -1668,6 +1904,7 @@ Alias (word) divr16u::return#3 = (word) divr16u::return#6 Alias (word) rem16u#13 = (word) rem16u#4 (word) rem16u#14 (word) rem16u#5 Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword) div32u16u::return#3 (dword) div32u16u::return#1 +Alias (word) rem16u#0 = (word) rem16u#36 (word) rem16u#34 (word) rem16u#32 (word) rem16u#31 (word) rem16u#28 (word) rem16u#25 Alias (word) mul16u::a#3 = (word) mul16u::a#4 (word) mul16u::a#7 Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#4 (dword) mul16u::return#1 @@ -1685,7 +1922,6 @@ Alias (signed dword) mul16s::return#0 = (signed dword~) mul16s::$15 (signed dwor Alias (dword) mul16s::m#5 = (dword) mul16s::m#6 Alias (signed word) mul16s::a#3 = (signed word) mul16s::a#4 Alias (word~) mul16s::$17 = (word~) mul16s::$14 -Alias (word) rem16u#0 = (word) rem16u#32 (word) rem16u#31 (word) rem16u#28 (word) rem16u#25 Alias (signed word) sin16s_gen2::ampl#0 = (signed word~) sin16s_gen2::$0 (signed word) sin16s_gen2::ampl#3 Alias (signed word) sin16s_gen2::offs#0 = (signed word~) sin16s_gen2::$2 (signed word) sin16s_gen2::offs#4 Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 @@ -1738,7 +1974,7 @@ Alias (byte*) fill::addr#0 = (byte*) fill::start#2 Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 Alias (byte*) SCREEN#1 = (byte*) SCREEN#15 (byte*) SCREEN#9 (byte*) SCREEN#2 (byte*) SCREEN#16 (byte*) SCREEN#10 -Alias (word) rem16u#30 = (word) rem16u#36 (word) rem16u#37 (word) rem16u#35 (word) rem16u#34 (word) rem16u#33 +Alias (word) rem16u#30 = (word) rem16u#38 (word) rem16u#39 (word) rem16u#37 (word) rem16u#35 (word) rem16u#33 Alias (word) xsin_idx#23 = (word) xsin_idx#27 (word) xsin_idx#28 (word) xsin_idx#26 (word) xsin_idx#25 (word) xsin_idx#24 Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0 Alias (byte) fill::val#1 = (byte/word/dword~) main::$2 @@ -1897,26 +2133,99 @@ Simple Condition (bool~) render_logo::$24 unroll if((byte) render_logo::line#6!= Simple Condition (bool~) render_logo::$25 if((byte) render_logo::screen_idx#14!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@16 Simple Condition (bool~) render_logo::$28 unroll if((byte) render_logo::line#8!=rangelast(0,5)) goto render_logo::@18 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 Constant (const byte*) BGCOL2#0 = ((byte*))53282 Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 Constant (const byte*) D016#0 = ((byte*))53270 Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte) BLACK#0 = 0 Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte) rem8u#0 = 0 Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const dword) mul16u::res#0 = 0 Constant (const dword) PI2_u4f28#0 = 1686629713 Constant (const dword) PI_u4f28#0 = 843314857 Constant (const dword) PI_HALF_u4f28#0 = 421657428 +Constant (const word) PI2_u4f12#0 = 25736 +Constant (const word) PI_u4f12#0 = 12868 +Constant (const word) PI_HALF_u4f12#0 = 6434 Constant (const dword) sin16s_gen2::x#0 = 0 Constant (const word) sin16s_gen2::i#0 = 0 Constant (const byte) sin16s::isUpper#0 = 0 @@ -1999,6 +2308,7 @@ Eliminating Noop Cast (signed word~) sin16s::$20 ← ((signed word)) (word) sin1 Eliminating Noop Cast (byte) render_logo::logo_idx#0 ← ((byte)) (signed byte~) render_logo::$17 Eliminating Noop Cast (byte) render_logo::logo_start#0 ← ((byte)) (signed byte) render_logo::x_char#0 Successful SSA optimization Pass2NopCastElimination +Eliminating variable (word~) mul16s::$11 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$12 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$17 from unused block mul16s::@4 Eliminating variable (dword) mul16s::m#2 from unused block mul16s::@4 @@ -2018,13 +2328,16 @@ Resolved ranged next value render_logo::line#6 ← ++ render_logo::line#11 to ++ Resolved ranged comparison value unroll if(render_logo::line#6!=rangelast(0,5)) goto render_logo::@14 to (byte/signed byte/word/signed word/dword/signed dword) 6 Resolved ranged next value render_logo::line#8 ← ++ render_logo::line#12 to ++ Resolved ranged comparison value unroll if(render_logo::line#8!=rangelast(0,5)) goto render_logo::@18 to (byte/signed byte/word/signed word/dword/signed dword) 6 -Culled Empty Block (label) @5 +Culled Empty Block (label) @4 +Culled Empty Block (label) @6 +Culled Empty Block (label) @9 +Culled Empty Block (label) @10 Culled Empty Block (label) mul16u::@3 -Culled Empty Block (label) @16 +Culled Empty Block (label) @17 Culled Empty Block (label) main::toD0181_@return Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@7 -Culled Empty Block (label) @25 +Culled Empty Block (label) @26 Culled Empty Block (label) loop::@2 Culled Empty Block (label) loop::@5 Culled Empty Block (label) render_logo::@19 @@ -2033,7 +2346,7 @@ Culled Empty Block (label) render_logo::@4 Culled Empty Block (label) render_logo::@7 Culled Empty Block (label) render_logo::@12 Culled Empty Block (label) render_logo::@16 -Culled Empty Block (label) @28 +Culled Empty Block (label) @29 Successful SSA optimization Pass2CullEmptyBlocks Alias (dword) div32u16u::return#0 = (dword~) div32u16u::$4 Alias (dword) mul16s::m#4 = (dword) mul16s::m#5 @@ -2061,7 +2374,7 @@ Constant (const byte) render_logo::line#2 = ++render_logo::line#1 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) render_logo::$9 = SCREEN#0+render_logo::$8 Successful SSA optimization Pass2ConstantIdentification -if() condition always true - replacing block destination [165] if((const byte) render_logo::line#2!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@5_1 +if() condition always true - replacing block destination [166] if((const byte) render_logo::line#2!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto render_logo::@5_1 Successful SSA optimization Pass2ConstantIfs Unrolling loop Loop head: render_logo::@9 tails: render_logo::@9 blocks: render_logo::@9 Successful SSA optimization Pass2LoopUnroll @@ -2632,7 +2945,7 @@ Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u:: Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @27 +Adding NOP phi() at start of @28 Adding NOP phi() at start of @end Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of main::@4 @@ -2648,9 +2961,9 @@ Calls in [main] to fill:13 fill:15 sin16s_gen2:21 loop:23 Calls in [loop] to render_logo:33 Calls in [sin16s_gen2] to div32u16u:110 sin16s:115 mul16s:118 Calls in [mul16s] to mul16u:133 -Calls in [sin16s] to mulu16_sel:177 mulu16_sel:184 mulu16_sel:189 mulu16_sel:197 mulu16_sel:204 -Calls in [mulu16_sel] to mul16u:222 -Calls in [div32u16u] to divr16u:229 divr16u:234 +Calls in [sin16s] to mulu16_sel:178 mulu16_sel:185 mulu16_sel:190 mulu16_sel:198 mulu16_sel:205 +Calls in [mulu16_sel] to mul16u:223 +Calls in [div32u16u] to divr16u:230 divr16u:235 Created 38 initial phi equivalence classes Coalesced [25] main::ch#3 ← main::ch#1 @@ -2667,46 +2980,46 @@ Coalesced [108] render_logo::screen_idx#26 ← render_logo::screen_idx#4 Coalesced [129] sin16s_gen2::x#5 ← sin16s_gen2::x#1 Coalesced [130] sin16s_gen2::sintab#7 ← sin16s_gen2::sintab#0 Coalesced [131] sin16s_gen2::i#5 ← sin16s_gen2::i#1 -Coalesced [140] mul16s::m#7 ← mul16s::m#1 -Coalesced [144] mul16s::m#8 ← mul16s::m#0 -Coalesced [147] mul16u::a#10 ← mul16u::a#6 -Coalesced [148] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [155] mul16u::res#9 ← mul16u::res#1 -Coalesced [159] mul16u::a#11 ← mul16u::a#0 -Coalesced [160] mul16u::res#7 ← mul16u::res#6 -Coalesced [161] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [162] mul16u::res#8 ← mul16u::res#2 -Coalesced [165] sin16s::x#9 ← sin16s::x#1 -Coalesced [169] sin16s::x#11 ← sin16s::x#2 -Coalesced [175] mulu16_sel::v1#8 ← mulu16_sel::v1#0 -Coalesced [176] mulu16_sel::v2#8 ← mulu16_sel::v2#0 -Coalesced [182] mulu16_sel::v1#9 ← mulu16_sel::v1#1 -Coalesced [183] mulu16_sel::v2#9 ← mulu16_sel::v2#1 -Coalesced [188] mulu16_sel::v1#10 ← mulu16_sel::v1#2 -Coalesced [195] mulu16_sel::v1#6 ← mulu16_sel::v1#3 -Coalesced [196] mulu16_sel::v2#6 ← mulu16_sel::v2#3 -Coalesced [202] mulu16_sel::v1#7 ← mulu16_sel::v1#4 -Coalesced [203] mulu16_sel::v2#7 ← mulu16_sel::v2#4 -Coalesced [211] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [215] sin16s::x#10 ← sin16s::x#4 -Coalesced [216] sin16s::x#8 ← sin16s::x#0 -Coalesced [220] mul16u::b#3 ← mul16u::b#1 -Coalesced [221] mul16u::a#9 ← mul16u::a#2 -Coalesced [233] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [240] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [241] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [248] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [255] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [256] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [262] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [263] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [264] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [265] divr16u::i#7 ← divr16u::i#1 -Coalesced [266] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [267] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [268] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [271] fill::addr#3 ← fill::addr#0 -Coalesced [277] fill::addr#4 ← fill::addr#1 +Coalesced [141] mul16s::m#7 ← mul16s::m#1 +Coalesced [145] mul16s::m#8 ← mul16s::m#0 +Coalesced [148] mul16u::a#10 ← mul16u::a#6 +Coalesced [149] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [156] mul16u::res#9 ← mul16u::res#1 +Coalesced [160] mul16u::a#11 ← mul16u::a#0 +Coalesced [161] mul16u::res#7 ← mul16u::res#6 +Coalesced [162] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [163] mul16u::res#8 ← mul16u::res#2 +Coalesced [166] sin16s::x#9 ← sin16s::x#1 +Coalesced [170] sin16s::x#11 ← sin16s::x#2 +Coalesced [176] mulu16_sel::v1#8 ← mulu16_sel::v1#0 +Coalesced [177] mulu16_sel::v2#8 ← mulu16_sel::v2#0 +Coalesced [183] mulu16_sel::v1#9 ← mulu16_sel::v1#1 +Coalesced [184] mulu16_sel::v2#9 ← mulu16_sel::v2#1 +Coalesced [189] mulu16_sel::v1#10 ← mulu16_sel::v1#2 +Coalesced [196] mulu16_sel::v1#6 ← mulu16_sel::v1#3 +Coalesced [197] mulu16_sel::v2#6 ← mulu16_sel::v2#3 +Coalesced [203] mulu16_sel::v1#7 ← mulu16_sel::v1#4 +Coalesced [204] mulu16_sel::v2#7 ← mulu16_sel::v2#4 +Coalesced [212] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [216] sin16s::x#10 ← sin16s::x#4 +Coalesced [217] sin16s::x#8 ← sin16s::x#0 +Coalesced [221] mul16u::b#3 ← mul16u::b#1 +Coalesced [222] mul16u::a#9 ← mul16u::a#2 +Coalesced [234] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [241] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [242] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [249] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [256] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [257] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [263] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [264] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [265] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [266] divr16u::i#7 ← divr16u::i#1 +Coalesced [267] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [268] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [269] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [272] fill::addr#3 ← fill::addr#0 +Coalesced [278] fill::addr#4 ← fill::addr#1 Coalesced down to 26 phi equivalence classes Culled Empty Block (label) main::@8 Culled Empty Block (label) loop::@13 @@ -2722,7 +3035,7 @@ Culled Empty Block (label) divr16u::@10 Culled Empty Block (label) divr16u::@9 Culled Empty Block (label) fill::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @27 +Adding NOP phi() at start of @28 Adding NOP phi() at start of @end Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of main::@4 @@ -2736,22 +3049,22 @@ Adding NOP phi() at start of div32u16u FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@24 -@24: scope:[] from @begin + to:@25 +@25: scope:[] from @begin kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} - to:@27 -@27: scope:[] from @24 + to:@28 +@28: scope:[] from @25 [2] phi() [3] call main to:@end -@end: scope:[] from @27 +@end: scope:[] from @28 [4] phi() -main: scope:[main] from @27 +main: scope:[main] from @28 asm { sei } [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 @@ -2990,223 +3303,294 @@ mul16s::@6: scope:[mul16s] from mul16s [122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@6 - [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 + [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [126] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [127] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [128] return + [129] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [129] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [129] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [130] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [130] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [131] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [131] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [131] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [132] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [132] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [132] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [133] return + [134] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [137] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [139] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [142] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [142] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [143] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [143] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [145] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [150] call mulu16_sel - [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [146] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [151] call mulu16_sel + [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [155] call mulu16_sel - [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [156] call mulu16_sel + [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [159] call mulu16_sel - [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [160] call mulu16_sel + [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [165] call mulu16_sel - [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [166] call mulu16_sel + [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [170] call mulu16_sel - [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [171] call mulu16_sel + [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [177] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [178] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [178] return + [179] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [180] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [180] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [180] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [183] call mul16u - [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [181] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [181] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [181] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [184] call mul16u + [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [188] return + [189] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [189] phi() - [190] call divr16u - [191] (word) divr16u::return#2 ← (word) divr16u::return#0 + [190] phi() + [191] call divr16u + [192] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [193] (word) divr16u::rem#4 ← (word) rem16u#1 - [194] call divr16u - [195] (word) divr16u::return#3 ← (word) divr16u::return#0 + [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [194] (word) divr16u::rem#4 ← (word) rem16u#1 + [195] call divr16u + [196] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [198] return + [199] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [199] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [199] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [200] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [200] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [200] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [200] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [200] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [200] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [204] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [201] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [201] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [201] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [201] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [206] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 + [207] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 + [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [212] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [212] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [213] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [213] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [215] (word) rem16u#1 ← (word) divr16u::rem#11 + [216] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [216] return + [217] return to:@return fill: scope:[fill] from main::@3 main::@4 - [217] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) - [217] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) - [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 + [218] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 ) + [218] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) + [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [219] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) - [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 - [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 + [220] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) + [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 + [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [223] return + [224] return to:@return VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 (byte*) BGCOL2 (byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS +(byte) CYAN +(byte*) D011 (byte*) D016 (byte*) D018 (byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY (byte*) LOGO +(byte) ORANGE +(word) PI2_u4f12 (dword) PI2_u4f28 +(byte) PINK +(word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 +(word) PI_u4f12 (dword) PI_u4f28 +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM (byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (word) XSIN_SIZE +(byte) YELLOW (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword) div32u16u::dividend (word) div32u16u::divisor @@ -3279,6 +3663,7 @@ VARIABLE REGISTER WEIGHTS (byte*) main::toD0181_screen (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 4.0 +(word~) mul16s::$5 20.0 (word~) mul16s::$6 4.0 (signed word) mul16s::a (signed word) mul16s::a#0 2.6 @@ -3337,8 +3722,11 @@ VARIABLE REGISTER WEIGHTS (word) mulu16_sel::v2#3 4.0 (word) mulu16_sel::v2#4 4.0 (word) mulu16_sel::v2#5 5.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 0.8 +(signed byte) rem8s +(byte) rem8u (void()) render_logo((signed word) render_logo::xpos) (byte~) render_logo::$0 4.0 (byte~) render_logo::$1 4.0 @@ -3494,6 +3882,7 @@ Added variable sin16s_gen2::$5 to zero page equivalence class [ sin16s_gen2::$5 Added variable sin16s_gen2::$6 to zero page equivalence class [ sin16s_gen2::$6 ] Added variable sin16s_gen2::$8 to zero page equivalence class [ sin16s_gen2::$8 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] +Added variable mul16s::$5 to zero page equivalence class [ mul16s::$5 ] Added variable mul16s::$6 to zero page equivalence class [ mul16s::$6 ] Added variable mul16s::$16 to zero page equivalence class [ mul16s::$16 ] Added variable mul16s::return#0 to zero page equivalence class [ mul16s::return#0 ] @@ -3583,6 +3972,7 @@ Complete equivalence classes [ sin16s_gen2::$6 ] [ sin16s_gen2::$8 ] [ mul16u::return#2 ] +[ mul16s::$5 ] [ mul16s::$6 ] [ mul16s::$16 ] [ mul16s::return#0 ] @@ -3671,38 +4061,39 @@ Allocated zp ZP_DWORD:96 [ sin16s_gen2::$5 ] Allocated zp ZP_WORD:100 [ sin16s_gen2::$6 ] Allocated zp ZP_WORD:102 [ sin16s_gen2::$8 ] Allocated zp ZP_DWORD:104 [ mul16u::return#2 ] -Allocated zp ZP_WORD:108 [ mul16s::$6 ] -Allocated zp ZP_WORD:110 [ mul16s::$16 ] -Allocated zp ZP_DWORD:112 [ mul16s::return#0 ] -Allocated zp ZP_BYTE:116 [ mul16u::$1 ] -Allocated zp ZP_DWORD:117 [ sin16s::$6 ] -Allocated zp ZP_WORD:121 [ sin16s::x1#0 ] -Allocated zp ZP_WORD:123 [ mulu16_sel::return#0 ] -Allocated zp ZP_WORD:125 [ sin16s::x2#0 ] -Allocated zp ZP_WORD:127 [ mulu16_sel::return#1 ] -Allocated zp ZP_WORD:129 [ sin16s::x3#0 ] -Allocated zp ZP_WORD:131 [ mulu16_sel::return#2 ] -Allocated zp ZP_WORD:133 [ sin16s::x3_6#0 ] -Allocated zp ZP_WORD:135 [ sin16s::usinx#0 ] -Allocated zp ZP_WORD:137 [ mulu16_sel::return#10 ] -Allocated zp ZP_WORD:139 [ sin16s::x4#0 ] -Allocated zp ZP_WORD:141 [ mulu16_sel::return#11 ] -Allocated zp ZP_WORD:143 [ sin16s::x5#0 ] -Allocated zp ZP_WORD:145 [ sin16s::x5_128#0 ] -Allocated zp ZP_WORD:147 [ sin16s::usinx#1 ] -Allocated zp ZP_DWORD:149 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:153 [ mulu16_sel::$0 ] -Allocated zp ZP_DWORD:157 [ mulu16_sel::$1 ] -Allocated zp ZP_WORD:161 [ mulu16_sel::return#12 ] -Allocated zp ZP_WORD:163 [ divr16u::return#2 ] -Allocated zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] -Allocated zp ZP_WORD:167 [ divr16u::return#3 ] -Allocated zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] -Allocated zp ZP_DWORD:171 [ div32u16u::return#0 ] -Allocated zp ZP_BYTE:175 [ divr16u::$1 ] -Allocated zp ZP_BYTE:176 [ divr16u::$2 ] -Allocated zp ZP_WORD:177 [ rem16u#1 ] -Allocated zp ZP_WORD:179 [ fill::end#0 ] +Allocated zp ZP_WORD:108 [ mul16s::$5 ] +Allocated zp ZP_WORD:110 [ mul16s::$6 ] +Allocated zp ZP_WORD:112 [ mul16s::$16 ] +Allocated zp ZP_DWORD:114 [ mul16s::return#0 ] +Allocated zp ZP_BYTE:118 [ mul16u::$1 ] +Allocated zp ZP_DWORD:119 [ sin16s::$6 ] +Allocated zp ZP_WORD:123 [ sin16s::x1#0 ] +Allocated zp ZP_WORD:125 [ mulu16_sel::return#0 ] +Allocated zp ZP_WORD:127 [ sin16s::x2#0 ] +Allocated zp ZP_WORD:129 [ mulu16_sel::return#1 ] +Allocated zp ZP_WORD:131 [ sin16s::x3#0 ] +Allocated zp ZP_WORD:133 [ mulu16_sel::return#2 ] +Allocated zp ZP_WORD:135 [ sin16s::x3_6#0 ] +Allocated zp ZP_WORD:137 [ sin16s::usinx#0 ] +Allocated zp ZP_WORD:139 [ mulu16_sel::return#10 ] +Allocated zp ZP_WORD:141 [ sin16s::x4#0 ] +Allocated zp ZP_WORD:143 [ mulu16_sel::return#11 ] +Allocated zp ZP_WORD:145 [ sin16s::x5#0 ] +Allocated zp ZP_WORD:147 [ sin16s::x5_128#0 ] +Allocated zp ZP_WORD:149 [ sin16s::usinx#1 ] +Allocated zp ZP_DWORD:151 [ mul16u::return#3 ] +Allocated zp ZP_DWORD:155 [ mulu16_sel::$0 ] +Allocated zp ZP_DWORD:159 [ mulu16_sel::$1 ] +Allocated zp ZP_WORD:163 [ mulu16_sel::return#12 ] +Allocated zp ZP_WORD:165 [ divr16u::return#2 ] +Allocated zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] +Allocated zp ZP_WORD:169 [ divr16u::return#3 ] +Allocated zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] +Allocated zp ZP_DWORD:173 [ div32u16u::return#0 ] +Allocated zp ZP_BYTE:177 [ divr16u::$1 ] +Allocated zp ZP_BYTE:178 [ divr16u::$2 ] +Allocated zp ZP_WORD:179 [ rem16u#1 ] +Allocated zp ZP_WORD:181 [ fill::end#0 ] INITIAL ASM //SEG0 Basic Upstart @@ -3728,23 +4119,23 @@ INITIAL ASM .label SCREEN = $400 .label LOGO = $2000 .const XSIN_SIZE = $200 - .label rem16u = $b1 + .label rem16u = $b3 .label xsin_idx = 3 //SEG2 @begin bbegin: - jmp b24 -//SEG3 @24 -b24: + jmp b25 +//SEG3 @25 +b25: //SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} -//SEG5 [2] phi from @24 to @27 [phi:@24->@27] -b27_from_b24: - jmp b27 -//SEG6 @27 -b27: +//SEG5 [2] phi from @25 to @28 [phi:@25->@28] +b28_from_b25: + jmp b28 +//SEG6 @28 +b28: //SEG7 [3] call main jsr main -//SEG8 [4] phi from @27 to @end [phi:@27->@end] -bend_from_b27: +//SEG8 [4] phi from @28 to @end [phi:@28->@end] +bend_from_b28: jmp bend //SEG9 @end bend: @@ -3781,12 +4172,12 @@ main: { lda #VIC_MCM sta D016 //SEG21 [13] call fill - //SEG22 [217] phi from main::@3 to fill [phi:main::@3->fill] + //SEG22 [218] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG23 [217] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 + //SEG23 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG24 [217] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG24 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -3798,12 +4189,12 @@ main: { //SEG26 main::@4 b4: //SEG27 [15] call fill - //SEG28 [217] phi from main::@4 to fill [phi:main::@4->fill] + //SEG28 [218] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //SEG29 [217] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuz1=vbuc1 + //SEG29 [218] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuz1=vbuc1 lda #WHITE|8 sta fill.val - //SEG30 [217] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG30 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -4353,7 +4744,7 @@ sin16s_gen2: { .label x = 9 .label i = $f //SEG184 [99] call div32u16u - //SEG185 [189] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG185 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG186 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 @@ -4516,10 +4907,11 @@ sin16s_gen2: { } //SEG216 mul16s mul16s: { - .label _6 = $6c - .label _16 = $6e + .label _5 = $6c + .label _6 = $6e + .label _16 = $70 .label m = $11 - .label return = $70 + .label return = $72 .label a = $5a .label return_2 = $5c //SEG217 [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 @@ -4528,10 +4920,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG218 [119] call mul16u - //SEG219 [129] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG219 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG220 [129] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG221 [129] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG220 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG221 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -4564,12 +4956,17 @@ mul16s: { jmp b3 //SEG226 mul16s::@3 b3: - //SEG227 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG227 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG228 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG228 [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG229 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 lda _6 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG229 [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG230 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG230 [126] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG231 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG231 [126] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG232 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG232 mul16s::@1 + //SEG233 mul16s::@1 b1: jmp b2 - //SEG233 mul16s::@2 + //SEG234 mul16s::@2 b2: - //SEG234 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG235 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -4602,21 +4999,21 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG235 mul16s::@return + //SEG236 mul16s::@return breturn: - //SEG236 [128] return + //SEG237 [129] return rts } -//SEG237 mul16u +//SEG238 mul16u mul16u: { - .label _1 = $74 + .label _1 = $76 .label mb = $1d .label a = $17 .label res = $19 .label return = $68 .label b = $15 - .label return_3 = $95 - //SEG238 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_3 = $97 + //SEG239 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4624,44 +5021,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG239 [131] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG240 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG240 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG241 [131] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG241 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG242 [132] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG242 [131] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG243 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG243 mul16u::@1 + //SEG244 mul16u::@1 b1: - //SEG244 [132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG245 [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG245 mul16u::@return + //SEG246 mul16u::@return breturn: - //SEG246 [133] return + //SEG247 [134] return rts - //SEG247 mul16u::@2 + //SEG248 mul16u::@2 b2: - //SEG248 [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG249 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG249 [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG250 [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG250 mul16u::@7 + //SEG251 mul16u::@7 b7: - //SEG251 [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG252 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4675,48 +5072,48 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG252 [137] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG253 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG253 [137] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG254 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG254 mul16u::@4 + //SEG255 mul16u::@4 b4: - //SEG255 [138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG256 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG256 [139] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG257 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG257 [131] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG258 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG258 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG259 [131] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG260 [131] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG259 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG260 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG261 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG261 sin16s +//SEG262 sin16s sin16s: { - .label _6 = $75 + .label _6 = $77 .label x = $22 .label return = $58 - .label x1 = $79 - .label x2 = $7d - .label x3 = $81 - .label x3_6 = $85 - .label usinx = $87 - .label x4 = $8b - .label x5 = $8f - .label x5_128 = $91 - .label usinx_1 = $93 + .label x1 = $7b + .label x2 = $7f + .label x3 = $83 + .label x3_6 = $87 + .label usinx = $89 + .label x4 = $8d + .label x5 = $91 + .label x5_128 = $93 + .label usinx_1 = $95 .label return_1 = $26 .label sinx = $26 .label isUpper = $21 .label return_5 = $26 - //SEG262 [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG263 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -4734,9 +5131,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG263 sin16s::@4 + //SEG264 sin16s::@4 b4: - //SEG264 [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG265 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG265 [142] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG266 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG266 [142] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG267 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG267 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG268 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG268 [142] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG269 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG269 [142] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG270 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG270 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG271 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG271 sin16s::@1 + //SEG272 sin16s::@1 b1: - //SEG272 [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG273 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -4784,9 +5181,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG273 sin16s::@5 + //SEG274 sin16s::@5 b5: - //SEG274 [144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG275 [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG275 [145] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG276 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG276 [145] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG277 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG277 sin16s::@2 + //SEG278 sin16s::@2 b2: - //SEG278 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG279 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 lda x sta _6 lda x+1 @@ -4824,107 +5221,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG279 [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG280 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG280 [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG281 [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG282 [150] call mulu16_sel - //SEG283 [180] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG283 [151] call mulu16_sel + //SEG284 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG284 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG285 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG285 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG286 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG286 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG287 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG287 [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG288 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return lda mulu16_sel.return_12+1 sta mulu16_sel.return+1 jmp b8 - //SEG288 sin16s::@8 + //SEG289 sin16s::@8 b8: - //SEG289 [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG290 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG290 [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG291 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG291 [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG292 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG292 [155] call mulu16_sel - //SEG293 [180] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG293 [156] call mulu16_sel + //SEG294 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG294 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG295 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG295 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG296 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG296 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG297 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG297 [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG298 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_1 lda mulu16_sel.return_12+1 sta mulu16_sel.return_1+1 jmp b9 - //SEG298 sin16s::@9 + //SEG299 sin16s::@9 b9: - //SEG299 [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG300 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 lda mulu16_sel.return_1 sta x3 lda mulu16_sel.return_1+1 sta x3+1 - //SEG300 [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG301 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG301 [159] call mulu16_sel - //SEG302 [180] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG302 [160] call mulu16_sel + //SEG303 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG303 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG304 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG304 [180] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG305 [181] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG305 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG306 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG306 [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG307 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_2 lda mulu16_sel.return_12+1 sta mulu16_sel.return_2+1 jmp b10 - //SEG307 sin16s::@10 + //SEG308 sin16s::@10 b10: - //SEG308 [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG309 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 lda mulu16_sel.return_2 sta x3_6 lda mulu16_sel.return_2+1 sta x3_6+1 - //SEG309 [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG310 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4932,71 +5329,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG310 [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG311 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG311 [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG312 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG312 [165] call mulu16_sel - //SEG313 [180] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG313 [166] call mulu16_sel + //SEG314 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG314 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG315 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG315 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG316 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG316 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG317 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG317 [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG318 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_10 lda mulu16_sel.return_12+1 sta mulu16_sel.return_10+1 jmp b11 - //SEG318 sin16s::@11 + //SEG319 sin16s::@11 b11: - //SEG319 [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG320 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 lda mulu16_sel.return_10 sta x4 lda mulu16_sel.return_10+1 sta x4+1 - //SEG320 [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG321 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG321 [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG322 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG322 [170] call mulu16_sel - //SEG323 [180] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG323 [171] call mulu16_sel + //SEG324 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG324 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG325 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG325 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG326 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG326 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG327 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG327 [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG328 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_11 lda mulu16_sel.return_12+1 sta mulu16_sel.return_11+1 jmp b12 - //SEG328 sin16s::@12 + //SEG329 sin16s::@12 b12: - //SEG329 [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG330 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 lda mulu16_sel.return_11 sta x5 lda mulu16_sel.return_11+1 sta x5+1 - //SEG330 [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG331 [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 lda x5+1 sta x5_128+1 lda x5 @@ -5007,7 +5404,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG331 [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG332 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -5015,14 +5412,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG332 [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG333 [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG333 sin16s::@6 + //SEG334 sin16s::@6 b6: - //SEG334 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG335 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -5032,57 +5429,57 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG335 [177] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG336 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG336 [177] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG337 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG337 sin16s::@3 + //SEG338 sin16s::@3 b3: jmp breturn - //SEG338 sin16s::@return + //SEG339 sin16s::@return breturn: - //SEG339 [178] return + //SEG340 [179] return rts - //SEG340 sin16s::@15 + //SEG341 sin16s::@15 b15: - //SEG341 [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG342 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b15 } -//SEG342 mulu16_sel +//SEG343 mulu16_sel mulu16_sel: { - .label _0 = $99 - .label _1 = $9d + .label _0 = $9b + .label _1 = $9f .label v1 = $28 .label v2 = $2a - .label return = $7b - .label return_1 = $7f - .label return_2 = $83 - .label return_10 = $89 - .label return_11 = $8d + .label return = $7d + .label return_1 = $81 + .label return_2 = $85 + .label return_10 = $8b + .label return_11 = $8f .label select = $2c - .label return_12 = $a1 - //SEG343 [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + .label return_12 = $a3 + //SEG344 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG344 [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG345 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG345 [183] call mul16u - //SEG346 [129] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG346 [184] call mul16u + //SEG347 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG347 [129] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG348 [129] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG348 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG349 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG349 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG350 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -5092,9 +5489,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b2 - //SEG350 mulu16_sel::@2 + //SEG351 mulu16_sel::@2 b2: - //SEG351 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG352 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -5103,7 +5500,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG352 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG353 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -5122,79 +5519,79 @@ mulu16_sel: { dex bne !- !e: - //SEG353 [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG354 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_12 lda _1+3 sta return_12+1 jmp breturn - //SEG354 mulu16_sel::@return + //SEG355 mulu16_sel::@return breturn: - //SEG355 [188] return + //SEG356 [189] return rts } -//SEG356 div32u16u +//SEG357 div32u16u div32u16u: { - .label quotient_hi = $a5 - .label quotient_lo = $a9 - .label return = $ab + .label quotient_hi = $a7 + .label quotient_lo = $ab + .label return = $ad .label return_2 = $50 - //SEG357 [190] call divr16u - //SEG358 [199] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG358 [191] call divr16u + //SEG359 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG359 [199] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG360 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG360 [199] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG361 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG361 [191] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG362 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b2 - //SEG362 div32u16u::@2 + //SEG363 div32u16u::@2 b2: - //SEG363 [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG364 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta quotient_hi lda divr16u.return_2+1 sta quotient_hi+1 - //SEG364 [193] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG365 [194] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG365 [194] call divr16u - //SEG366 [199] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG366 [195] call divr16u + //SEG367 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG367 [199] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG368 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG368 [199] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG369 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG369 [195] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG370 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b3 - //SEG370 div32u16u::@3 + //SEG371 div32u16u::@3 b3: - //SEG371 [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG372 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta quotient_lo lda divr16u.return_3+1 sta quotient_lo+1 - //SEG372 [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG373 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -5204,79 +5601,79 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG373 div32u16u::@return + //SEG374 div32u16u::@return breturn: - //SEG374 [198] return + //SEG375 [199] return rts } -//SEG375 divr16u +//SEG376 divr16u divr16u: { - .label _1 = $af - .label _2 = $b0 + .label _1 = $b1 + .label _2 = $b2 .label rem = $2d .label dividend = $2f .label quotient = $31 .label i = $33 .label return = $31 - .label return_2 = $a3 - .label return_3 = $a7 - //SEG376 [200] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $a5 + .label return_3 = $a9 + //SEG377 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG377 [200] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG378 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG378 [200] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG379 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG379 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG380 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG380 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG381 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG381 [200] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG382 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG382 [200] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG383 [200] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG384 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG385 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG383 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG384 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG385 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG386 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG386 divr16u::@1 + //SEG387 divr16u::@1 b1: - //SEG387 [201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG388 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG388 [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG389 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG389 [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG390 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG390 [204] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG391 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG391 divr16u::@4 + //SEG392 divr16u::@4 b4: - //SEG392 [205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG393 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG393 [206] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG394 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG394 [206] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG395 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG395 divr16u::@2 + //SEG396 divr16u::@2 b2: - //SEG396 [207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG397 [208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG398 [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG399 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>XSIN_SIZE bcc b3_from_b2 @@ -5286,14 +5683,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG399 divr16u::@5 + //SEG400 divr16u::@5 b5: - //SEG400 [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG401 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG401 [211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG402 [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #XSIN_SIZE sta rem+1 - //SEG402 [212] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG403 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG403 [212] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG404 [212] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG404 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG405 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG405 divr16u::@3 + //SEG406 divr16u::@3 b3: - //SEG406 [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG407 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG407 [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG408 [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 jmp b6 - //SEG408 divr16u::@6 + //SEG409 divr16u::@6 b6: - //SEG409 [215] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG410 [216] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG410 divr16u::@return + //SEG411 divr16u::@return breturn: - //SEG411 [216] return + //SEG412 [217] return rts } -//SEG412 fill +//SEG413 fill fill: { - .label end = $b3 + .label end = $b5 .label addr = $35 .label val = $34 - //SEG413 [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG414 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -5342,23 +5739,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG414 [219] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG415 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG415 [219] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG416 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG416 fill::@1 + //SEG417 fill::@1 b1: - //SEG417 [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG418 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG418 [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG419 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG419 [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG420 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -5366,9 +5763,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG420 fill::@return + //SEG421 fill::@return breturn: - //SEG421 [223] return + //SEG422 [224] return rts } .align $100 @@ -5445,71 +5842,72 @@ Statement [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s Statement [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a Statement [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a Statement [122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ mulu16_sel::select#5 ] -Statement [132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Statement [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y -Statement [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [191] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [195] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y +Statement [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [194] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [196] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] -Statement [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [215] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Statement [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [216] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ fill::val#3 ] -Statement [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:52 [ fill::val#3 ] -Statement [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a Statement [6] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) [ ] ( main:3 [ ] ) always clobbers reg byte a @@ -5570,65 +5968,66 @@ Statement [118] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s Statement [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a Statement [121] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a Statement [122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170::mul16u:183 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y -Statement [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y -Statement [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:150 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:159 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:165 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:170 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [191] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [193] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [195] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [215] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:190 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:194 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Statement [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a +Statement [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:107 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:107::mul16u:119 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171::mul16u:184 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y +Statement [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:151 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:160 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:166 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:104::mulu16_sel:171 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [194] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [196] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:99 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [216] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:99::divr16u:191 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:99::divr16u:195 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::fill:13 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::fill:15 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a +Statement [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::fill:13 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::fill:15 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::ch#2 main::ch#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] : zp ZP_WORD:3 , Potential registers zp ZP_BYTE:5 [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -5685,158 +6084,160 @@ Potential registers zp ZP_DWORD:96 [ sin16s_gen2::$5 ] : zp ZP_DWORD:96 , Potential registers zp ZP_WORD:100 [ sin16s_gen2::$6 ] : zp ZP_WORD:100 , Potential registers zp ZP_WORD:102 [ sin16s_gen2::$8 ] : zp ZP_WORD:102 , Potential registers zp ZP_DWORD:104 [ mul16u::return#2 ] : zp ZP_DWORD:104 , -Potential registers zp ZP_WORD:108 [ mul16s::$6 ] : zp ZP_WORD:108 , -Potential registers zp ZP_WORD:110 [ mul16s::$16 ] : zp ZP_WORD:110 , -Potential registers zp ZP_DWORD:112 [ mul16s::return#0 ] : zp ZP_DWORD:112 , -Potential registers zp ZP_BYTE:116 [ mul16u::$1 ] : zp ZP_BYTE:116 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:117 [ sin16s::$6 ] : zp ZP_DWORD:117 , -Potential registers zp ZP_WORD:121 [ sin16s::x1#0 ] : zp ZP_WORD:121 , -Potential registers zp ZP_WORD:123 [ mulu16_sel::return#0 ] : zp ZP_WORD:123 , -Potential registers zp ZP_WORD:125 [ sin16s::x2#0 ] : zp ZP_WORD:125 , -Potential registers zp ZP_WORD:127 [ mulu16_sel::return#1 ] : zp ZP_WORD:127 , -Potential registers zp ZP_WORD:129 [ sin16s::x3#0 ] : zp ZP_WORD:129 , -Potential registers zp ZP_WORD:131 [ mulu16_sel::return#2 ] : zp ZP_WORD:131 , -Potential registers zp ZP_WORD:133 [ sin16s::x3_6#0 ] : zp ZP_WORD:133 , -Potential registers zp ZP_WORD:135 [ sin16s::usinx#0 ] : zp ZP_WORD:135 , -Potential registers zp ZP_WORD:137 [ mulu16_sel::return#10 ] : zp ZP_WORD:137 , -Potential registers zp ZP_WORD:139 [ sin16s::x4#0 ] : zp ZP_WORD:139 , -Potential registers zp ZP_WORD:141 [ mulu16_sel::return#11 ] : zp ZP_WORD:141 , -Potential registers zp ZP_WORD:143 [ sin16s::x5#0 ] : zp ZP_WORD:143 , -Potential registers zp ZP_WORD:145 [ sin16s::x5_128#0 ] : zp ZP_WORD:145 , -Potential registers zp ZP_WORD:147 [ sin16s::usinx#1 ] : zp ZP_WORD:147 , -Potential registers zp ZP_DWORD:149 [ mul16u::return#3 ] : zp ZP_DWORD:149 , -Potential registers zp ZP_DWORD:153 [ mulu16_sel::$0 ] : zp ZP_DWORD:153 , -Potential registers zp ZP_DWORD:157 [ mulu16_sel::$1 ] : zp ZP_DWORD:157 , -Potential registers zp ZP_WORD:161 [ mulu16_sel::return#12 ] : zp ZP_WORD:161 , -Potential registers zp ZP_WORD:163 [ divr16u::return#2 ] : zp ZP_WORD:163 , -Potential registers zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:165 , -Potential registers zp ZP_WORD:167 [ divr16u::return#3 ] : zp ZP_WORD:167 , -Potential registers zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:169 , -Potential registers zp ZP_DWORD:171 [ div32u16u::return#0 ] : zp ZP_DWORD:171 , -Potential registers zp ZP_BYTE:175 [ divr16u::$1 ] : zp ZP_BYTE:175 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:176 [ divr16u::$2 ] : zp ZP_BYTE:176 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:177 [ rem16u#1 ] : zp ZP_WORD:177 , -Potential registers zp ZP_WORD:179 [ fill::end#0 ] : zp ZP_WORD:179 , +Potential registers zp ZP_WORD:108 [ mul16s::$5 ] : zp ZP_WORD:108 , +Potential registers zp ZP_WORD:110 [ mul16s::$6 ] : zp ZP_WORD:110 , +Potential registers zp ZP_WORD:112 [ mul16s::$16 ] : zp ZP_WORD:112 , +Potential registers zp ZP_DWORD:114 [ mul16s::return#0 ] : zp ZP_DWORD:114 , +Potential registers zp ZP_BYTE:118 [ mul16u::$1 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:119 [ sin16s::$6 ] : zp ZP_DWORD:119 , +Potential registers zp ZP_WORD:123 [ sin16s::x1#0 ] : zp ZP_WORD:123 , +Potential registers zp ZP_WORD:125 [ mulu16_sel::return#0 ] : zp ZP_WORD:125 , +Potential registers zp ZP_WORD:127 [ sin16s::x2#0 ] : zp ZP_WORD:127 , +Potential registers zp ZP_WORD:129 [ mulu16_sel::return#1 ] : zp ZP_WORD:129 , +Potential registers zp ZP_WORD:131 [ sin16s::x3#0 ] : zp ZP_WORD:131 , +Potential registers zp ZP_WORD:133 [ mulu16_sel::return#2 ] : zp ZP_WORD:133 , +Potential registers zp ZP_WORD:135 [ sin16s::x3_6#0 ] : zp ZP_WORD:135 , +Potential registers zp ZP_WORD:137 [ sin16s::usinx#0 ] : zp ZP_WORD:137 , +Potential registers zp ZP_WORD:139 [ mulu16_sel::return#10 ] : zp ZP_WORD:139 , +Potential registers zp ZP_WORD:141 [ sin16s::x4#0 ] : zp ZP_WORD:141 , +Potential registers zp ZP_WORD:143 [ mulu16_sel::return#11 ] : zp ZP_WORD:143 , +Potential registers zp ZP_WORD:145 [ sin16s::x5#0 ] : zp ZP_WORD:145 , +Potential registers zp ZP_WORD:147 [ sin16s::x5_128#0 ] : zp ZP_WORD:147 , +Potential registers zp ZP_WORD:149 [ sin16s::usinx#1 ] : zp ZP_WORD:149 , +Potential registers zp ZP_DWORD:151 [ mul16u::return#3 ] : zp ZP_DWORD:151 , +Potential registers zp ZP_DWORD:155 [ mulu16_sel::$0 ] : zp ZP_DWORD:155 , +Potential registers zp ZP_DWORD:159 [ mulu16_sel::$1 ] : zp ZP_DWORD:159 , +Potential registers zp ZP_WORD:163 [ mulu16_sel::return#12 ] : zp ZP_WORD:163 , +Potential registers zp ZP_WORD:165 [ divr16u::return#2 ] : zp ZP_WORD:165 , +Potential registers zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:167 , +Potential registers zp ZP_WORD:169 [ divr16u::return#3 ] : zp ZP_WORD:169 , +Potential registers zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:171 , +Potential registers zp ZP_DWORD:173 [ div32u16u::return#0 ] : zp ZP_DWORD:173 , +Potential registers zp ZP_BYTE:177 [ divr16u::$1 ] : zp ZP_BYTE:177 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:178 [ divr16u::$2 ] : zp ZP_BYTE:178 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:179 [ rem16u#1 ] : zp ZP_WORD:179 , +Potential registers zp ZP_WORD:181 [ fill::end#0 ] : zp ZP_WORD:181 , REGISTER UPLIFT SCOPES Uplift Scope [render_logo] 501.39: zp ZP_BYTE:5 [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] 494.18: zp ZP_BYTE:8 [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] 266.73: zp ZP_BYTE:7 [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] 255.87: zp ZP_BYTE:6 [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] 202: zp ZP_BYTE:67 [ render_logo::$15 ] 202: zp ZP_BYTE:68 [ render_logo::$34 ] 202: zp ZP_BYTE:69 [ render_logo::$38 ] 202: zp ZP_BYTE:70 [ render_logo::$42 ] 202: zp ZP_BYTE:71 [ render_logo::$46 ] 202: zp ZP_BYTE:72 [ render_logo::$50 ] 202: zp ZP_BYTE:74 [ render_logo::$23 ] 202: zp ZP_BYTE:75 [ render_logo::$80 ] 202: zp ZP_BYTE:76 [ render_logo::$84 ] 202: zp ZP_BYTE:77 [ render_logo::$88 ] 202: zp ZP_BYTE:78 [ render_logo::$92 ] 202: zp ZP_BYTE:79 [ render_logo::$96 ] 4: zp ZP_BYTE:61 [ render_logo::$0 ] 4: zp ZP_BYTE:62 [ render_logo::$1 ] 4: zp ZP_BYTE:63 [ render_logo::$2 ] 4: zp ZP_WORD:64 [ render_logo::$3 ] 2.43: zp ZP_WORD:59 [ render_logo::xpos#0 ] 2: zp ZP_BYTE:73 [ render_logo::$17 ] 0.36: zp ZP_BYTE:66 [ render_logo::x_char#0 ] -Uplift Scope [mul16u] 346.86: zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:116 [ mul16u::$1 ] 177.67: zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:104 [ mul16u::return#2 ] 4: zp ZP_DWORD:149 [ mul16u::return#3 ] -Uplift Scope [divr16u] 106.92: zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:175 [ divr16u::$1 ] 22: zp ZP_BYTE:176 [ divr16u::$2 ] 18.19: zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:163 [ divr16u::return#2 ] 4: zp ZP_WORD:167 [ divr16u::return#3 ] +Uplift Scope [mul16u] 346.86: zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:118 [ mul16u::$1 ] 177.67: zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:104 [ mul16u::return#2 ] 4: zp ZP_DWORD:151 [ mul16u::return#3 ] +Uplift Scope [divr16u] 106.92: zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:177 [ divr16u::$1 ] 22: zp ZP_BYTE:178 [ divr16u::$2 ] 18.19: zp ZP_BYTE:51 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:165 [ divr16u::return#2 ] 4: zp ZP_WORD:169 [ divr16u::return#3 ] Uplift Scope [sin16s_gen2] 22: zp ZP_DWORD:96 [ sin16s_gen2::$5 ] 22: zp ZP_WORD:102 [ sin16s_gen2::$8 ] 18.19: zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 11: zp ZP_WORD:100 [ sin16s_gen2::$6 ] 10.08: zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 8.5: zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.81: zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] -Uplift Scope [sin16s] 27.5: zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:88 [ sin16s::return#0 ] 13: zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:117 [ sin16s::$6 ] 4: zp ZP_WORD:125 [ sin16s::x2#0 ] 4: zp ZP_WORD:133 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:139 [ sin16s::x4#0 ] 4: zp ZP_WORD:143 [ sin16s::x5#0 ] 4: zp ZP_WORD:145 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:129 [ sin16s::x3#0 ] 1: zp ZP_WORD:147 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:121 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:135 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplift Scope [mulu16_sel] 24: zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:123 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:127 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:131 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:137 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:141 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:153 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:157 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:161 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:44 [ mulu16_sel::select#5 ] -Uplift Scope [mul16s] 22: zp ZP_DWORD:92 [ mul16s::return#2 ] 12: zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:112 [ mul16s::return#0 ] 4: zp ZP_WORD:108 [ mul16s::$6 ] 4: zp ZP_WORD:110 [ mul16s::$16 ] 2.6: zp ZP_WORD:90 [ mul16s::a#0 ] +Uplift Scope [sin16s] 27.5: zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:88 [ sin16s::return#0 ] 13: zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:119 [ sin16s::$6 ] 4: zp ZP_WORD:127 [ sin16s::x2#0 ] 4: zp ZP_WORD:135 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:141 [ sin16s::x4#0 ] 4: zp ZP_WORD:145 [ sin16s::x5#0 ] 4: zp ZP_WORD:147 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:131 [ sin16s::x3#0 ] 1: zp ZP_WORD:149 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:123 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:137 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Uplift Scope [mulu16_sel] 24: zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:125 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:129 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:133 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:139 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:143 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:155 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:159 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:163 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:44 [ mulu16_sel::select#5 ] +Uplift Scope [mul16s] 22: zp ZP_DWORD:92 [ mul16s::return#2 ] 20: zp ZP_WORD:108 [ mul16s::$5 ] 12: zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:114 [ mul16s::return#0 ] 4: zp ZP_WORD:110 [ mul16s::$6 ] 4: zp ZP_WORD:112 [ mul16s::$16 ] 2.6: zp ZP_WORD:90 [ mul16s::a#0 ] Uplift Scope [loop] 22: zp ZP_WORD:55 [ loop::$1 ] 22: zp ZP_WORD:57 [ loop::xpos#0 ] -Uplift Scope [fill] 36: zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:179 [ fill::end#0 ] 1.83: zp ZP_BYTE:52 [ fill::val#3 ] +Uplift Scope [fill] 36: zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:181 [ fill::end#0 ] 1.83: zp ZP_BYTE:52 [ fill::val#3 ] Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::ch#2 main::ch#1 ] -Uplift Scope [] 26.71: zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] 0.8: zp ZP_WORD:177 [ rem16u#1 ] -Uplift Scope [div32u16u] 4: zp ZP_DWORD:80 [ div32u16u::return#2 ] 4: zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:171 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] +Uplift Scope [] 26.71: zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] 0.8: zp ZP_WORD:179 [ rem16u#1 ] +Uplift Scope [div32u16u] 4: zp ZP_DWORD:80 [ div32u16u::return#2 ] 4: zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:173 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] -Uplifting [mul16u] best 76122 combination zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:104 [ mul16u::return#2 ] zp ZP_DWORD:149 [ mul16u::return#3 ] -Uplifting [divr16u] best 75912 combination zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:163 [ divr16u::return#2 ] zp ZP_WORD:167 [ divr16u::return#3 ] -Uplifting [sin16s_gen2] best 75912 combination zp ZP_DWORD:96 [ sin16s_gen2::$5 ] zp ZP_WORD:102 [ sin16s_gen2::$8 ] zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:100 [ sin16s_gen2::$6 ] zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] -Uplifting [sin16s] best 75912 combination zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:88 [ sin16s::return#0 ] zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:117 [ sin16s::$6 ] zp ZP_WORD:125 [ sin16s::x2#0 ] zp ZP_WORD:133 [ sin16s::x3_6#0 ] zp ZP_WORD:139 [ sin16s::x4#0 ] zp ZP_WORD:143 [ sin16s::x5#0 ] zp ZP_WORD:145 [ sin16s::x5_128#0 ] zp ZP_WORD:129 [ sin16s::x3#0 ] zp ZP_WORD:147 [ sin16s::usinx#1 ] zp ZP_WORD:121 [ sin16s::x1#0 ] zp ZP_WORD:135 [ sin16s::usinx#0 ] zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 75896 combination zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:123 [ mulu16_sel::return#0 ] zp ZP_WORD:127 [ mulu16_sel::return#1 ] zp ZP_WORD:131 [ mulu16_sel::return#2 ] zp ZP_WORD:137 [ mulu16_sel::return#10 ] zp ZP_WORD:141 [ mulu16_sel::return#11 ] zp ZP_DWORD:153 [ mulu16_sel::$0 ] zp ZP_DWORD:157 [ mulu16_sel::$1 ] zp ZP_WORD:161 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mul16s] best 75896 combination zp ZP_DWORD:92 [ mul16s::return#2 ] zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:112 [ mul16s::return#0 ] zp ZP_WORD:108 [ mul16s::$6 ] zp ZP_WORD:110 [ mul16s::$16 ] zp ZP_WORD:90 [ mul16s::a#0 ] -Uplifting [loop] best 75896 combination zp ZP_WORD:55 [ loop::$1 ] zp ZP_WORD:57 [ loop::xpos#0 ] -Uplifting [fill] best 75880 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:179 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [main] best 75760 combination reg byte x [ main::ch#2 main::ch#1 ] -Uplifting [] best 75760 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:177 [ rem16u#1 ] -Uplifting [div32u16u] best 75760 combination zp ZP_DWORD:80 [ div32u16u::return#2 ] zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:171 [ div32u16u::return#0 ] zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] +Uplifting [mul16u] best 76134 combination zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:29 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:104 [ mul16u::return#2 ] zp ZP_DWORD:151 [ mul16u::return#3 ] +Uplifting [divr16u] best 75924 combination zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:165 [ divr16u::return#2 ] zp ZP_WORD:169 [ divr16u::return#3 ] +Uplifting [sin16s_gen2] best 75924 combination zp ZP_DWORD:96 [ sin16s_gen2::$5 ] zp ZP_WORD:102 [ sin16s_gen2::$8 ] zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:100 [ sin16s_gen2::$6 ] zp ZP_DWORD:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] +Uplifting [sin16s] best 75924 combination zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:88 [ sin16s::return#0 ] zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:119 [ sin16s::$6 ] zp ZP_WORD:127 [ sin16s::x2#0 ] zp ZP_WORD:135 [ sin16s::x3_6#0 ] zp ZP_WORD:141 [ sin16s::x4#0 ] zp ZP_WORD:145 [ sin16s::x5#0 ] zp ZP_WORD:147 [ sin16s::x5_128#0 ] zp ZP_WORD:131 [ sin16s::x3#0 ] zp ZP_WORD:149 [ sin16s::usinx#1 ] zp ZP_WORD:123 [ sin16s::x1#0 ] zp ZP_WORD:137 [ sin16s::usinx#0 ] zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 75908 combination zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:125 [ mulu16_sel::return#0 ] zp ZP_WORD:129 [ mulu16_sel::return#1 ] zp ZP_WORD:133 [ mulu16_sel::return#2 ] zp ZP_WORD:139 [ mulu16_sel::return#10 ] zp ZP_WORD:143 [ mulu16_sel::return#11 ] zp ZP_DWORD:155 [ mulu16_sel::$0 ] zp ZP_DWORD:159 [ mulu16_sel::$1 ] zp ZP_WORD:163 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [mul16s] best 75908 combination zp ZP_DWORD:92 [ mul16s::return#2 ] zp ZP_WORD:108 [ mul16s::$5 ] zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:114 [ mul16s::return#0 ] zp ZP_WORD:110 [ mul16s::$6 ] zp ZP_WORD:112 [ mul16s::$16 ] zp ZP_WORD:90 [ mul16s::a#0 ] +Uplifting [loop] best 75908 combination zp ZP_WORD:55 [ loop::$1 ] zp ZP_WORD:57 [ loop::xpos#0 ] +Uplifting [fill] best 75892 combination zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:181 [ fill::end#0 ] reg byte x [ fill::val#3 ] +Uplifting [main] best 75772 combination reg byte x [ main::ch#2 main::ch#1 ] +Uplifting [] best 75772 combination zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] zp ZP_WORD:179 [ rem16u#1 ] +Uplifting [div32u16u] best 75772 combination zp ZP_DWORD:80 [ div32u16u::return#2 ] zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:173 [ div32u16u::return#0 ] zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] -Uplifting [render_logo] best 70660 combination reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] +Uplifting [render_logo] best 70672 combination reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] -Uplifting [render_logo] best 65860 combination reg byte x [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] +Uplifting [render_logo] best 65872 combination reg byte x [ render_logo::screen_idx#14 render_logo::screen_idx#20 render_logo::screen_idx#4 render_logo::screen_idx#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] -Uplifting [render_logo] best 64657 combination reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] +Uplifting [render_logo] best 64669 combination reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] -Uplifting [render_logo] best 63457 combination reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] +Uplifting [render_logo] best 63469 combination reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:67 [ render_logo::$15 ] -Uplifting [render_logo] best 62857 combination reg byte a [ render_logo::$15 ] +Uplifting [render_logo] best 62869 combination reg byte a [ render_logo::$15 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ render_logo::$34 ] -Uplifting [render_logo] best 62257 combination reg byte a [ render_logo::$34 ] +Uplifting [render_logo] best 62269 combination reg byte a [ render_logo::$34 ] Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_logo::$38 ] -Uplifting [render_logo] best 61657 combination reg byte a [ render_logo::$38 ] +Uplifting [render_logo] best 61669 combination reg byte a [ render_logo::$38 ] Attempting to uplift remaining variables inzp ZP_BYTE:70 [ render_logo::$42 ] -Uplifting [render_logo] best 61057 combination reg byte a [ render_logo::$42 ] +Uplifting [render_logo] best 61069 combination reg byte a [ render_logo::$42 ] Attempting to uplift remaining variables inzp ZP_BYTE:71 [ render_logo::$46 ] -Uplifting [render_logo] best 60457 combination reg byte a [ render_logo::$46 ] +Uplifting [render_logo] best 60469 combination reg byte a [ render_logo::$46 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ render_logo::$50 ] -Uplifting [render_logo] best 59857 combination reg byte a [ render_logo::$50 ] +Uplifting [render_logo] best 59869 combination reg byte a [ render_logo::$50 ] Attempting to uplift remaining variables inzp ZP_BYTE:74 [ render_logo::$23 ] -Uplifting [render_logo] best 59257 combination reg byte a [ render_logo::$23 ] +Uplifting [render_logo] best 59269 combination reg byte a [ render_logo::$23 ] Attempting to uplift remaining variables inzp ZP_BYTE:75 [ render_logo::$80 ] -Uplifting [render_logo] best 58657 combination reg byte a [ render_logo::$80 ] +Uplifting [render_logo] best 58669 combination reg byte a [ render_logo::$80 ] Attempting to uplift remaining variables inzp ZP_BYTE:76 [ render_logo::$84 ] -Uplifting [render_logo] best 58057 combination reg byte a [ render_logo::$84 ] +Uplifting [render_logo] best 58069 combination reg byte a [ render_logo::$84 ] Attempting to uplift remaining variables inzp ZP_BYTE:77 [ render_logo::$88 ] -Uplifting [render_logo] best 57457 combination reg byte a [ render_logo::$88 ] +Uplifting [render_logo] best 57469 combination reg byte a [ render_logo::$88 ] Attempting to uplift remaining variables inzp ZP_BYTE:78 [ render_logo::$92 ] -Uplifting [render_logo] best 56857 combination reg byte a [ render_logo::$92 ] +Uplifting [render_logo] best 56869 combination reg byte a [ render_logo::$92 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ render_logo::$96 ] -Uplifting [render_logo] best 56257 combination reg byte a [ render_logo::$96 ] +Uplifting [render_logo] best 56269 combination reg byte a [ render_logo::$96 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ render_logo::$0 ] -Uplifting [render_logo] best 56251 combination reg byte a [ render_logo::$0 ] +Uplifting [render_logo] best 56263 combination reg byte a [ render_logo::$0 ] Attempting to uplift remaining variables inzp ZP_BYTE:62 [ render_logo::$1 ] -Uplifting [render_logo] best 56245 combination reg byte a [ render_logo::$1 ] +Uplifting [render_logo] best 56257 combination reg byte a [ render_logo::$1 ] Attempting to uplift remaining variables inzp ZP_BYTE:63 [ render_logo::$2 ] -Uplifting [render_logo] best 56239 combination reg byte a [ render_logo::$2 ] +Uplifting [render_logo] best 56251 combination reg byte a [ render_logo::$2 ] Attempting to uplift remaining variables inzp ZP_BYTE:73 [ render_logo::$17 ] -Uplifting [render_logo] best 56235 combination reg byte a [ render_logo::$17 ] +Uplifting [render_logo] best 56247 combination reg byte a [ render_logo::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:66 [ render_logo::x_char#0 ] -Uplifting [render_logo] best 56235 combination zp ZP_BYTE:66 [ render_logo::x_char#0 ] +Uplifting [render_logo] best 56247 combination zp ZP_BYTE:66 [ render_logo::x_char#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 56235 combination zp ZP_BYTE:33 [ sin16s::isUpper#2 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:147 [ sin16s::usinx#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:129 [ sin16s::x3#0 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:177 [ rem16u#1 ] ] - score: 2 +Uplifting [sin16s] best 56247 combination zp ZP_BYTE:33 [ sin16s::isUpper#2 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:149 [ sin16s::usinx#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:131 [ sin16s::x3#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:179 [ rem16u#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] ] with [ zp ZP_DWORD:104 [ mul16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:112 [ mul16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:114 [ mul16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 ] ] with [ zp ZP_WORD:42 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:149 [ mul16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:117 [ sin16s::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:151 [ mul16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:119 [ sin16s::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp ZP_WORD:88 [ sin16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:125 [ sin16s::x2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:139 [ sin16s::x4#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:163 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:167 [ divr16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:127 [ sin16s::x2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:141 [ sin16s::x4#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:165 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:169 [ divr16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ loop::$1 ] ] with [ zp ZP_WORD:57 [ loop::xpos#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:80 [ div32u16u::return#2 ] ] with [ zp ZP_DWORD:84 [ sin16s_gen2::step#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:80 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:171 [ div32u16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:80 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:173 [ div32u16u::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:92 [ mul16s::return#2 ] ] with [ zp ZP_DWORD:96 [ sin16s_gen2::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:100 [ sin16s_gen2::$6 ] ] with [ zp ZP_WORD:102 [ sin16s_gen2::$8 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:108 [ mul16s::$6 ] ] with [ zp ZP_WORD:110 [ mul16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:161 [ mulu16_sel::return#12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:131 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:133 [ sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:141 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:143 [ sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:153 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:157 [ mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ mul16s::$6 ] ] with [ zp ZP_WORD:112 [ mul16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:163 [ mulu16_sel::return#12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:133 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:135 [ sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:143 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:145 [ sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:155 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:159 [ mulu16_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 ] ] with [ zp ZP_DWORD:25 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp ZP_DWORD:92 [ mul16s::return#2 sin16s_gen2::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp ZP_WORD:90 [ mul16s::a#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:135 [ sin16s::usinx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:127 [ mulu16_sel::return#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp ZP_WORD:137 [ mulu16_sel::return#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:169 [ div32u16u::quotient_lo#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:137 [ sin16s::usinx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:129 [ mulu16_sel::return#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp ZP_WORD:139 [ mulu16_sel::return#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:171 [ div32u16u::quotient_lo#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ loop::$1 loop::xpos#0 ] ] with [ zp ZP_WORD:59 [ render_logo::xpos#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:131 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:141 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 ] ] with [ zp ZP_DWORD:153 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:145 [ sin16s::x5_128#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:133 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:143 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 ] ] with [ zp ZP_DWORD:155 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:125 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:147 [ sin16s::x5_128#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 ] ] with [ zp ZP_WORD:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] with [ zp ZP_WORD:45 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] with [ zp ZP_WORD:53 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:108 [ mul16s::$5 ] ] Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] with [ zp ZP_WORD:47 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] with [ zp ZP_WORD:55 [ loop::$1 loop::xpos#0 render_logo::xpos#0 ] ] -Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 ] ] with [ zp ZP_WORD:179 [ fill::end#0 ] ] +Coalescing zero page register [ zp ZP_WORD:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 ] ] with [ zp ZP_WORD:181 [ fill::end#0 ] ] Coalescing zero page register [ zp ZP_DWORD:17 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 ] ] with [ zp ZP_DWORD:34 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] with [ zp ZP_WORD:49 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] with [ zp ZP_WORD:64 [ render_logo::$3 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 ] ] with [ zp ZP_WORD:100 [ sin16s_gen2::$6 sin16s_gen2::$8 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:108 [ mul16s::$6 mul16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:123 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] -Coalescing zero page register [ zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:165 [ div32u16u::quotient_hi#0 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:110 [ mul16s::$6 mul16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:125 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] +Coalescing zero page register [ zp ZP_WORD:23 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:167 [ div32u16u::quotient_hi#0 ] ] Coalescing zero page register [ zp ZP_BYTE:33 [ sin16s::isUpper#2 ] ] with [ zp ZP_BYTE:66 [ render_logo::x_char#0 ] ] -Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ] +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 mul16s::$5 ] Allocated (was zp ZP_DWORD:9) zp ZP_DWORD:4 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] Allocated (was zp ZP_WORD:15) zp ZP_WORD:8 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ] Allocated (was zp ZP_DWORD:17) zp ZP_DWORD:10 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ] @@ -5847,7 +6248,7 @@ Allocated (was zp ZP_BYTE:33) zp ZP_BYTE:22 [ sin16s::isUpper#2 render_logo::x_c Allocated (was zp ZP_WORD:38) zp ZP_WORD:23 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ] Allocated (was zp ZP_WORD:40) zp ZP_WORD:25 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ] Allocated (was zp ZP_DWORD:80) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -Allocated (was zp ZP_WORD:121) zp ZP_WORD:31 [ sin16s::x1#0 ] +Allocated (was zp ZP_WORD:123) zp ZP_WORD:31 [ sin16s::x1#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -5877,19 +6278,19 @@ ASSEMBLER BEFORE OPTIMIZATION .label xsin_idx = 2 //SEG2 @begin bbegin: - jmp b24 -//SEG3 @24 -b24: + jmp b25 +//SEG3 @25 +b25: //SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} -//SEG5 [2] phi from @24 to @27 [phi:@24->@27] -b27_from_b24: - jmp b27 -//SEG6 @27 -b27: +//SEG5 [2] phi from @25 to @28 [phi:@25->@28] +b28_from_b25: + jmp b28 +//SEG6 @28 +b28: //SEG7 [3] call main jsr main -//SEG8 [4] phi from @27 to @end [phi:@27->@end] -bend_from_b27: +//SEG8 [4] phi from @28 to @end [phi:@28->@end] +bend_from_b28: jmp bend //SEG9 @end bend: @@ -5925,11 +6326,11 @@ main: { lda #VIC_MCM sta D016 //SEG21 [13] call fill - //SEG22 [217] phi from main::@3 to fill [phi:main::@3->fill] + //SEG22 [218] phi from main::@3 to fill [phi:main::@3->fill] fill_from_b3: - //SEG23 [217] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 + //SEG23 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG24 [217] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG24 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -5941,11 +6342,11 @@ main: { //SEG26 main::@4 b4: //SEG27 [15] call fill - //SEG28 [217] phi from main::@4 to fill [phi:main::@4->fill] + //SEG28 [218] phi from main::@4 to fill [phi:main::@4->fill] fill_from_b4: - //SEG29 [217] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 + //SEG29 [218] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 ldx #WHITE|8 - //SEG30 [217] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG30 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -6402,7 +6803,7 @@ sin16s_gen2: { .label x = 4 .label i = 8 //SEG184 [99] call div32u16u - //SEG185 [189] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG185 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG186 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 @@ -6531,6 +6932,7 @@ sin16s_gen2: { } //SEG216 mul16s mul16s: { + .label _5 = 2 .label _6 = $e .label _16 = $e .label m = $a @@ -6542,10 +6944,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG218 [119] call mul16u - //SEG219 [129] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG219 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG220 [129] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG221 [129] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG220 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG221 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -6564,12 +6966,17 @@ mul16s: { jmp b3 //SEG226 mul16s::@3 b3: - //SEG227 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG227 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG228 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG228 [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG229 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG229 [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG230 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG230 [126] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG231 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG231 [126] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG232 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG232 mul16s::@1 + //SEG233 mul16s::@1 b1: jmp b2 - //SEG233 mul16s::@2 + //SEG234 mul16s::@2 b2: - //SEG234 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG235 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG235 mul16s::@return + //SEG236 mul16s::@return breturn: - //SEG236 [128] return + //SEG237 [129] return rts } -//SEG237 mul16u +//SEG238 mul16u mul16u: { .label mb = $12 .label a = $10 .label res = $a .label return = $a .label b = $e - //SEG238 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG239 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6614,42 +7021,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG239 [131] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG240 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG240 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG241 [131] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG241 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG242 [132] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG242 [131] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG243 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG243 mul16u::@1 + //SEG244 mul16u::@1 b1: - //SEG244 [132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG245 [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG245 mul16u::@return + //SEG246 mul16u::@return breturn: - //SEG246 [133] return + //SEG247 [134] return rts - //SEG247 mul16u::@2 + //SEG248 mul16u::@2 b2: - //SEG248 [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG249 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG249 [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG250 [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG250 mul16u::@7 + //SEG251 mul16u::@7 b7: - //SEG251 [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG252 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6663,30 +7070,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG252 [137] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG253 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG253 [137] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG254 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG254 mul16u::@4 + //SEG255 mul16u::@4 b4: - //SEG255 [138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG256 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG256 [139] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG257 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG257 [131] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG258 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG258 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG259 [131] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG260 [131] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG259 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG260 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG261 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG261 sin16s +//SEG262 sin16s sin16s: { .label _6 = $a .label x = $a @@ -6701,7 +7108,7 @@ sin16s: { .label x5_128 = $e .label sinx = $17 .label isUpper = $16 - //SEG262 [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG263 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -6719,9 +7126,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG263 sin16s::@4 + //SEG264 sin16s::@4 b4: - //SEG264 [141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG265 [142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG265 [142] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG266 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG266 [142] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG267 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG267 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG268 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG268 [142] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG269 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG269 [142] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG270 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG270 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG271 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG271 sin16s::@1 + //SEG272 sin16s::@1 b1: - //SEG272 [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG273 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -6769,9 +7176,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG273 sin16s::@5 + //SEG274 sin16s::@5 b5: - //SEG274 [144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG275 [145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG275 [145] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG276 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG276 [145] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG277 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG277 sin16s::@2 + //SEG278 sin16s::@2 b2: - //SEG278 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG279 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -6801,86 +7208,86 @@ sin16s: { rol _6+3 dey bne !- - //SEG279 [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG280 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG280 [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG281 [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG282 [150] call mulu16_sel - //SEG283 [180] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG283 [151] call mulu16_sel + //SEG284 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG284 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG285 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG285 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG286 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG286 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG287 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG287 [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG288 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#0 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:14 jmp b8 - //SEG288 sin16s::@8 + //SEG289 sin16s::@8 b8: - //SEG289 [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG290 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG290 [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG291 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 // (word) mulu16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:25 - //SEG291 [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG292 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG292 [155] call mulu16_sel - //SEG293 [180] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG293 [156] call mulu16_sel + //SEG294 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG294 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG295 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG295 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG296 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG296 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG297 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG297 [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG298 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 jmp b9 - //SEG298 sin16s::@9 + //SEG299 sin16s::@9 b9: - //SEG299 [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG300 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 // (word) sin16s::x3#0 = (word) mulu16_sel::return#1 // register copy zp ZP_WORD:25 - //SEG300 [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG301 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG301 [159] call mulu16_sel - //SEG302 [180] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG302 [160] call mulu16_sel + //SEG303 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG303 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG304 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG304 [180] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG305 [181] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG305 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG306 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG306 [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG307 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#2 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:14 jmp b10 - //SEG307 sin16s::@10 + //SEG308 sin16s::@10 b10: - //SEG308 [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG309 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 // (word) sin16s::x3_6#0 = (word) mulu16_sel::return#2 // register copy zp ZP_WORD:14 - //SEG309 [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG310 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6888,61 +7295,61 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG310 [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG311 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG311 [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG312 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG312 [165] call mulu16_sel - //SEG313 [180] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG313 [166] call mulu16_sel + //SEG314 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG314 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG315 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG315 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG316 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG316 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG317 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG317 [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG318 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 jmp b11 - //SEG318 sin16s::@11 + //SEG319 sin16s::@11 b11: - //SEG319 [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG320 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 // (word) sin16s::x4#0 = (word) mulu16_sel::return#10 // register copy zp ZP_WORD:25 - //SEG320 [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG321 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 // (word) mulu16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:25 - //SEG321 [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG322 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG322 [170] call mulu16_sel - //SEG323 [180] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG323 [171] call mulu16_sel + //SEG324 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG324 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG325 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG325 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG326 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG326 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG327 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG327 [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG328 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#11 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:14 jmp b12 - //SEG328 sin16s::@12 + //SEG329 sin16s::@12 b12: - //SEG329 [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG330 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 // (word) sin16s::x5#0 = (word) mulu16_sel::return#11 // register copy zp ZP_WORD:14 - //SEG330 [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG331 [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 ldy #4 !: lsr x5_128+1 ror x5_128 dey bne !- - //SEG331 [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG332 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6950,14 +7357,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG332 [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG333 [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG333 sin16s::@6 + //SEG334 sin16s::@6 b6: - //SEG334 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG335 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6967,25 +7374,25 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG335 [177] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG336 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG336 [177] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG337 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG337 sin16s::@3 + //SEG338 sin16s::@3 b3: jmp breturn - //SEG338 sin16s::@return + //SEG339 sin16s::@return breturn: - //SEG339 [178] return + //SEG340 [179] return rts - //SEG340 sin16s::@15 + //SEG341 sin16s::@15 b15: - //SEG341 [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG342 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 // (signed word~) sin16s::return#5 = (signed word)(word) sin16s::usinx#1 // register copy zp ZP_WORD:23 jmp b3_from_b15 } -//SEG342 mulu16_sel +//SEG343 mulu16_sel mulu16_sel: { .label _0 = $a .label _1 = $a @@ -6994,27 +7401,27 @@ mulu16_sel: { .label return = $e .label return_1 = $19 .label return_10 = $19 - //SEG343 [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG344 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG344 [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG345 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 // (word) mul16u::b#1 = (word) mulu16_sel::v2#5 // register copy zp ZP_WORD:14 - //SEG345 [183] call mul16u - //SEG346 [129] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG346 [184] call mul16u + //SEG347 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG347 [129] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG348 [129] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG348 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG349 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG349 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG350 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:10 jmp b2 - //SEG350 mulu16_sel::@2 + //SEG351 mulu16_sel::@2 b2: - //SEG351 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG352 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 // (dword~) mulu16_sel::$0 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:10 - //SEG352 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG353 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -7025,66 +7432,66 @@ mulu16_sel: { dex bne !- !e: - //SEG353 [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG354 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 jmp breturn - //SEG354 mulu16_sel::@return + //SEG355 mulu16_sel::@return breturn: - //SEG355 [188] return + //SEG356 [189] return rts } -//SEG356 div32u16u +//SEG357 div32u16u div32u16u: { .label quotient_hi = $10 .label quotient_lo = $e .label return = $1b - //SEG357 [190] call divr16u - //SEG358 [199] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG358 [191] call divr16u + //SEG359 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG359 [199] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG360 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG360 [199] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG361 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG361 [191] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG362 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:14 jmp b2 - //SEG362 div32u16u::@2 + //SEG363 div32u16u::@2 b2: - //SEG363 [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG364 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG364 [193] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG365 [194] (word) divr16u::rem#4 ← (word) rem16u#1 // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:2 - //SEG365 [194] call divr16u - //SEG366 [199] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG366 [195] call divr16u + //SEG367 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG367 [199] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG368 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG368 [199] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG369 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG369 [195] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG370 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:14 jmp b3 - //SEG370 div32u16u::@3 + //SEG371 div32u16u::@3 b3: - //SEG371 [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG372 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 // (word) div32u16u::quotient_lo#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:14 - //SEG372 [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG373 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -7094,69 +7501,69 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG373 div32u16u::@return + //SEG374 div32u16u::@return breturn: - //SEG374 [198] return + //SEG375 [199] return rts } -//SEG375 divr16u +//SEG376 divr16u divr16u: { .label rem = 2 .label dividend = 8 .label quotient = $e .label return = $e - //SEG376 [200] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG377 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG377 [200] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG378 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG378 [200] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG379 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG379 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG380 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG380 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG381 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG381 [200] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG382 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG382 [200] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG383 [200] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG384 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG385 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG383 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG384 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG385 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG386 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG386 divr16u::@1 + //SEG387 divr16u::@1 b1: - //SEG387 [201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG388 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG388 [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG389 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG389 [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG390 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG390 [204] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG391 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG391 divr16u::@4 + //SEG392 divr16u::@4 b4: - //SEG392 [205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG393 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG393 [206] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG394 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG394 [206] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG395 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG395 divr16u::@2 + //SEG396 divr16u::@2 b2: - //SEG396 [207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG397 [208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG398 [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG399 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>XSIN_SIZE bcc b3_from_b2 @@ -7166,14 +7573,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG399 divr16u::@5 + //SEG400 divr16u::@5 b5: - //SEG400 [210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG401 [211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG401 [211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG402 [212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #XSIN_SIZE sta rem+1 - //SEG402 [212] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG403 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG403 [212] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG404 [212] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG404 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG405 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG405 divr16u::@3 + //SEG406 divr16u::@3 b3: - //SEG406 [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG407 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG407 [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG408 [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG408 divr16u::@6 + //SEG409 divr16u::@6 b6: - //SEG409 [215] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG410 [216] (word) rem16u#1 ← (word) divr16u::rem#11 // (word) rem16u#1 = (word) divr16u::rem#11 // register copy zp ZP_WORD:2 jmp breturn - //SEG410 divr16u::@return + //SEG411 divr16u::@return breturn: - //SEG411 [216] return + //SEG412 [217] return rts } -//SEG412 fill +//SEG413 fill fill: { .label end = 8 .label addr = 2 - //SEG413 [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG414 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -7217,23 +7624,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG414 [219] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG415 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG415 [219] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG416 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG416 fill::@1 + //SEG417 fill::@1 b1: - //SEG417 [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG418 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG418 [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG419 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG419 [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG420 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -7241,9 +7648,9 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG420 fill::@return + //SEG421 fill::@return breturn: - //SEG421 [223] return + //SEG422 [224] return rts } .align $100 @@ -7257,8 +7664,8 @@ fill: { ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b24 -Removing instruction jmp b27 +Removing instruction jmp b25 +Removing instruction jmp b28 Removing instruction jmp bend Removing instruction jmp toD0181 Removing instruction jmp b3 @@ -7374,9 +7781,9 @@ Replacing label b1_from_b3 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b24: -Removing instruction b27_from_b24: -Removing instruction bend_from_b27: +Removing instruction b25: +Removing instruction b28_from_b25: +Removing instruction bend_from_b28: Removing instruction toD0181_from_main: Removing instruction toD0181: Removing instruction b4_from_b3: @@ -7411,7 +7818,7 @@ Removing instruction b3_from_b5: Removing instruction b1_from_fill: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b27: +Removing instruction b28: Removing instruction bend: Removing instruction b3: Removing instruction fill_from_b3: @@ -7527,46 +7934,116 @@ Removing unreachable instruction jmp b3 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @24 -(label) @27 +(label) @25 +(label) @28 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 (byte*) BGCOL2 (const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282 (byte*) BGCOL3 (const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 (byte*) D016 (const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270 (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 (byte) DARK_GREY (const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY (byte*) LOGO (const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) ORANGE +(word) PI2_u4f12 (dword) PI2_u4f28 (const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 +(byte) PINK +(word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 (const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428 +(word) PI_u4f12 (dword) PI_u4f28 (const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857 +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM (byte) VIC_MCM (const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 (word) XSIN_SIZE (const word) XSIN_SIZE#0 XSIN_SIZE = (word/signed word/dword/signed dword) 512 +(byte) YELLOW (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (label) div32u16u::@2 (label) div32u16u::@3 @@ -7665,6 +8142,7 @@ FINAL SYMBOL TABLE (byte*) main::toD0181_screen (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:14 4.0 +(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:14 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -7735,8 +8213,11 @@ FINAL SYMBOL TABLE (word) mulu16_sel::v2#3 v2 zp ZP_WORD:14 4.0 (word) mulu16_sel::v2#4 v2 zp ZP_WORD:14 4.0 (word) mulu16_sel::v2#5 v2 zp ZP_WORD:14 5.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (void()) render_logo((signed word) render_logo::xpos) (byte~) render_logo::$0 reg byte a 4.0 (byte~) render_logo::$1 reg byte a 4.0 @@ -7893,7 +8374,7 @@ FINAL SYMBOL TABLE (word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0 reg byte x [ main::ch#2 main::ch#1 ] -zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ] +zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 mul16s::$5 ] reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] @@ -7934,7 +8415,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 41395 +Score: 41407 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -7962,13 +8443,13 @@ Score: 41395 .label rem16u = 2 .label xsin_idx = 2 //SEG2 @begin -//SEG3 @24 +//SEG3 @25 //SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} -//SEG5 [2] phi from @24 to @27 [phi:@24->@27] -//SEG6 @27 +//SEG5 [2] phi from @25 to @28 [phi:@25->@28] +//SEG6 @28 //SEG7 [3] call main jsr main -//SEG8 [4] phi from @27 to @end [phi:@27->@end] +//SEG8 [4] phi from @28 to @end [phi:@28->@end] //SEG9 @end //SEG10 main main: { @@ -7996,10 +8477,10 @@ main: { lda #VIC_MCM sta D016 //SEG21 [13] call fill - //SEG22 [217] phi from main::@3 to fill [phi:main::@3->fill] - //SEG23 [217] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 + //SEG22 [218] phi from main::@3 to fill [phi:main::@3->fill] + //SEG23 [218] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:main::@3->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG24 [217] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 + //SEG24 [218] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:main::@3->fill#1] -- pbuz1=pbuc1 lda #SCREEN @@ -8008,10 +8489,10 @@ main: { //SEG25 [14] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG26 main::@4 //SEG27 [15] call fill - //SEG28 [217] phi from main::@4 to fill [phi:main::@4->fill] - //SEG29 [217] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 + //SEG28 [218] phi from main::@4 to fill [phi:main::@4->fill] + //SEG29 [218] phi (byte) fill::val#3 = (const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:main::@4->fill#0] -- vbuxx=vbuc1 ldx #WHITE|8 - //SEG30 [217] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 + //SEG30 [218] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:main::@4->fill#1] -- pbuz1=pbuc1 lda #COLS @@ -8365,7 +8846,7 @@ sin16s_gen2: { .label x = 4 .label i = 8 //SEG184 [99] call div32u16u - //SEG185 [189] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG185 [190] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u //SEG186 [100] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 // (dword) div32u16u::return#2 = (dword) div32u16u::return#0 // register copy zp ZP_DWORD:27 @@ -8479,6 +8960,7 @@ sin16s_gen2: { } //SEG216 mul16s mul16s: { + .label _5 = 2 .label _6 = $e .label _16 = $e .label m = $a @@ -8490,9 +8972,9 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG218 [119] call mul16u - //SEG219 [129] phi from mul16s to mul16u [phi:mul16s->mul16u] - //SEG220 [129] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG221 [129] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG219 [130] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG220 [130] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG221 [130] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -8507,12 +8989,17 @@ mul16s: { lda a+1 bpl b2 //SEG226 mul16s::@3 - //SEG227 [123] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG227 [123] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG228 [124] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG228 [124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG229 [125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG229 [125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG230 [126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG230 [126] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] - //SEG231 [126] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy - //SEG232 mul16s::@1 - //SEG233 mul16s::@2 + //SEG231 [127] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG232 [127] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG233 mul16s::@1 + //SEG234 mul16s::@2 b2: - //SEG234 [127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG235 mul16s::@return - //SEG236 [128] return + //SEG235 [128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG236 mul16s::@return + //SEG237 [129] return rts } -//SEG237 mul16u +//SEG238 mul16u mul16u: { .label mb = $12 .label a = $10 .label res = $a .label return = $a .label b = $e - //SEG238 [130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG239 [131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8550,34 +9037,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG239 [131] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG240 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG241 [131] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG240 [132] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG241 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG242 [132] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 sta res sta res+1 sta res+2 sta res+3 - //SEG242 [131] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG243 mul16u::@1 + //SEG243 [132] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG244 mul16u::@1 b1: - //SEG244 [132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG245 [133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG245 mul16u::@return - //SEG246 [133] return + //SEG246 mul16u::@return + //SEG247 [134] return rts - //SEG247 mul16u::@2 + //SEG248 mul16u::@2 b2: - //SEG248 [134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG249 [135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG249 [135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG250 [136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG250 mul16u::@7 - //SEG251 [136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG251 mul16u::@7 + //SEG252 [137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8591,26 +9078,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG252 [137] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG253 [137] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG254 mul16u::@4 + //SEG253 [138] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG254 [138] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG255 mul16u::@4 b4: - //SEG255 [138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG256 [139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG256 [139] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG257 [140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG257 [131] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG258 [131] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG259 [131] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG260 [131] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG258 [132] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG259 [132] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG260 [132] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG261 [132] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG261 sin16s +//SEG262 sin16s sin16s: { .label _6 = $a .label x = $a @@ -8625,7 +9112,7 @@ sin16s: { .label x5_128 = $e .label sinx = $17 .label isUpper = $16 - //SEG262 [140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG263 [141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b4 @@ -8642,8 +9129,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG265 [142] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG266 [142] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG266 [143] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG267 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG267 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG268 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG268 [142] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG269 [143] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG269 [142] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG270 [143] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG270 [142] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG271 sin16s::@1 + //SEG271 [143] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG272 sin16s::@1 b1: - //SEG272 [143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG273 [144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2 @@ -8688,8 +9175,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG275 [145] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG276 [145] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG277 sin16s::@2 + //SEG276 [146] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG277 [146] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG278 sin16s::@2 b2: - //SEG278 [146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG279 [147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -8716,77 +9203,77 @@ sin16s: { rol _6+3 dey bne !- - //SEG279 [147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG280 [148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG280 [148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG281 [149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG281 [149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG282 [150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG282 [150] call mulu16_sel - //SEG283 [180] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG284 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG283 [151] call mulu16_sel + //SEG284 [181] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG285 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG285 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG286 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG286 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG287 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG287 [151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG288 [152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#0 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:14 - //SEG288 sin16s::@8 - //SEG289 [152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG289 sin16s::@8 + //SEG290 [153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG290 [153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG291 [154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 // (word) mulu16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:25 - //SEG291 [154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG292 [155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG292 [155] call mulu16_sel - //SEG293 [180] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG294 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG293 [156] call mulu16_sel + //SEG294 [181] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG295 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG295 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG296 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG296 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG297 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG297 [156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG298 [157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 - //SEG298 sin16s::@9 - //SEG299 [157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG299 sin16s::@9 + //SEG300 [158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 // (word) sin16s::x3#0 = (word) mulu16_sel::return#1 // register copy zp ZP_WORD:25 - //SEG300 [158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG301 [159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG301 [159] call mulu16_sel - //SEG302 [180] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG303 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG302 [160] call mulu16_sel + //SEG303 [181] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG304 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG304 [180] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG305 [181] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG305 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG306 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG306 [160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG307 [161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#2 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:14 - //SEG307 sin16s::@10 - //SEG308 [161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG308 sin16s::@10 + //SEG309 [162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 // (word) sin16s::x3_6#0 = (word) mulu16_sel::return#2 // register copy zp ZP_WORD:14 - //SEG309 [162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG310 [163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8794,55 +9281,55 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG310 [163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG311 [164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG311 [164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG312 [165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG312 [165] call mulu16_sel - //SEG313 [180] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG314 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG313 [166] call mulu16_sel + //SEG314 [181] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG315 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG315 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG316 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG316 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG317 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG317 [166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG318 [167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 - //SEG318 sin16s::@11 - //SEG319 [167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG319 sin16s::@11 + //SEG320 [168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 // (word) sin16s::x4#0 = (word) mulu16_sel::return#10 // register copy zp ZP_WORD:25 - //SEG320 [168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG321 [169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 // (word) mulu16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:25 - //SEG321 [169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG322 [170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG322 [170] call mulu16_sel - //SEG323 [180] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] - //SEG324 [180] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG323 [171] call mulu16_sel + //SEG324 [181] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG325 [181] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG325 [180] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG326 [180] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG326 [181] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG327 [181] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG327 [171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG328 [172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#11 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:14 - //SEG328 sin16s::@12 - //SEG329 [172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG329 sin16s::@12 + //SEG330 [173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 // (word) sin16s::x5#0 = (word) mulu16_sel::return#11 // register copy zp ZP_WORD:14 - //SEG330 [173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG331 [174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 ldy #4 !: lsr x5_128+1 ror x5_128 dey bne !- - //SEG331 [174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG332 [175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -8850,12 +9337,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG332 [175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG333 [176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG333 sin16s::@6 - //SEG334 [176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG334 sin16s::@6 + //SEG335 [177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -8865,18 +9352,18 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG335 [177] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] - //SEG336 [177] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG337 sin16s::@3 + //SEG336 [178] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG337 [178] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG338 sin16s::@3 b3: - //SEG338 sin16s::@return - //SEG339 [178] return + //SEG339 sin16s::@return + //SEG340 [179] return rts - //SEG340 sin16s::@15 - //SEG341 [179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG341 sin16s::@15 + //SEG342 [180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 // (signed word~) sin16s::return#5 = (signed word)(word) sin16s::usinx#1 // register copy zp ZP_WORD:23 } -//SEG342 mulu16_sel +//SEG343 mulu16_sel mulu16_sel: { .label _0 = $a .label _1 = $a @@ -8885,24 +9372,24 @@ mulu16_sel: { .label return = $e .label return_1 = $19 .label return_10 = $19 - //SEG343 [181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG344 [182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG344 [182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG345 [183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 // (word) mul16u::b#1 = (word) mulu16_sel::v2#5 // register copy zp ZP_WORD:14 - //SEG345 [183] call mul16u - //SEG346 [129] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] - //SEG347 [129] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG348 [129] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG346 [184] call mul16u + //SEG347 [130] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG348 [130] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG349 [130] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG349 [184] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG350 [185] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:10 - //SEG350 mulu16_sel::@2 - //SEG351 [185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG351 mulu16_sel::@2 + //SEG352 [186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 // (dword~) mulu16_sel::$0 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:10 - //SEG352 [186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG353 [187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -8913,57 +9400,57 @@ mulu16_sel: { dex bne !- !e: - //SEG353 [187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG354 [188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG354 mulu16_sel::@return - //SEG355 [188] return + //SEG355 mulu16_sel::@return + //SEG356 [189] return rts } -//SEG356 div32u16u +//SEG357 div32u16u div32u16u: { .label quotient_hi = $10 .label quotient_lo = $e .label return = $1b - //SEG357 [190] call divr16u - //SEG358 [199] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG359 [199] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG358 [191] call divr16u + //SEG359 [200] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG360 [200] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG360 [199] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG361 [200] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG361 [191] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG362 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:14 - //SEG362 div32u16u::@2 - //SEG363 [192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG363 div32u16u::@2 + //SEG364 [193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG364 [193] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG365 [194] (word) divr16u::rem#4 ← (word) rem16u#1 // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:2 - //SEG365 [194] call divr16u - //SEG366 [199] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] - //SEG367 [199] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG366 [195] call divr16u + //SEG367 [200] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG368 [200] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG368 [199] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG369 [200] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG369 [195] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG370 [196] (word) divr16u::return#3 ← (word) divr16u::return#0 // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:14 - //SEG370 div32u16u::@3 - //SEG371 [196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG371 div32u16u::@3 + //SEG372 [197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 // (word) div32u16u::quotient_lo#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:14 - //SEG372 [197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG373 [198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -8972,58 +9459,58 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG373 div32u16u::@return - //SEG374 [198] return + //SEG374 div32u16u::@return + //SEG375 [199] return rts } -//SEG375 divr16u +//SEG376 divr16u divr16u: { .label rem = 2 .label dividend = 8 .label quotient = $e .label return = $e - //SEG376 [200] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG377 [200] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG377 [201] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG378 [201] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG378 [200] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG379 [201] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG379 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG380 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG381 [200] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG382 [200] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG383 [200] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG384 [200] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG385 [200] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG386 divr16u::@1 + //SEG380 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG381 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG382 [201] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG383 [201] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG384 [201] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG385 [201] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG386 [201] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG387 divr16u::@1 b1: - //SEG387 [201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG388 [202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG388 [202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG389 [203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG389 [203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG390 [204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG390 [204] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG391 [205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG391 divr16u::@4 - //SEG392 [205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG392 divr16u::@4 + //SEG393 [206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG393 [206] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG394 [206] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG395 divr16u::@2 + //SEG394 [207] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG395 [207] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG396 divr16u::@2 b2: - //SEG396 [207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG397 [208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG397 [208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG398 [209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG398 [209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG399 [210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>XSIN_SIZE bcc b3 @@ -9032,13 +9519,13 @@ divr16u: { cmp #XSIN_SIZE sta rem+1 - //SEG402 [212] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG403 [212] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG404 [212] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG405 divr16u::@3 + //SEG403 [213] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG404 [213] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG405 [213] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG406 divr16u::@3 b3: - //SEG406 [213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG407 [214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG407 [214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG408 [215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG408 divr16u::@6 - //SEG409 [215] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG409 divr16u::@6 + //SEG410 [216] (word) rem16u#1 ← (word) divr16u::rem#11 // (word) rem16u#1 = (word) divr16u::rem#11 // register copy zp ZP_WORD:2 - //SEG410 divr16u::@return - //SEG411 [216] return + //SEG411 divr16u::@return + //SEG412 [217] return rts } -//SEG412 fill +//SEG413 fill fill: { .label end = 8 .label addr = 2 - //SEG413 [218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG414 [219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -9075,28 +9562,28 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG414 [219] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG415 [219] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG416 fill::@1 + //SEG415 [220] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG416 [220] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG417 fill::@1 b1: - //SEG417 [220] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG418 [221] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG418 [221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG419 [222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG419 [222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG420 [223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1 lda addr cmp end bne b1 - //SEG420 fill::@return - //SEG421 [223] return + //SEG421 fill::@return + //SEG422 [224] return rts } .align $100 diff --git a/src/test/ref/examples/scrolllogo/scrolllogo.sym b/src/test/ref/examples/scrolllogo/scrolllogo.sym index f9c13d69a..5a801d404 100644 --- a/src/test/ref/examples/scrolllogo/scrolllogo.sym +++ b/src/test/ref/examples/scrolllogo/scrolllogo.sym @@ -1,43 +1,113 @@ -(label) @24 -(label) @27 +(label) @25 +(label) @28 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 (byte*) BGCOL2 (const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282 (byte*) BGCOL3 (const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 (byte*) D016 (const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270 (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 (byte) DARK_GREY (const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY (byte*) LOGO (const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) ORANGE +(word) PI2_u4f12 (dword) PI2_u4f28 (const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 +(byte) PINK +(word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 (const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428 +(word) PI_u4f12 (dword) PI_u4f28 (const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857 +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM (byte) VIC_MCM (const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 (word) XSIN_SIZE (const word) XSIN_SIZE#0 XSIN_SIZE = (word/signed word/dword/signed dword) 512 +(byte) YELLOW (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (label) div32u16u::@2 (label) div32u16u::@3 @@ -136,6 +206,7 @@ (byte*) main::toD0181_screen (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:14 4.0 +(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:14 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -206,8 +277,11 @@ (word) mulu16_sel::v2#3 v2 zp ZP_WORD:14 4.0 (word) mulu16_sel::v2#4 v2 zp ZP_WORD:14 4.0 (word) mulu16_sel::v2#5 v2 zp ZP_WORD:14 5.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (void()) render_logo((signed word) render_logo::xpos) (byte~) render_logo::$0 reg byte a 4.0 (byte~) render_logo::$1 reg byte a 4.0 @@ -364,7 +438,7 @@ (word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0 reg byte x [ main::ch#2 main::ch#1 ] -zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ] +zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 mul16s::$5 ] reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ] reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ] reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ] diff --git a/src/test/ref/examples/showlogo/showlogo.cfg b/src/test/ref/examples/showlogo/showlogo.cfg index 435aec0b3..51643441a 100644 --- a/src/test/ref/examples/showlogo/showlogo.cfg +++ b/src/test/ref/examples/showlogo/showlogo.cfg @@ -1,21 +1,21 @@ @begin: scope:[] from [0] phi() - to:@3 -@3: scope:[] from @begin + to:@4 +@4: scope:[] from @begin kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} - to:@5 -@5: scope:[] from @3 + to:@6 +@6: scope:[] from @4 [2] phi() [3] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [4] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) diff --git a/src/test/ref/examples/showlogo/showlogo.log b/src/test/ref/examples/showlogo/showlogo.log index 1729f68c1..c9d39b8ca 100644 --- a/src/test/ref/examples/showlogo/showlogo.log +++ b/src/test/ref/examples/showlogo/showlogo.log @@ -3,20 +3,87 @@ Inlined call (byte~) main::$0 ← call toD018 (byte*) SCREEN (byte*) LOGO CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 - to:@3 -@3: scope:[] from @begin + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) LOGO#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 * (byte/signed byte/word/signed word/dword/signed dword) 40 @@ -27,10 +94,10 @@ CONTROL FLOW GRAPH SSA .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} - to:@5 -main: scope:[main] from @5 - (byte*) LOGO#1 ← phi( @5/(byte*) LOGO#2 ) - (byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#5 ) + to:@6 +main: scope:[main] from @6 + (byte*) LOGO#1 ← phi( @6/(byte*) LOGO#2 ) + (byte*) SCREEN#1 ← phi( @6/(byte*) SCREEN#5 ) *((byte*) BORDERCOL#0) ← (byte) WHITE#0 *((byte*) BGCOL2#0) ← (byte) DARK_GREY#0 *((byte*) BGCOL#0) ← *((byte*) BGCOL2#0) @@ -98,6 +165,8 @@ main::@2: scope:[main] from main::@1 main::@3 to:main::@return main::@3: scope:[main] from main::@2 (byte*) SCREEN#4 ← phi( main::@2/(byte*) SCREEN#8 ) + (byte*~) main::$8 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) 999 + (byte*~) main::$9 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) 999 (byte*~) main::$10 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) 999 *((byte*~) main::$10) ← ++ *((byte*~) main::$10) kickasm {{ inc $d020 }} @@ -125,45 +194,137 @@ fill::@1: scope:[fill] from fill fill::@1 fill::@return: scope:[fill] from fill::@1 return to:@return -@5: scope:[] from @3 - (byte*) LOGO#2 ← phi( @3/(byte*) LOGO#0 ) - (byte*) SCREEN#5 ← phi( @3/(byte*) SCREEN#0 ) +@6: scope:[] from @4 + (byte*) LOGO#2 ← phi( @4/(byte*) LOGO#0 ) + (byte*) SCREEN#5 ← phi( @4/(byte*) SCREEN#0 ) call main - to:@6 -@6: scope:[] from @5 + to:@7 +@7: scope:[] from @6 to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 SYMBOL TABLE SSA (byte/word/signed word/dword/signed dword~) $0 (byte/signed word/word/dword/signed dword~) $1 -(label) @3 -(label) @5 +(label) @4 (label) @6 +(label) @7 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 (byte*) BGCOL2 (byte*) BGCOL2#0 (byte*) BGCOL3 (byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte) BLACK (byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 (byte*) COLS (byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 (byte*) D016 (byte*) D016#0 (byte*) D018 (byte*) D018#0 (byte) DARK_GREY (byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 (byte*) LOGO (byte*) LOGO#0 (byte*) LOGO#1 (byte*) LOGO#2 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 +(byte*) RASTER +(byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -176,12 +337,54 @@ SYMBOL TABLE SSA (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 (byte) VIC_CSEL (byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 (byte) VIC_MCM (byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 (byte) WHITE (byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*~) fill::$0 (bool~) fill::$1 @@ -215,6 +418,8 @@ SYMBOL TABLE SSA (word/signed word/dword/signed dword~) main::$4 (byte/word/dword~) main::$5 (bool~) main::$7 +(byte*~) main::$8 +(byte*~) main::$9 (label) main::@1 (label) main::@10 (label) main::@11 @@ -258,7 +463,7 @@ SYMBOL TABLE SSA (byte*) main::toD0181_screen#0 (byte*) main::toD0181_screen#1 -Culled Empty Block (label) @6 +Culled Empty Block (label) @7 Successful SSA optimization Pass2CullEmptyBlocks Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 @@ -288,18 +493,85 @@ Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$7 if((byte) main::ch#1!=rangelast(0,239)) goto main::@1 Simple Condition (bool~) fill::$1 if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 Constant (const byte*) BGCOL2#0 = ((byte*))53282 Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 Constant (const byte*) D016#0 = ((byte*))53270 Constant (const byte) VIC_MCM#0 = 16 Constant (const byte) VIC_CSEL#0 = 8 Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte) BLACK#0 = 0 Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) LOGO#0 = ((byte*))8192 Constant (const byte/word/signed word/dword/signed dword) $0 = 6*40 @@ -315,6 +587,8 @@ Constant (const byte*) fill::start#0 = SCREEN#0 Constant (const byte) fill::val#0 = BLACK#0 Constant (const byte) fill::val#1 = WHITE#0|8 Constant (const byte*) fill::start#1 = COLS#0 +Constant (const byte*) main::$8 = SCREEN#0+999 +Constant (const byte*) main::$9 = SCREEN#0+999 Constant (const byte*) main::$10 = SCREEN#0+999 Successful SSA optimization Pass2ConstantIdentification Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0 @@ -333,6 +607,7 @@ Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_ Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@3 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value main::ch#1 ← ++ main::ch#2 to ++ @@ -371,7 +646,7 @@ Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting main::@12(between main::@1 and main::@1) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of main::@10 @@ -387,7 +662,7 @@ Coalesced down to 4 phi equivalence classes Culled Empty Block (label) main::@12 Culled Empty Block (label) fill::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @5 +Adding NOP phi() at start of @6 Adding NOP phi() at start of @end Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of main::@10 @@ -395,22 +670,22 @@ Adding NOP phi() at start of main::@10 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@3 -@3: scope:[] from @begin + to:@4 +@4: scope:[] from @begin kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} - to:@5 -@5: scope:[] from @3 + to:@6 +@6: scope:[] from @4 [2] phi() [3] call main to:@end -@end: scope:[] from @5 +@end: scope:[] from @6 [4] phi() -main: scope:[main] from @5 +main: scope:[main] from @6 [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 [7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) @@ -457,19 +732,86 @@ fill::@return: scope:[fill] from fill::@1 VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 (byte*) BGCOL2 (byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS +(byte) CYAN +(byte*) D011 (byte*) D016 (byte*) D018 (byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY (byte*) LOGO +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 (byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM (byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE +(byte) YELLOW (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (byte*) fill::addr (byte*) fill::addr#0 2.0 @@ -539,19 +881,19 @@ INITIAL ASM .label LOGO = $2000 //SEG2 @begin bbegin: - jmp b3 -//SEG3 @3 -b3: + jmp b4 +//SEG3 @4 +b4: //SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} -//SEG5 [2] phi from @3 to @5 [phi:@3->@5] -b5_from_b3: - jmp b5 -//SEG6 @5 -b5: +//SEG5 [2] phi from @4 to @6 [phi:@4->@6] +b6_from_b4: + jmp b6 +//SEG6 @6 +b6: //SEG7 [3] call main jsr main -//SEG8 [4] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG8 [4] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG9 @end bend: @@ -767,19 +1109,19 @@ ASSEMBLER BEFORE OPTIMIZATION .label LOGO = $2000 //SEG2 @begin bbegin: - jmp b3 -//SEG3 @3 -b3: + jmp b4 +//SEG3 @4 +b4: //SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} -//SEG5 [2] phi from @3 to @5 [phi:@3->@5] -b5_from_b3: - jmp b5 -//SEG6 @5 -b5: +//SEG5 [2] phi from @4 to @6 [phi:@4->@6] +b6_from_b4: + jmp b6 +//SEG6 @6 +b6: //SEG7 [3] call main jsr main -//SEG8 [4] phi from @5 to @end [phi:@5->@end] -bend_from_b5: +//SEG8 [4] phi from @6 to @end [phi:@6->@end] +bend_from_b6: jmp bend //SEG9 @end bend: @@ -928,8 +1270,8 @@ fill: { ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b3 -Removing instruction jmp b5 +Removing instruction jmp b4 +Removing instruction jmp b6 Removing instruction jmp bend Removing instruction jmp toD0181 Removing instruction jmp b9 @@ -945,9 +1287,9 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b3: -Removing instruction b5_from_b3: -Removing instruction bend_from_b5: +Removing instruction b4: +Removing instruction b6_from_b4: +Removing instruction bend_from_b6: Removing instruction toD0181_from_main: Removing instruction toD0181: Removing instruction b10_from_b9: @@ -956,7 +1298,7 @@ Removing instruction b1_from_b1: Removing instruction b1_from_fill: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b5: +Removing instruction b6: Removing instruction bend: Removing instruction b9: Removing instruction fill_from_b9: @@ -968,38 +1310,105 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @3 -(label) @5 +(label) @4 +(label) @6 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 (byte*) BGCOL2 (const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282 (byte*) BGCOL3 (const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 (byte*) D016 (const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270 (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 (byte) DARK_GREY (const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY (byte*) LOGO (const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 (byte) VIC_CSEL (const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_DEN +(byte) VIC_ECM (byte) VIC_MCM (const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return @@ -1066,13 +1475,13 @@ Score: 3578 .label SCREEN = $400 .label LOGO = $2000 //SEG2 @begin -//SEG3 @3 +//SEG3 @4 //SEG4 kickasm(location (const byte*) LOGO#0) {{ .var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff)) .for (var y=0; y<6 ; y++) .for (var x=0;x<40; x++) .for(var cp=0; cp<8; cp++) .byte logoPic.getMulticolorByte(x,cp+y*8) }} -//SEG5 [2] phi from @3 to @5 [phi:@3->@5] -//SEG6 @5 +//SEG5 [2] phi from @4 to @6 [phi:@4->@6] +//SEG6 @6 //SEG7 [3] call main jsr main -//SEG8 [4] phi from @5 to @end [phi:@5->@end] +//SEG8 [4] phi from @6 to @end [phi:@6->@end] //SEG9 @end //SEG10 main main: { diff --git a/src/test/ref/examples/showlogo/showlogo.sym b/src/test/ref/examples/showlogo/showlogo.sym index 86684380e..20313db49 100644 --- a/src/test/ref/examples/showlogo/showlogo.sym +++ b/src/test/ref/examples/showlogo/showlogo.sym @@ -1,35 +1,102 @@ -(label) @3 -(label) @5 +(label) @4 +(label) @6 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 (byte*) BGCOL2 (const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282 (byte*) BGCOL3 (const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 (byte*) D016 (const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270 (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 (byte) DARK_GREY (const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY (byte*) LOGO (const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 (byte) VIC_CSEL (const byte) VIC_CSEL#0 VIC_CSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_DEN +(byte) VIC_ECM (byte) VIC_MCM (const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val) (label) fill::@1 (label) fill::@return diff --git a/src/test/ref/examples/sinplotter/sine-plotter.asm b/src/test/ref/examples/sinplotter/sine-plotter.asm index 5fc84f380..af4896e53 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.asm +++ b/src/test/ref/examples/sinplotter/sine-plotter.asm @@ -312,6 +312,7 @@ sin16s_gen2: { rts } mul16s: { + .label _5 = 2 .label _6 = 6 .label _16 = 6 .label m = $c @@ -329,6 +330,10 @@ mul16s: { lda a+1 bpl b2 lda m+2 + sta _5 + lda m+3 + sta _5+1 + lda m+2 sta _6 lda m+3 sta _6+1 diff --git a/src/test/ref/examples/sinplotter/sine-plotter.cfg b/src/test/ref/examples/sinplotter/sine-plotter.cfg index d3f18c9c8..b3c81721b 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.cfg +++ b/src/test/ref/examples/sinplotter/sine-plotter.cfg @@ -1,7 +1,7 @@ @begin: scope:[] from [0] phi() - to:@28 -@28: scope:[] from @begin + to:@29 +@29: scope:[] from @begin kickasm {{ .label pc_restore = * .pc = $1400 .for(var i=0; i<512; i++) { @@ -9,14 +9,14 @@ } .pc = pc_restore }} - to:@31 -@31: scope:[] from @28 + to:@32 +@32: scope:[] from @29 [2] phi() [3] call main to:@end -@end: scope:[] from @31 +@end: scope:[] from @32 [4] phi() -main: scope:[main] from @31 +main: scope:[main] from @32 asm { sei } [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -187,261 +187,262 @@ mul16s::@6: scope:[mul16s] from mul16s [94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@6 - [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 + [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [98] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [99] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [100] return + [101] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [101] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [101] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [102] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [102] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [103] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [103] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [103] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [104] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [104] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [104] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [105] return + [106] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [109] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [110] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [114] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [115] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [115] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [122] call mulu16_sel - [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [118] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [123] call mulu16_sel + [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [127] call mulu16_sel - [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [128] call mulu16_sel + [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [131] call mulu16_sel - [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [132] call mulu16_sel + [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [137] call mulu16_sel - [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [138] call mulu16_sel + [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [142] call mulu16_sel - [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [143] call mulu16_sel + [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [149] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [150] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [150] return + [151] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [152] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [152] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [152] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [155] call mul16u - [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [153] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [153] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [153] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [156] call mul16u + [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [160] return + [161] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [161] phi() - [162] call divr16u - [163] (word) divr16u::return#2 ← (word) divr16u::return#0 + [162] phi() + [163] call divr16u + [164] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [165] (word) divr16u::rem#4 ← (word) rem16u#1 - [166] call divr16u - [167] (word) divr16u::return#3 ← (word) divr16u::return#0 + [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [166] (word) divr16u::rem#4 ← (word) rem16u#1 + [167] call divr16u + [168] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [170] return + [171] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [171] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [171] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [172] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [172] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [172] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [172] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [172] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [172] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [173] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [173] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [173] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [173] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [178] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 + [179] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 + [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [184] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [184] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [185] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [185] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [187] (word) rem16u#1 ← (word) divr16u::rem#11 + [188] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [188] return + [189] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@10 - [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) - [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) + [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [191] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [191] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [192] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [192] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [192] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [192] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [193] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [193] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [199] return + [200] return to:@return bitmap_init: scope:[bitmap_init] from main::@9 - [200] phi() + [201] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [201] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [201] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [202] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [202] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [205] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [206] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [208] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) - [208] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [209] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) + [209] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [218] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [219] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [221] return + [222] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [222] phi() + [223] phi() to:bitmap_init::@2 fill: scope:[fill] from main::@8 - [223] phi() + [224] phi() to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [224] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) - [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 - [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 + [225] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) + [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 + [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [228] return + [229] return to:@return diff --git a/src/test/ref/examples/sinplotter/sine-plotter.log b/src/test/ref/examples/sinplotter/sine-plotter.log index 53158a0cf..64721ae10 100644 --- a/src/test/ref/examples/sinplotter/sine-plotter.log +++ b/src/test/ref/examples/sinplotter/sine-plotter.log @@ -7,22 +7,89 @@ CONTROL FLOW GRAPH SSA (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@5 -@5: scope:[] from @begin + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @4 (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@16 + to:@9 divr16u: scope:[divr16u] from div32u16u div32u16u::@2 (word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@2/(word) divr16u::divisor#1 ) (word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@2/(word) divr16u::dividend#2 ) @@ -143,6 +210,14 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3 (word) rem16u#5 ← (word) rem16u#14 return to:@return +@9: scope:[] from @6 + (word) rem16u#38 ← phi( @6/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@10 +@10: scope:[] from @9 + (word) rem16u#36 ← phi( @9/(word) rem16u#38 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@17 mul16u: scope:[mul16u] from mul16s mulu16_sel (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 ) (word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 ) @@ -222,6 +297,7 @@ mul16s::@3: scope:[mul16s] from mul16s::@6 (signed word) mul16s::a#5 ← phi( mul16s::@6/(signed word) mul16s::a#2 ) (signed word) mul16s::b#3 ← phi( mul16s::@6/(signed word) mul16s::b#4 ) (dword) mul16s::m#3 ← phi( mul16s::@6/(dword) mul16s::m#0 ) + (word~) mul16s::$5 ← > (dword) mul16s::m#3 (word~) mul16s::$6 ← > (dword) mul16s::m#3 (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b#3 (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 @@ -236,6 +312,7 @@ mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 (signed word) mul16s::a#3 ← phi( mul16s::@1/(signed word) mul16s::a#4 ) (dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 ) + (word~) mul16s::$11 ← > (dword) mul16s::m#5 (word~) mul16s::$12 ← > (dword) mul16s::m#5 (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a#3 (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 @@ -247,12 +324,15 @@ mul16s::@return: scope:[mul16s] from mul16s::@2 (signed dword) mul16s::return#1 ← (signed dword) mul16s::return#3 return to:@return -@16: scope:[] from @5 - (word) rem16u#34 ← phi( @5/(word) rem16u#0 ) +@17: scope:[] from @10 + (word) rem16u#34 ← phi( @10/(word) rem16u#36 ) (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 - to:@25 + (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 + to:@26 sin16s_gen2: scope:[sin16s_gen2] from main::@11 (signed word*) sin16s_gen2::sintab#6 ← phi( main::@11/(signed word*) sin16s_gen2::sintab#1 ) (word) rem16u#21 ← phi( main::@11/(word) rem16u#23 ) @@ -503,12 +583,12 @@ fill::@1: scope:[fill] from fill fill::@1 fill::@return: scope:[fill] from fill::@1 return to:@return -@25: scope:[] from @16 - (word) rem16u#32 ← phi( @16/(word) rem16u#34 ) +@26: scope:[] from @17 + (word) rem16u#32 ← phi( @17/(word) rem16u#34 ) (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@28 + to:@29 bitmap_init: scope:[bitmap_init] from main::@9 (byte*) bitmap_init::bitmap#5 ← phi( main::@9/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -616,8 +696,8 @@ bitmap_plot: scope:[bitmap_plot] from render_sine::@5 render_sine::@7 bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return -@28: scope:[] from @25 - (word) rem16u#30 ← phi( @25/(word) rem16u#32 ) +@29: scope:[] from @26 + (word) rem16u#30 ← phi( @26/(word) rem16u#32 ) (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (word) SIN_SIZE#0 ← (word/signed word/dword/signed dword) 512 @@ -630,12 +710,12 @@ bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot } .pc = pc_restore }} - to:@31 -main: scope:[main] from @31 - (signed word*) sin2#21 ← phi( @31/(signed word*) sin2#22 ) - (word) rem16u#43 ← phi( @31/(word) rem16u#25 ) - (byte*) BITMAP#10 ← phi( @31/(byte*) BITMAP#11 ) - (byte*) SCREEN#1 ← phi( @31/(byte*) SCREEN#4 ) + to:@32 +main: scope:[main] from @32 + (signed word*) sin2#21 ← phi( @32/(signed word*) sin2#22 ) + (word) rem16u#45 ← phi( @32/(word) rem16u#25 ) + (byte*) BITMAP#10 ← phi( @32/(byte*) BITMAP#11 ) + (byte*) SCREEN#1 ← phi( @32/(byte*) SCREEN#4 ) asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -647,7 +727,7 @@ main: scope:[main] from @31 to:main::vicSelectGfxBank1 main::vicSelectGfxBank1: scope:[main] from main (signed word*) sin2#20 ← phi( main/(signed word*) sin2#21 ) - (word) rem16u#42 ← phi( main/(word) rem16u#43 ) + (word) rem16u#44 ← phi( main/(word) rem16u#45 ) (byte*) BITMAP#9 ← phi( main/(byte*) BITMAP#10 ) (byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#1 ) (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 ) @@ -656,7 +736,7 @@ main::vicSelectGfxBank1: scope:[main] from main to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 (signed word*) sin2#19 ← phi( main::vicSelectGfxBank1/(signed word*) sin2#20 ) - (word) rem16u#41 ← phi( main::vicSelectGfxBank1/(word) rem16u#42 ) + (word) rem16u#43 ← phi( main::vicSelectGfxBank1/(word) rem16u#44 ) (byte*) BITMAP#7 ← phi( main::vicSelectGfxBank1/(byte*) BITMAP#9 ) (byte*) SCREEN#9 ← phi( main::vicSelectGfxBank1/(byte*) SCREEN#10 ) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ) @@ -668,7 +748,7 @@ main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 to:main::vicSelectGfxBank1_toDd001_@return main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001 (signed word*) sin2#18 ← phi( main::vicSelectGfxBank1_toDd001/(signed word*) sin2#19 ) - (word) rem16u#40 ← phi( main::vicSelectGfxBank1_toDd001/(word) rem16u#41 ) + (word) rem16u#42 ← phi( main::vicSelectGfxBank1_toDd001/(word) rem16u#43 ) (byte*) BITMAP#5 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) BITMAP#7 ) (byte*) SCREEN#7 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SCREEN#9 ) (byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 ) @@ -676,7 +756,7 @@ main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBa to:main::vicSelectGfxBank1_@1 main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return (signed word*) sin2#17 ← phi( main::vicSelectGfxBank1_toDd001_@return/(signed word*) sin2#18 ) - (word) rem16u#39 ← phi( main::vicSelectGfxBank1_toDd001_@return/(word) rem16u#40 ) + (word) rem16u#41 ← phi( main::vicSelectGfxBank1_toDd001_@return/(word) rem16u#42 ) (byte*) BITMAP#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) BITMAP#5 ) (byte*) SCREEN#5 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SCREEN#7 ) (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 ) @@ -685,7 +765,7 @@ main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@ to:main::@7 main::@7: scope:[main] from main::vicSelectGfxBank1_@1 (signed word*) sin2#16 ← phi( main::vicSelectGfxBank1_@1/(signed word*) sin2#17 ) - (word) rem16u#38 ← phi( main::vicSelectGfxBank1_@1/(word) rem16u#39 ) + (word) rem16u#40 ← phi( main::vicSelectGfxBank1_@1/(word) rem16u#41 ) (byte*) BITMAP#1 ← phi( main::vicSelectGfxBank1_@1/(byte*) BITMAP#3 ) (byte*) SCREEN#2 ← phi( main::vicSelectGfxBank1_@1/(byte*) SCREEN#5 ) *((byte*) D016#0) ← (byte) VIC_CSEL#0 @@ -694,7 +774,7 @@ main::@7: scope:[main] from main::vicSelectGfxBank1_@1 to:main::toD0181 main::toD0181: scope:[main] from main::@7 (signed word*) sin2#15 ← phi( main::@7/(signed word*) sin2#16 ) - (word) rem16u#37 ← phi( main::@7/(word) rem16u#38 ) + (word) rem16u#39 ← phi( main::@7/(word) rem16u#40 ) (byte*) BITMAP#8 ← phi( main::@7/(byte*) BITMAP#1 ) (byte*) SCREEN#8 ← phi( main::@7/(byte*) SCREEN#2 ) (byte*) main::toD0181_gfx#1 ← phi( main::@7/(byte*) main::toD0181_gfx#0 ) @@ -712,7 +792,7 @@ main::toD0181: scope:[main] from main::@7 to:main::toD0181_@return main::toD0181_@return: scope:[main] from main::toD0181 (signed word*) sin2#14 ← phi( main::toD0181/(signed word*) sin2#15 ) - (word) rem16u#36 ← phi( main::toD0181/(word) rem16u#37 ) + (word) rem16u#37 ← phi( main::toD0181/(word) rem16u#39 ) (byte*) BITMAP#6 ← phi( main::toD0181/(byte*) BITMAP#8 ) (byte*) SCREEN#6 ← phi( main::toD0181/(byte*) SCREEN#8 ) (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) @@ -720,7 +800,7 @@ main::toD0181_@return: scope:[main] from main::toD0181 to:main::@8 main::@8: scope:[main] from main::toD0181_@return (signed word*) sin2#13 ← phi( main::toD0181_@return/(signed word*) sin2#14 ) - (word) rem16u#35 ← phi( main::toD0181_@return/(word) rem16u#36 ) + (word) rem16u#35 ← phi( main::toD0181_@return/(word) rem16u#37 ) (byte*) BITMAP#4 ← phi( main::toD0181_@return/(byte*) BITMAP#6 ) (byte*) SCREEN#3 ← phi( main::toD0181_@return/(byte*) SCREEN#6 ) (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 ) @@ -881,30 +961,41 @@ wrap_y::@return: scope:[wrap_y] from wrap_y::@6 (byte) wrap_y::return#3 ← (byte) wrap_y::return#6 return to:@return -@31: scope:[] from @28 - (signed word*) sin2#22 ← phi( @28/(signed word*) sin2#0 ) - (byte*) BITMAP#11 ← phi( @28/(byte*) BITMAP#0 ) - (word) rem16u#25 ← phi( @28/(word) rem16u#30 ) - (byte*) SCREEN#4 ← phi( @28/(byte*) SCREEN#0 ) +@32: scope:[] from @29 + (signed word*) sin2#22 ← phi( @29/(signed word*) sin2#0 ) + (byte*) BITMAP#11 ← phi( @29/(byte*) BITMAP#0 ) + (word) rem16u#25 ← phi( @29/(word) rem16u#30 ) + (byte*) SCREEN#4 ← phi( @29/(byte*) SCREEN#0 ) call main - to:@32 -@32: scope:[] from @31 - (word) rem16u#19 ← phi( @31/(word) rem16u#9 ) + to:@33 +@33: scope:[] from @32 + (word) rem16u#19 ← phi( @32/(word) rem16u#9 ) (word) rem16u#10 ← (word) rem16u#19 to:@end -@end: scope:[] from @32 +@end: scope:[] from @33 SYMBOL TABLE SSA -(label) @16 -(label) @25 -(label) @28 -(label) @31 +(label) @10 +(label) @17 +(label) @26 +(label) @29 (label) @32 -(label) @5 +(label) @33 +(label) @4 +(label) @6 +(label) @9 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte*) BITMAP (byte*) BITMAP#0 (byte*) BITMAP#1 @@ -918,30 +1009,118 @@ SYMBOL TABLE SSA (byte*) BITMAP#7 (byte*) BITMAP#8 (byte*) BITMAP#9 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A#0 (byte*) CIA2_PORT_A_DDR (byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 (byte*) D011 (byte*) D011#0 (byte*) D016 (byte*) D016#0 (byte*) D018 (byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(word) PI2_u4f12 +(word) PI2_u4f12#0 (dword) PI2_u4f28 (dword) PI2_u4f28#0 +(byte) PINK +(byte) PINK#0 +(word) PI_HALF_u4f12 +(word) PI_HALF_u4f12#0 (dword) PI_HALF_u4f28 (dword) PI_HALF_u4f28#0 +(word) PI_u4f12 +(word) PI_u4f12#0 (dword) PI_u4f28 (dword) PI_u4f28#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 (byte*) PROCPORT_DDR (byte*) PROCPORT_DDR#0 (byte) PROCPORT_DDR_MEMORY_MASK (byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 (byte) PROCPORT_RAM_IO (byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 +(byte*) RASTER +(byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -956,16 +1135,54 @@ SYMBOL TABLE SSA (byte*) SCREEN#9 (word) SIN_SIZE (word) SIN_SIZE#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 (byte) VIC_BMM (byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 (byte) VIC_CSEL (byte) VIC_CSEL#0 (byte) VIC_DEN (byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 (byte) VIC_RSEL (byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 (byte) WHITE (byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) bitmap_clear() (byte*~) bitmap_clear::$0 (bool~) bitmap_clear::$1 @@ -1270,6 +1487,7 @@ SYMBOL TABLE SSA (word~) mul16s::$0 (word~) mul16s::$1 (bool~) mul16s::$10 +(word~) mul16s::$11 (word~) mul16s::$12 (word~) mul16s::$13 (word~) mul16s::$14 @@ -1279,6 +1497,7 @@ SYMBOL TABLE SSA (dword~) mul16s::$2 (bool~) mul16s::$3 (bool~) mul16s::$4 +(word~) mul16s::$5 (word~) mul16s::$6 (word~) mul16s::$7 (word~) mul16s::$8 @@ -1408,6 +1627,8 @@ SYMBOL TABLE SSA (word) mulu16_sel::v2#3 (word) mulu16_sel::v2#4 (word) mulu16_sel::v2#5 +(signed word) rem16s +(signed word) rem16s#0 (word) rem16u (word) rem16u#0 (word) rem16u#1 @@ -1448,11 +1669,17 @@ SYMBOL TABLE SSA (word) rem16u#41 (word) rem16u#42 (word) rem16u#43 +(word) rem16u#44 +(word) rem16u#45 (word) rem16u#5 (word) rem16u#6 (word) rem16u#7 (word) rem16u#8 (word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (void()) render_sine() (word~) render_sine::$0 (signed word*~) render_sine::$1 @@ -1752,6 +1979,7 @@ Alias (word) divr16u::return#3 = (word) divr16u::return#6 Alias (word) rem16u#13 = (word) rem16u#4 (word) rem16u#14 (word) rem16u#5 Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword) div32u16u::return#3 (dword) div32u16u::return#1 +Alias (word) rem16u#0 = (word) rem16u#38 (word) rem16u#36 (word) rem16u#34 (word) rem16u#32 (word) rem16u#30 (word) rem16u#25 Alias (word) mul16u::a#3 = (word) mul16u::a#4 (word) mul16u::a#7 Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#4 (dword) mul16u::return#1 @@ -1769,7 +1997,6 @@ Alias (signed dword) mul16s::return#0 = (signed dword~) mul16s::$15 (signed dwor Alias (dword) mul16s::m#5 = (dword) mul16s::m#6 Alias (signed word) mul16s::a#3 = (signed word) mul16s::a#4 Alias (word~) mul16s::$17 = (word~) mul16s::$14 -Alias (word) rem16u#0 = (word) rem16u#34 (word) rem16u#32 (word) rem16u#30 (word) rem16u#25 Alias (signed word) sin16s_gen2::ampl#0 = (signed word~) sin16s_gen2::$0 (signed word) sin16s_gen2::ampl#3 Alias (signed word) sin16s_gen2::offs#0 = (signed word~) sin16s_gen2::$2 (signed word) sin16s_gen2::offs#4 Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 @@ -1832,7 +2059,7 @@ Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 Alias (byte*) SCREEN#1 = (byte*) SCREEN#10 (byte*) SCREEN#9 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#2 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#3 Alias (byte*) BITMAP#1 = (byte*) BITMAP#9 (byte*) BITMAP#10 (byte*) BITMAP#7 (byte*) BITMAP#5 (byte*) BITMAP#3 (byte*) BITMAP#8 (byte*) BITMAP#6 (byte*) BITMAP#4 (byte*) BITMAP#2 -Alias (word) rem16u#23 = (word) rem16u#42 (word) rem16u#43 (word) rem16u#41 (word) rem16u#40 (word) rem16u#39 (word) rem16u#38 (word) rem16u#37 (word) rem16u#36 (word) rem16u#35 (word) rem16u#33 (word) rem16u#27 +Alias (word) rem16u#23 = (word) rem16u#44 (word) rem16u#45 (word) rem16u#43 (word) rem16u#42 (word) rem16u#41 (word) rem16u#40 (word) rem16u#39 (word) rem16u#37 (word) rem16u#35 (word) rem16u#33 (word) rem16u#27 Alias (signed word*) sin2#11 = (signed word*) sin2#20 (signed word*) sin2#21 (signed word*) sin2#19 (signed word*) sin2#18 (signed word*) sin2#17 (signed word*) sin2#16 (signed word*) sin2#15 (signed word*) sin2#14 (signed word*) sin2#13 (signed word*) sin2#12 (signed word*) sin2#9 (signed word*) sin2#6 Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0 Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 @@ -1950,26 +2177,96 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 Constant (const byte) VIC_BMM#0 = 32 Constant (const byte) VIC_DEN#0 = 16 Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 Constant (const byte) VIC_CSEL#0 = 8 Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte) rem8u#0 = 0 Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const dword) mul16u::res#0 = 0 Constant (const dword) PI2_u4f28#0 = 1686629713 Constant (const dword) PI_u4f28#0 = 843314857 Constant (const dword) PI_HALF_u4f28#0 = 421657428 +Constant (const word) PI2_u4f12#0 = 25736 +Constant (const word) PI_u4f12#0 = 12868 +Constant (const word) PI_HALF_u4f12#0 = 6434 Constant (const dword) sin16s_gen2::x#0 = 0 Constant (const word) sin16s_gen2::i#0 = 0 Constant (const byte) sin16s::isUpper#0 = 0 @@ -2061,6 +2358,7 @@ Eliminating Noop Cast (signed word~) sin16s::$20 ← ((signed word)) (word) sin1 Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3 Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3 Successful SSA optimization Pass2NopCastElimination +Eliminating variable (word~) mul16s::$11 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$12 from unused block mul16s::@4 Eliminating variable (word~) mul16s::$17 from unused block mul16s::@4 Eliminating variable (dword) mul16s::m#2 from unused block mul16s::@4 @@ -2078,16 +2376,19 @@ Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) 200 Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40 -Culled Empty Block (label) @5 +Culled Empty Block (label) @4 +Culled Empty Block (label) @6 +Culled Empty Block (label) @9 +Culled Empty Block (label) @10 Culled Empty Block (label) mul16u::@3 -Culled Empty Block (label) @16 -Culled Empty Block (label) @25 +Culled Empty Block (label) @17 +Culled Empty Block (label) @26 Culled Empty Block (label) bitmap_init::@6 Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return Culled Empty Block (label) main::toD0181_@return Culled Empty Block (label) main::@13 Culled Empty Block (label) main::@1 -Culled Empty Block (label) @32 +Culled Empty Block (label) @33 Successful SSA optimization Pass2CullEmptyBlocks Alias (dword) div32u16u::return#0 = (dword~) div32u16u::$4 Alias (dword) mul16s::m#4 = (dword) mul16s::m#5 @@ -2206,7 +2507,7 @@ Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @31 +Adding NOP phi() at start of @32 Adding NOP phi() at start of @end Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of main::toD0181 @@ -2227,9 +2528,9 @@ Calls in [main] to fill:15 bitmap_init:17 bitmap_clear:19 sin16s_gen2:21 render_ Calls in [render_sine] to wrap_y:32 bitmap_plot:39 wrap_y:45 bitmap_plot:52 Calls in [sin16s_gen2] to div32u16u:84 sin16s:89 mul16s:92 Calls in [mul16s] to mul16u:107 -Calls in [sin16s] to mulu16_sel:151 mulu16_sel:158 mulu16_sel:163 mulu16_sel:171 mulu16_sel:178 -Calls in [mulu16_sel] to mul16u:196 -Calls in [div32u16u] to divr16u:203 divr16u:208 +Calls in [sin16s] to mulu16_sel:152 mulu16_sel:159 mulu16_sel:164 mulu16_sel:172 mulu16_sel:179 +Calls in [mulu16_sel] to mul16u:197 +Calls in [div32u16u] to divr16u:204 divr16u:209 Created 45 initial phi equivalence classes Coalesced [31] wrap_y::y#10 ← wrap_y::y#0 @@ -2248,57 +2549,57 @@ Coalesced [82] wrap_y::y#13 ← wrap_y::y#2 Coalesced [103] sin16s_gen2::x#5 ← sin16s_gen2::x#1 Coalesced [104] sin16s_gen2::sintab#7 ← sin16s_gen2::sintab#0 Coalesced [105] sin16s_gen2::i#5 ← sin16s_gen2::i#1 -Coalesced [114] mul16s::m#7 ← mul16s::m#1 -Coalesced [118] mul16s::m#8 ← mul16s::m#0 -Coalesced [121] mul16u::a#10 ← mul16u::a#6 -Coalesced [122] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [129] mul16u::res#9 ← mul16u::res#1 -Coalesced [133] mul16u::a#11 ← mul16u::a#0 -Coalesced [134] mul16u::res#7 ← mul16u::res#6 -Coalesced [135] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [136] mul16u::res#8 ← mul16u::res#2 -Coalesced [139] sin16s::x#9 ← sin16s::x#1 -Coalesced [143] sin16s::x#11 ← sin16s::x#2 -Coalesced [149] mulu16_sel::v1#8 ← mulu16_sel::v1#0 -Coalesced [150] mulu16_sel::v2#8 ← mulu16_sel::v2#0 -Coalesced [156] mulu16_sel::v1#9 ← mulu16_sel::v1#1 -Coalesced [157] mulu16_sel::v2#9 ← mulu16_sel::v2#1 -Coalesced [162] mulu16_sel::v1#10 ← mulu16_sel::v1#2 -Coalesced [169] mulu16_sel::v1#6 ← mulu16_sel::v1#3 -Coalesced [170] mulu16_sel::v2#6 ← mulu16_sel::v2#3 -Coalesced [176] mulu16_sel::v1#7 ← mulu16_sel::v1#4 -Coalesced [177] mulu16_sel::v2#7 ← mulu16_sel::v2#4 -Coalesced [185] sin16s::return#6 ← sin16s::sinx#1 -Coalesced [189] sin16s::x#10 ← sin16s::x#4 -Coalesced [190] sin16s::x#8 ← sin16s::x#0 -Coalesced [194] mul16u::b#3 ← mul16u::b#1 -Coalesced [195] mul16u::a#9 ← mul16u::a#2 -Coalesced [207] divr16u::rem#12 ← divr16u::rem#4 -Coalesced [214] divr16u::rem#13 ← divr16u::rem#10 -Coalesced [215] divr16u::dividend#9 ← divr16u::dividend#5 -Coalesced [222] divr16u::rem#16 ← divr16u::rem#1 -Coalesced [229] divr16u::rem#18 ← divr16u::rem#2 -Coalesced [230] divr16u::return#8 ← divr16u::quotient#2 -Coalesced [236] divr16u::rem#14 ← divr16u::rem#11 -Coalesced [237] divr16u::dividend#10 ← divr16u::dividend#0 -Coalesced [238] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [239] divr16u::i#7 ← divr16u::i#1 -Coalesced [240] divr16u::rem#17 ← divr16u::rem#6 -Coalesced [241] divr16u::return#7 ← divr16u::quotient#1 -Coalesced [242] divr16u::rem#15 ← divr16u::rem#0 -Coalesced [246] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [255] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [256] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [257] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [258] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [278] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [283] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [284] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [285] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [286] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [287] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [288] bitmap_init::bits#6 ← bitmap_init::bits#1 -Coalesced [295] fill::addr#3 ← fill::addr#1 +Coalesced [115] mul16s::m#7 ← mul16s::m#1 +Coalesced [119] mul16s::m#8 ← mul16s::m#0 +Coalesced [122] mul16u::a#10 ← mul16u::a#6 +Coalesced [123] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [130] mul16u::res#9 ← mul16u::res#1 +Coalesced [134] mul16u::a#11 ← mul16u::a#0 +Coalesced [135] mul16u::res#7 ← mul16u::res#6 +Coalesced [136] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [137] mul16u::res#8 ← mul16u::res#2 +Coalesced [140] sin16s::x#9 ← sin16s::x#1 +Coalesced [144] sin16s::x#11 ← sin16s::x#2 +Coalesced [150] mulu16_sel::v1#8 ← mulu16_sel::v1#0 +Coalesced [151] mulu16_sel::v2#8 ← mulu16_sel::v2#0 +Coalesced [157] mulu16_sel::v1#9 ← mulu16_sel::v1#1 +Coalesced [158] mulu16_sel::v2#9 ← mulu16_sel::v2#1 +Coalesced [163] mulu16_sel::v1#10 ← mulu16_sel::v1#2 +Coalesced [170] mulu16_sel::v1#6 ← mulu16_sel::v1#3 +Coalesced [171] mulu16_sel::v2#6 ← mulu16_sel::v2#3 +Coalesced [177] mulu16_sel::v1#7 ← mulu16_sel::v1#4 +Coalesced [178] mulu16_sel::v2#7 ← mulu16_sel::v2#4 +Coalesced [186] sin16s::return#6 ← sin16s::sinx#1 +Coalesced [190] sin16s::x#10 ← sin16s::x#4 +Coalesced [191] sin16s::x#8 ← sin16s::x#0 +Coalesced [195] mul16u::b#3 ← mul16u::b#1 +Coalesced [196] mul16u::a#9 ← mul16u::a#2 +Coalesced [208] divr16u::rem#12 ← divr16u::rem#4 +Coalesced [215] divr16u::rem#13 ← divr16u::rem#10 +Coalesced [216] divr16u::dividend#9 ← divr16u::dividend#5 +Coalesced [223] divr16u::rem#16 ← divr16u::rem#1 +Coalesced [230] divr16u::rem#18 ← divr16u::rem#2 +Coalesced [231] divr16u::return#8 ← divr16u::quotient#2 +Coalesced [237] divr16u::rem#14 ← divr16u::rem#11 +Coalesced [238] divr16u::dividend#10 ← divr16u::dividend#0 +Coalesced [239] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [240] divr16u::i#7 ← divr16u::i#1 +Coalesced [241] divr16u::rem#17 ← divr16u::rem#6 +Coalesced [242] divr16u::return#7 ← divr16u::quotient#1 +Coalesced [243] divr16u::rem#15 ← divr16u::rem#0 +Coalesced [247] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [256] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [257] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [258] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [259] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [279] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [284] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [285] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [286] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [287] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [288] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [289] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced [296] fill::addr#3 ← fill::addr#1 Coalesced down to 31 phi equivalence classes Culled Empty Block (label) render_sine::@3 Culled Empty Block (label) render_sine::@9 @@ -2319,7 +2620,7 @@ Culled Empty Block (label) bitmap_init::@12 Culled Empty Block (label) bitmap_init::@9 Culled Empty Block (label) fill::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @31 +Adding NOP phi() at start of @32 Adding NOP phi() at start of @end Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of main::toD0181 @@ -2338,8 +2639,8 @@ Adding NOP phi() at start of fill FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@28 -@28: scope:[] from @begin + to:@29 +@29: scope:[] from @begin kickasm {{ .label pc_restore = * .pc = $1400 .for(var i=0; i<512; i++) { @@ -2347,14 +2648,14 @@ FINAL CONTROL FLOW GRAPH } .pc = pc_restore }} - to:@31 -@31: scope:[] from @28 + to:@32 +@32: scope:[] from @29 [2] phi() [3] call main to:@end -@end: scope:[] from @31 +@end: scope:[] from @32 [4] phi() -main: scope:[main] from @31 +main: scope:[main] from @32 asm { sei } [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -2525,288 +2826,356 @@ mul16s::@6: scope:[mul16s] from mul16s [94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@6 - [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 - [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 + [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 + [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [98] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [99] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 - [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [100] return + [101] return to:@return mul16u: scope:[mul16u] from mul16s mulu16_sel - [101] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) - [101] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) - [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [102] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) + [102] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) + [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [103] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [103] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [103] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [104] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [104] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [104] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [105] return + [106] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [109] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [110] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 sin16s: scope:[sin16s] from sin16s_gen2::@1 - [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 + [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 to:sin16s::@4 sin16s::@4: scope:[sin16s] from sin16s - [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 + [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 to:sin16s::@1 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 - [114] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) - [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 + [115] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [115] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) + [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 to:sin16s::@5 sin16s::@5: scope:[sin16s] from sin16s::@1 - [116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 + [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 to:sin16s::@2 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 - [117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) - [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 - [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 - [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 - [122] call mulu16_sel - [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + [118] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) + [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 + [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 + [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 + [123] call mulu16_sel + [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 to:sin16s::@8 sin16s::@8: scope:[sin16s] from sin16s::@2 - [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 - [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 - [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 - [127] call mulu16_sel - [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 + [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 + [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 + [128] call mulu16_sel + [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 to:sin16s::@9 sin16s::@9: scope:[sin16s] from sin16s::@8 - [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 - [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 - [131] call mulu16_sel - [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + [132] call mulu16_sel + [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 to:sin16s::@10 sin16s::@10: scope:[sin16s] from sin16s::@9 - [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 - [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 - [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 - [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 - [137] call mulu16_sel - [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 + [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 + [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 + [138] call mulu16_sel + [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 to:sin16s::@11 sin16s::@11: scope:[sin16s] from sin16s::@10 - [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 - [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 - [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 - [142] call mulu16_sel - [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 + [143] call mulu16_sel + [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 to:sin16s::@12 sin16s::@12: scope:[sin16s] from sin16s::@11 - [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 - [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 - [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 + [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 + [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 to:sin16s::@6 sin16s::@6: scope:[sin16s] from sin16s::@12 - [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 + [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 to:sin16s::@3 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 - [149] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) + [150] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) to:sin16s::@return sin16s::@return: scope:[sin16s] from sin16s::@3 - [150] return + [151] return to:@return sin16s::@15: scope:[sin16s] from sin16s::@12 - [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 to:sin16s::@3 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 - [152] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [152] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) - [152] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) - [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 - [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 - [155] call mul16u - [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [153] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [153] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) + [153] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) + [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 + [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + [156] call mul16u + [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mulu16_sel::@2 mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel - [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 - [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 - [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 + [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 + [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 to:mulu16_sel::@return mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 - [160] return + [161] return to:@return div32u16u: scope:[div32u16u] from sin16s_gen2 - [161] phi() - [162] call divr16u - [163] (word) divr16u::return#2 ← (word) divr16u::return#0 + [162] phi() + [163] call divr16u + [164] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div32u16u::@2 div32u16u::@2: scope:[div32u16u] from div32u16u - [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 - [165] (word) divr16u::rem#4 ← (word) rem16u#1 - [166] call divr16u - [167] (word) divr16u::return#3 ← (word) divr16u::return#0 + [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 + [166] (word) divr16u::rem#4 ← (word) rem16u#1 + [167] call divr16u + [168] (word) divr16u::return#3 ← (word) divr16u::return#0 to:div32u16u::@3 div32u16u::@3: scope:[div32u16u] from div32u16u::@2 - [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 - [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 + [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 to:div32u16u::@return div32u16u::@return: scope:[div32u16u] from div32u16u::@3 - [170] return + [171] return to:@return divr16u: scope:[divr16u] from div32u16u div32u16u::@2 - [171] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) - [171] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) + [172] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) + [172] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [172] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [172] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [172] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) - [172] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) - [173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 - [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [173] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [173] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [173] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) + [173] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) + [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 + [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [178] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 + [179] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 + [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [184] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [184] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) - [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [185] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [185] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) + [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@6 divr16u::@6: scope:[divr16u] from divr16u::@3 - [187] (word) rem16u#1 ← (word) divr16u::rem#11 + [188] (word) rem16u#1 ← (word) divr16u::rem#11 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 - [188] return + [189] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@10 - [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) - [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) + [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [191] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [191] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [192] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [192] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [192] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [192] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [193] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [193] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [199] return + [200] return to:@return bitmap_init: scope:[bitmap_init] from main::@9 - [200] phi() + [201] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [201] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [201] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [202] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [202] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [205] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [206] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [208] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) - [208] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [209] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) + [209] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [218] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [219] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [221] return + [222] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [222] phi() + [223] phi() to:bitmap_init::@2 fill: scope:[fill] from main::@8 - [223] phi() + [224] phi() to:fill::@1 fill::@1: scope:[fill] from fill fill::@1 - [224] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) - [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 - [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 - [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 + [225] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 ) + [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 + [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 + [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 to:fill::@return fill::@return: scope:[fill] from fill::@1 - [228] return + [229] return to:@return VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte*) BITMAP +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 (byte*) D016 (byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(word) PI2_u4f12 (dword) PI2_u4f28 +(byte) PINK +(word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 +(word) PI_u4f12 (dword) PI_u4f28 (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED (byte*) SCREEN (word) SIN_SIZE +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 (byte) VIC_CSEL (byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 2.0 (byte*) bitmap_clear::bitmap @@ -2928,6 +3297,7 @@ VARIABLE REGISTER WEIGHTS (byte) main::vicSelectGfxBank1_toDd001_return (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 4.0 +(word~) mul16s::$5 20.0 (word~) mul16s::$6 4.0 (signed word) mul16s::a (signed word) mul16s::a#0 2.6 @@ -2986,8 +3356,11 @@ VARIABLE REGISTER WEIGHTS (word) mulu16_sel::v2#3 4.0 (word) mulu16_sel::v2#4 4.0 (word) mulu16_sel::v2#5 5.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 0.8 +(signed byte) rem8s +(byte) rem8u (void()) render_sine() (word~) render_sine::$0 22.0 (signed word*~) render_sine::$1 22.0 @@ -3133,6 +3506,7 @@ Added variable sin16s_gen2::$5 to zero page equivalence class [ sin16s_gen2::$5 Added variable sin16s_gen2::$6 to zero page equivalence class [ sin16s_gen2::$6 ] Added variable sin16s_gen2::$8 to zero page equivalence class [ sin16s_gen2::$8 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] +Added variable mul16s::$5 to zero page equivalence class [ mul16s::$5 ] Added variable mul16s::$6 to zero page equivalence class [ mul16s::$6 ] Added variable mul16s::$16 to zero page equivalence class [ mul16s::$16 ] Added variable mul16s::return#0 to zero page equivalence class [ mul16s::return#0 ] @@ -3226,6 +3600,7 @@ Complete equivalence classes [ sin16s_gen2::$6 ] [ sin16s_gen2::$8 ] [ mul16u::return#2 ] +[ mul16s::$5 ] [ mul16s::$6 ] [ mul16s::$16 ] [ mul16s::return#0 ] @@ -3318,43 +3693,44 @@ Allocated zp ZP_DWORD:105 [ sin16s_gen2::$5 ] Allocated zp ZP_WORD:109 [ sin16s_gen2::$6 ] Allocated zp ZP_WORD:111 [ sin16s_gen2::$8 ] Allocated zp ZP_DWORD:113 [ mul16u::return#2 ] -Allocated zp ZP_WORD:117 [ mul16s::$6 ] -Allocated zp ZP_WORD:119 [ mul16s::$16 ] -Allocated zp ZP_DWORD:121 [ mul16s::return#0 ] -Allocated zp ZP_BYTE:125 [ mul16u::$1 ] -Allocated zp ZP_DWORD:126 [ sin16s::$6 ] -Allocated zp ZP_WORD:130 [ sin16s::x1#0 ] -Allocated zp ZP_WORD:132 [ mulu16_sel::return#0 ] -Allocated zp ZP_WORD:134 [ sin16s::x2#0 ] -Allocated zp ZP_WORD:136 [ mulu16_sel::return#1 ] -Allocated zp ZP_WORD:138 [ sin16s::x3#0 ] -Allocated zp ZP_WORD:140 [ mulu16_sel::return#2 ] -Allocated zp ZP_WORD:142 [ sin16s::x3_6#0 ] -Allocated zp ZP_WORD:144 [ sin16s::usinx#0 ] -Allocated zp ZP_WORD:146 [ mulu16_sel::return#10 ] -Allocated zp ZP_WORD:148 [ sin16s::x4#0 ] -Allocated zp ZP_WORD:150 [ mulu16_sel::return#11 ] -Allocated zp ZP_WORD:152 [ sin16s::x5#0 ] -Allocated zp ZP_WORD:154 [ sin16s::x5_128#0 ] -Allocated zp ZP_WORD:156 [ sin16s::usinx#1 ] -Allocated zp ZP_DWORD:158 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:162 [ mulu16_sel::$0 ] -Allocated zp ZP_DWORD:166 [ mulu16_sel::$1 ] -Allocated zp ZP_WORD:170 [ mulu16_sel::return#12 ] -Allocated zp ZP_WORD:172 [ divr16u::return#2 ] -Allocated zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] -Allocated zp ZP_WORD:176 [ divr16u::return#3 ] -Allocated zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] -Allocated zp ZP_DWORD:180 [ div32u16u::return#0 ] -Allocated zp ZP_BYTE:184 [ divr16u::$1 ] -Allocated zp ZP_BYTE:185 [ divr16u::$2 ] -Allocated zp ZP_WORD:186 [ rem16u#1 ] -Allocated zp ZP_WORD:188 [ bitmap_clear::$3 ] -Allocated zp ZP_BYTE:190 [ bitmap_init::$3 ] -Allocated zp ZP_BYTE:191 [ bitmap_init::$4 ] -Allocated zp ZP_BYTE:192 [ bitmap_init::$5 ] -Allocated zp ZP_BYTE:193 [ bitmap_init::$6 ] -Allocated zp ZP_BYTE:194 [ bitmap_init::$7 ] +Allocated zp ZP_WORD:117 [ mul16s::$5 ] +Allocated zp ZP_WORD:119 [ mul16s::$6 ] +Allocated zp ZP_WORD:121 [ mul16s::$16 ] +Allocated zp ZP_DWORD:123 [ mul16s::return#0 ] +Allocated zp ZP_BYTE:127 [ mul16u::$1 ] +Allocated zp ZP_DWORD:128 [ sin16s::$6 ] +Allocated zp ZP_WORD:132 [ sin16s::x1#0 ] +Allocated zp ZP_WORD:134 [ mulu16_sel::return#0 ] +Allocated zp ZP_WORD:136 [ sin16s::x2#0 ] +Allocated zp ZP_WORD:138 [ mulu16_sel::return#1 ] +Allocated zp ZP_WORD:140 [ sin16s::x3#0 ] +Allocated zp ZP_WORD:142 [ mulu16_sel::return#2 ] +Allocated zp ZP_WORD:144 [ sin16s::x3_6#0 ] +Allocated zp ZP_WORD:146 [ sin16s::usinx#0 ] +Allocated zp ZP_WORD:148 [ mulu16_sel::return#10 ] +Allocated zp ZP_WORD:150 [ sin16s::x4#0 ] +Allocated zp ZP_WORD:152 [ mulu16_sel::return#11 ] +Allocated zp ZP_WORD:154 [ sin16s::x5#0 ] +Allocated zp ZP_WORD:156 [ sin16s::x5_128#0 ] +Allocated zp ZP_WORD:158 [ sin16s::usinx#1 ] +Allocated zp ZP_DWORD:160 [ mul16u::return#3 ] +Allocated zp ZP_DWORD:164 [ mulu16_sel::$0 ] +Allocated zp ZP_DWORD:168 [ mulu16_sel::$1 ] +Allocated zp ZP_WORD:172 [ mulu16_sel::return#12 ] +Allocated zp ZP_WORD:174 [ divr16u::return#2 ] +Allocated zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] +Allocated zp ZP_WORD:178 [ divr16u::return#3 ] +Allocated zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] +Allocated zp ZP_DWORD:182 [ div32u16u::return#0 ] +Allocated zp ZP_BYTE:186 [ divr16u::$1 ] +Allocated zp ZP_BYTE:187 [ divr16u::$2 ] +Allocated zp ZP_WORD:188 [ rem16u#1 ] +Allocated zp ZP_WORD:190 [ bitmap_clear::$3 ] +Allocated zp ZP_BYTE:192 [ bitmap_init::$3 ] +Allocated zp ZP_BYTE:193 [ bitmap_init::$4 ] +Allocated zp ZP_BYTE:194 [ bitmap_init::$5 ] +Allocated zp ZP_BYTE:195 [ bitmap_init::$6 ] +Allocated zp ZP_BYTE:196 [ bitmap_init::$7 ] INITIAL ASM //SEG0 Basic Upstart @@ -3384,12 +3760,12 @@ INITIAL ASM .label BITMAP = $2000 .const SIN_SIZE = $200 .label sin2 = $1400 - .label rem16u = $ba + .label rem16u = $bc //SEG2 @begin bbegin: - jmp b28 -//SEG3 @28 -b28: + jmp b29 +//SEG3 @29 +b29: //SEG4 kickasm {{ .label pc_restore = * .pc = $1400 .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } .pc = pc_restore }} .label pc_restore = * .pc = $1400 @@ -3398,15 +3774,15 @@ b28: } .pc = pc_restore -//SEG5 [2] phi from @28 to @31 [phi:@28->@31] -b31_from_b28: - jmp b31 -//SEG6 @31 -b31: +//SEG5 [2] phi from @29 to @32 [phi:@29->@32] +b32_from_b29: + jmp b32 +//SEG6 @32 +b32: //SEG7 [3] call main jsr main -//SEG8 [4] phi from @31 to @end [phi:@31->@end] -bend_from_b31: +//SEG8 [4] phi from @32 to @end [phi:@32->@end] +bend_from_b32: jmp bend //SEG9 @end bend: @@ -3460,7 +3836,7 @@ main: { lda #toD0181_return sta D018 //SEG27 [15] call fill - //SEG28 [223] phi from main::@8 to fill [phi:main::@8->fill] + //SEG28 [224] phi from main::@8 to fill [phi:main::@8->fill] fill_from_b8: jsr fill //SEG29 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] @@ -3469,7 +3845,7 @@ main: { //SEG30 main::@9 b9: //SEG31 [17] call bitmap_init - //SEG32 [200] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG32 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] bitmap_init_from_b9: jsr bitmap_init //SEG33 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] @@ -3831,7 +4207,7 @@ sin16s_gen2: { .label x = $b .label i = $11 //SEG127 [71] call div32u16u - //SEG128 [161] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG128 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG129 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2 @@ -3994,10 +4370,11 @@ sin16s_gen2: { } //SEG159 mul16s mul16s: { - .label _6 = $75 - .label _16 = $77 + .label _5 = $75 + .label _6 = $77 + .label _16 = $79 .label m = $13 - .label return = $79 + .label return = $7b .label a = $63 .label return_2 = $65 //SEG160 [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 @@ -4006,10 +4383,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG161 [91] call mul16u - //SEG162 [101] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG162 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG163 [101] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG164 [101] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG163 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG164 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -4042,12 +4419,17 @@ mul16s: { jmp b3 //SEG169 mul16s::@3 b3: - //SEG170 [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG170 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG171 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG171 [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 + //SEG172 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz2_minus_vwuc1 lda _6 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG172 [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG173 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG173 [98] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG174 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG174 [98] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG175 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG175 mul16s::@1 + //SEG176 mul16s::@1 b1: jmp b2 - //SEG176 mul16s::@2 + //SEG177 mul16s::@2 b2: - //SEG177 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG178 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -4080,21 +4462,21 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG178 mul16s::@return + //SEG179 mul16s::@return breturn: - //SEG179 [100] return + //SEG180 [101] return rts } -//SEG180 mul16u +//SEG181 mul16u mul16u: { - .label _1 = $7d + .label _1 = $7f .label mb = $1f .label a = $19 .label res = $1b .label return = $71 .label b = $17 - .label return_3 = $9e - //SEG181 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_3 = $a0 + //SEG182 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -4102,44 +4484,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG182 [103] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG183 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG183 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG184 [103] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG184 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG185 [104] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG185 [103] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG186 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG186 mul16u::@1 + //SEG187 mul16u::@1 b1: - //SEG187 [104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG188 [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG188 mul16u::@return + //SEG189 mul16u::@return breturn: - //SEG189 [105] return + //SEG190 [106] return rts - //SEG190 mul16u::@2 + //SEG191 mul16u::@2 b2: - //SEG191 [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG192 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG192 [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG193 [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG193 mul16u::@7 + //SEG194 mul16u::@7 b7: - //SEG194 [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG195 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -4153,48 +4535,48 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG195 [109] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG196 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG196 [109] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG197 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG197 mul16u::@4 + //SEG198 mul16u::@4 b4: - //SEG198 [110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG199 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG199 [111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG200 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG200 [103] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG201 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG201 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG202 [103] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG203 [103] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG202 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG203 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG204 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG204 sin16s +//SEG205 sin16s sin16s: { - .label _6 = $7e + .label _6 = $80 .label x = $24 .label return = $61 - .label x1 = $82 - .label x2 = $86 - .label x3 = $8a - .label x3_6 = $8e - .label usinx = $90 - .label x4 = $94 - .label x5 = $98 - .label x5_128 = $9a - .label usinx_1 = $9c + .label x1 = $84 + .label x2 = $88 + .label x3 = $8c + .label x3_6 = $90 + .label usinx = $92 + .label x4 = $96 + .label x5 = $9a + .label x5_128 = $9c + .label usinx_1 = $9e .label return_1 = $28 .label sinx = $28 .label isUpper = $23 .label return_5 = $28 - //SEG205 [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG206 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -4212,9 +4594,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG206 sin16s::@4 + //SEG207 sin16s::@4 b4: - //SEG207 [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG208 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG208 [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG209 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG209 [114] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG210 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG210 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG211 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG211 [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG212 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG212 [114] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG213 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG213 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG214 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG214 sin16s::@1 + //SEG215 sin16s::@1 b1: - //SEG215 [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG216 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -4262,9 +4644,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG216 sin16s::@5 + //SEG217 sin16s::@5 b5: - //SEG217 [116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG218 [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG218 [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG219 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG219 [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG220 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG220 sin16s::@2 + //SEG221 sin16s::@2 b2: - //SEG221 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 + //SEG222 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz2_rol_3 lda x sta _6 lda x+1 @@ -4302,107 +4684,107 @@ sin16s: { rol _6+3 dey bne !- - //SEG222 [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG223 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG223 [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG224 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG224 [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG225 [122] call mulu16_sel - //SEG226 [152] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG226 [123] call mulu16_sel + //SEG227 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG227 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG228 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG228 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG229 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG229 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG230 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG230 [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG231 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return lda mulu16_sel.return_12+1 sta mulu16_sel.return+1 jmp b8 - //SEG231 sin16s::@8 + //SEG232 sin16s::@8 b8: - //SEG232 [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG233 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG233 [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 + //SEG234 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2 lda x2 sta mulu16_sel.v1 lda x2+1 sta mulu16_sel.v1+1 - //SEG234 [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG235 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG235 [127] call mulu16_sel - //SEG236 [152] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG236 [128] call mulu16_sel + //SEG237 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG237 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG238 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG238 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG239 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG239 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG240 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG240 [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG241 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_1 lda mulu16_sel.return_12+1 sta mulu16_sel.return_1+1 jmp b9 - //SEG241 sin16s::@9 + //SEG242 sin16s::@9 b9: - //SEG242 [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 + //SEG243 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2 lda mulu16_sel.return_1 sta x3 lda mulu16_sel.return_1+1 sta x3+1 - //SEG243 [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG244 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG244 [131] call mulu16_sel - //SEG245 [152] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG245 [132] call mulu16_sel + //SEG246 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG246 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG247 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu16_sel.select - //SEG247 [152] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG248 [153] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG248 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG249 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG249 [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG250 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_2 lda mulu16_sel.return_12+1 sta mulu16_sel.return_2+1 jmp b10 - //SEG250 sin16s::@10 + //SEG251 sin16s::@10 b10: - //SEG251 [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 + //SEG252 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2 lda mulu16_sel.return_2 sta x3_6 lda mulu16_sel.return_2+1 sta x3_6+1 - //SEG252 [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG253 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -4410,71 +4792,71 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG253 [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 + //SEG254 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2 lda x3 sta mulu16_sel.v1 lda x3+1 sta mulu16_sel.v1+1 - //SEG254 [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG255 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG255 [137] call mulu16_sel - //SEG256 [152] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG256 [138] call mulu16_sel + //SEG257 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG257 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG258 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG258 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG259 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG259 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG260 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG260 [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG261 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_10 lda mulu16_sel.return_12+1 sta mulu16_sel.return_10+1 jmp b11 - //SEG261 sin16s::@11 + //SEG262 sin16s::@11 b11: - //SEG262 [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 + //SEG263 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2 lda mulu16_sel.return_10 sta x4 lda mulu16_sel.return_10+1 sta x4+1 - //SEG263 [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 + //SEG264 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2 lda x4 sta mulu16_sel.v1 lda x4+1 sta mulu16_sel.v1+1 - //SEG264 [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG265 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG265 [142] call mulu16_sel - //SEG266 [152] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG266 [143] call mulu16_sel + //SEG267 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG267 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 + //SEG268 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu16_sel.select - //SEG268 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG269 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG269 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG270 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG270 [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG271 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return_12 sta mulu16_sel.return_11 lda mulu16_sel.return_12+1 sta mulu16_sel.return_11+1 jmp b12 - //SEG271 sin16s::@12 + //SEG272 sin16s::@12 b12: - //SEG272 [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 + //SEG273 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2 lda mulu16_sel.return_11 sta x5 lda mulu16_sel.return_11+1 sta x5+1 - //SEG273 [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 + //SEG274 [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_ror_4 lda x5+1 sta x5_128+1 lda x5 @@ -4485,7 +4867,7 @@ sin16s: { ror x5_128 dey bne !- - //SEG274 [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 + //SEG275 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3 lda usinx clc adc x5_128 @@ -4493,14 +4875,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx_1+1 - //SEG275 [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG276 [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG276 sin16s::@6 + //SEG277 sin16s::@6 b6: - //SEG277 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 + //SEG278 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2 sec lda usinx_1 eor #$ff @@ -4510,57 +4892,57 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG278 [149] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG279 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG279 [149] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG280 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG280 sin16s::@3 + //SEG281 sin16s::@3 b3: jmp breturn - //SEG281 sin16s::@return + //SEG282 sin16s::@return breturn: - //SEG282 [150] return + //SEG283 [151] return rts - //SEG283 sin16s::@15 + //SEG284 sin16s::@15 b15: - //SEG284 [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 + //SEG285 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2 lda usinx_1 sta return_5 lda usinx_1+1 sta return_5+1 jmp b3_from_b15 } -//SEG285 mulu16_sel +//SEG286 mulu16_sel mulu16_sel: { - .label _0 = $a2 - .label _1 = $a6 + .label _0 = $a4 + .label _1 = $a8 .label v1 = $2a .label v2 = $2c - .label return = $84 - .label return_1 = $88 - .label return_2 = $8c - .label return_10 = $92 - .label return_11 = $96 + .label return = $86 + .label return_1 = $8a + .label return_2 = $8e + .label return_10 = $94 + .label return_11 = $98 .label select = $2e - .label return_12 = $aa - //SEG286 [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + .label return_12 = $ac + //SEG287 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG287 [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 + //SEG288 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2 lda v2 sta mul16u.b lda v2+1 sta mul16u.b+1 - //SEG288 [155] call mul16u - //SEG289 [101] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG289 [156] call mul16u + //SEG290 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG290 [101] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG291 [101] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG291 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG292 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG292 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG293 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -4570,9 +4952,9 @@ mulu16_sel: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b2 - //SEG293 mulu16_sel::@2 + //SEG294 mulu16_sel::@2 b2: - //SEG294 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG295 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta _0 lda mul16u.return_3+1 @@ -4581,7 +4963,7 @@ mulu16_sel: { sta _0+2 lda mul16u.return_3+3 sta _0+3 - //SEG295 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 + //SEG296 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -4600,79 +4982,79 @@ mulu16_sel: { dex bne !- !e: - //SEG296 [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG297 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return_12 lda _1+3 sta return_12+1 jmp breturn - //SEG297 mulu16_sel::@return + //SEG298 mulu16_sel::@return breturn: - //SEG298 [160] return + //SEG299 [161] return rts } -//SEG299 div32u16u +//SEG300 div32u16u div32u16u: { - .label quotient_hi = $ae - .label quotient_lo = $b2 - .label return = $b4 + .label quotient_hi = $b0 + .label quotient_lo = $b4 + .label return = $b6 .label return_2 = $59 - //SEG300 [162] call divr16u - //SEG301 [171] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG301 [163] call divr16u + //SEG302 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG302 [171] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG303 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG303 [171] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG304 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG304 [163] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG305 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b2 - //SEG305 div32u16u::@2 + //SEG306 div32u16u::@2 b2: - //SEG306 [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG307 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta quotient_hi lda divr16u.return_2+1 sta quotient_hi+1 - //SEG307 [165] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 + //SEG308 [166] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2 lda rem16u sta divr16u.rem lda rem16u+1 sta divr16u.rem+1 - //SEG308 [166] call divr16u - //SEG309 [171] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG309 [167] call divr16u + //SEG310 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG310 [171] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG311 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG311 [171] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG312 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG312 [167] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG313 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 jmp b3 - //SEG313 div32u16u::@3 + //SEG314 div32u16u::@3 b3: - //SEG314 [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 + //SEG315 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2 lda divr16u.return_3 sta quotient_lo lda divr16u.return_3+1 sta quotient_lo+1 - //SEG315 [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG316 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -4682,79 +5064,79 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG316 div32u16u::@return + //SEG317 div32u16u::@return breturn: - //SEG317 [170] return + //SEG318 [171] return rts } -//SEG318 divr16u +//SEG319 divr16u divr16u: { - .label _1 = $b8 - .label _2 = $b9 + .label _1 = $ba + .label _2 = $bb .label rem = $2f .label dividend = $31 .label quotient = $33 .label i = $35 .label return = $33 - .label return_2 = $ac - .label return_3 = $b0 - //SEG319 [172] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $ae + .label return_3 = $b2 + //SEG320 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG320 [172] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG321 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG321 [172] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG322 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG322 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG323 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG323 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG324 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG324 [172] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG325 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG325 [172] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG326 [172] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG327 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG328 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG326 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG327 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG328 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG329 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG329 divr16u::@1 + //SEG330 divr16u::@1 b1: - //SEG330 [173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG331 [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 + //SEG332 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG332 [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG333 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG333 [176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG334 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG334 divr16u::@4 + //SEG335 divr16u::@4 b4: - //SEG335 [177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG336 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG336 [178] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG337 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG337 [178] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG338 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG338 divr16u::@2 + //SEG339 divr16u::@2 b2: - //SEG339 [179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG340 [180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG341 [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG342 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3_from_b2 @@ -4764,14 +5146,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG342 divr16u::@5 + //SEG343 divr16u::@5 b5: - //SEG343 [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG344 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG344 [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG345 [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #SIN_SIZE sta rem+1 - //SEG345 [184] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG346 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG346 [184] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG347 [184] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG347 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG348 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG348 divr16u::@3 + //SEG349 divr16u::@3 b3: - //SEG349 [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG350 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG350 [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG351 [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 jmp b6 - //SEG351 divr16u::@6 + //SEG352 divr16u::@6 b6: - //SEG352 [187] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 + //SEG353 [188] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2 lda rem sta rem16u lda rem+1 sta rem16u+1 jmp breturn - //SEG353 divr16u::@return + //SEG354 divr16u::@return breturn: - //SEG354 [188] return + //SEG355 [189] return rts } -//SEG355 bitmap_clear +//SEG356 bitmap_clear bitmap_clear: { .label bitmap = $37 .label x = $39 .label y = $36 - .label _3 = $bc - //SEG356 [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + .label _3 = $be + //SEG357 [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG357 [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG358 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG358 [191] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG359 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG359 [191] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG360 [192] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG360 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG361 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG361 [191] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG362 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG362 [191] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG363 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG363 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG364 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG364 bitmap_clear::@1 + //SEG365 bitmap_clear::@1 b1: - //SEG365 [192] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG366 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG366 [192] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 + //SEG367 [193] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG367 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG368 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG368 [192] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG369 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG369 [192] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG370 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG370 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG371 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG371 bitmap_clear::@2 + //SEG372 bitmap_clear::@2 b2: - //SEG372 [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG373 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG373 [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG374 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG374 [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG375 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG375 [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG376 [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$c8 bne b2_from_b2 jmp b3 - //SEG376 bitmap_clear::@3 + //SEG377 bitmap_clear::@3 b3: - //SEG377 [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG378 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG378 [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG379 [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG379 bitmap_clear::@return + //SEG380 bitmap_clear::@return breturn: - //SEG380 [199] return + //SEG381 [200] return rts } -//SEG381 bitmap_init +//SEG382 bitmap_init bitmap_init: { - .label _3 = $be - .label _4 = $bf - .label _5 = $c0 - .label _6 = $c1 - .label _7 = $c2 + .label _3 = $c0 + .label _4 = $c1 + .label _5 = $c2 + .label _6 = $c3 + .label _7 = $c4 .label bits = $3a .label x = $3b .label y = $3c .label yoffs = $3d - //SEG382 [201] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG383 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG383 [201] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG384 [202] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG384 [201] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + //SEG385 [202] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #$80 sta bits jmp b1 - //SEG385 [201] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG386 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG386 [201] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG387 [201] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG387 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG388 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG388 bitmap_init::@1 + //SEG389 bitmap_init::@1 b1: - //SEG389 [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG390 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta bitmap_plot_bit,y - //SEG390 [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG391 [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG391 [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 + //SEG392 [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b10_from_b1 - //SEG392 [205] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG393 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG393 [205] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG394 [206] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG394 bitmap_init::@2 + //SEG395 bitmap_init::@2 b2: - //SEG395 [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG396 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG396 [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + //SEG397 [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG397 [208] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG398 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG398 [208] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG399 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG399 [208] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + //SEG400 [209] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG400 [208] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG401 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG401 [208] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG402 [208] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG402 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG403 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG403 bitmap_init::@3 + //SEG404 bitmap_init::@3 b3: - //SEG404 [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG405 [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _3 - //SEG405 [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG406 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - //SEG406 [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + //SEG407 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _3 ora _4 sta _5 - //SEG407 [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG408 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy y sta bitmap_plot_ylo,y - //SEG408 [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG409 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - //SEG409 [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG410 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy y sta bitmap_plot_yhi,y - //SEG410 [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG411 [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _7 - //SEG411 [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG412 [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda _7 cmp #7 bne b4_from_b3 jmp b7 - //SEG412 bitmap_init::@7 + //SEG413 bitmap_init::@7 b7: - //SEG413 [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG414 [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -4991,63 +5373,63 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG414 [218] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG415 [219] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG415 [218] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG416 [219] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG416 bitmap_init::@4 + //SEG417 bitmap_init::@4 b4: - //SEG417 [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG418 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG418 [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + //SEG419 [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG419 bitmap_init::@return + //SEG420 bitmap_init::@return breturn: - //SEG420 [221] return + //SEG421 [222] return rts - //SEG421 [222] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG422 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG422 bitmap_init::@10 + //SEG423 bitmap_init::@10 b10: - //SEG423 [205] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG424 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG424 [205] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG425 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG425 fill +//SEG426 fill fill: { .const size = $3e8 .label end = SCREEN+size .label addr = $3f - //SEG426 [224] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG427 [225] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG427 [224] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG428 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 jmp b1 - //SEG428 [224] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG429 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG429 [224] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG430 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG430 fill::@1 + //SEG431 fill::@1 b1: - //SEG431 [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG432 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG432 [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG433 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG433 [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG434 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1_from_b1 @@ -5055,9 +5437,9 @@ fill: { cmp #=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ sin16s::isUpper#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ mulu16_sel::select#5 ] -Statement [104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Statement [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y -Statement [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [165] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [167] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y +Statement [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [164] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [166] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [168] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] -Statement [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [187] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [188] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Statement [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:3 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:3 [ ] ) always clobbers reg byte a @@ -5235,70 +5618,71 @@ Statement [90] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s: Statement [92] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] ) always clobbers reg byte a Statement [93] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] ) always clobbers reg byte a Statement [94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a -Statement [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a -Statement [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a -Statement [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142::mul16u:155 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a -Statement [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a -Statement [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a -Statement [116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a -Statement [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y -Statement [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a -Statement [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a -Statement [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a -Statement [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a -Statement [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a -Statement [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a -Statement [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a -Statement [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a -Statement [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a -Statement [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a -Statement [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a -Statement [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a -Statement [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a -Statement [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a -Statement [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a -Statement [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a -Statement [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a -Statement [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a -Statement [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a -Statement [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a -Statement [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a -Statement [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y -Statement [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a -Statement [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a -Statement [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a -Statement [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a -Statement [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a -Statement [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a -Statement [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a -Statement [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:122 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:127 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:131 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:137 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:142 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a -Statement [163] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a -Statement [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a -Statement [165] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a -Statement [167] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a -Statement [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a -Statement [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a -Statement [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [187] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:162 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:166 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a -Statement [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a -Statement [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a -Statement [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y -Statement [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a +Statement [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::m#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] ) always clobbers reg byte a +Statement [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] ) always clobbers reg byte a +Statement [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::sin16s_gen2:21::mul16s:79 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ) always clobbers reg byte a +Statement [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::sin16s_gen2:21::mul16s:79::mul16u:91 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143::mul16u:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ) always clobbers reg byte a +Statement [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] ) always clobbers reg byte a +Statement [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) always clobbers reg byte a +Statement [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) always clobbers reg byte a +Statement [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] ) always clobbers reg byte a reg byte y +Statement [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) always clobbers reg byte a +Statement [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ) always clobbers reg byte a +Statement [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ) always clobbers reg byte a +Statement [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) always clobbers reg byte a +Statement [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) always clobbers reg byte a +Statement [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ) always clobbers reg byte a +Statement [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ) always clobbers reg byte a +Statement [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) always clobbers reg byte a +Statement [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) always clobbers reg byte a +Statement [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ) always clobbers reg byte a +Statement [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ) always clobbers reg byte a +Statement [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) always clobbers reg byte a +Statement [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) always clobbers reg byte a +Statement [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ) always clobbers reg byte a +Statement [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ) always clobbers reg byte a +Statement [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ) always clobbers reg byte a +Statement [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) always clobbers reg byte a +Statement [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ) always clobbers reg byte a +Statement [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ) always clobbers reg byte a +Statement [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ) always clobbers reg byte a +Statement [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) always clobbers reg byte a +Statement [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) always clobbers reg byte a reg byte y +Statement [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) always clobbers reg byte a +Statement [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] ) always clobbers reg byte a +Statement [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:21::sin16s:76 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] ) always clobbers reg byte a +Statement [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ) always clobbers reg byte a +Statement [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] ) always clobbers reg byte a +Statement [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] ) always clobbers reg byte a +Statement [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) always clobbers reg byte a +Statement [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:123 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:128 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:132 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:138 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:3::sin16s_gen2:21::sin16s:76::mulu16_sel:143 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] ) always clobbers reg byte a +Statement [164] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ divr16u::return#2 rem16u#1 ] ) always clobbers reg byte a +Statement [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 rem16u#1 ] ) always clobbers reg byte a +Statement [166] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ) always clobbers reg byte a +Statement [168] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ) always clobbers reg byte a +Statement [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) always clobbers reg byte a +Statement [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:21::div32u16u:71 [ div32u16u::return#0 ] ) always clobbers reg byte a +Statement [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [188] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:21::div32u16u:71::divr16u:163 [ divr16u::return#0 rem16u#1 ] main:3::sin16s_gen2:21::div32u16u:71::divr16u:167 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) always clobbers reg byte a +Statement [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:3::bitmap_clear:19 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:3::bitmap_clear:19 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:3::bitmap_clear:19 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Statement [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:17 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 [ fill::addr#2 ] ( main:3::fill:15 [ fill::addr#2 ] ) always clobbers reg byte a reg byte y +Statement [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 [ fill::addr#1 ] ( main:3::fill:15 [ fill::addr#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , @@ -5354,149 +5738,151 @@ Potential registers zp ZP_DWORD:105 [ sin16s_gen2::$5 ] : zp ZP_DWORD:105 , Potential registers zp ZP_WORD:109 [ sin16s_gen2::$6 ] : zp ZP_WORD:109 , Potential registers zp ZP_WORD:111 [ sin16s_gen2::$8 ] : zp ZP_WORD:111 , Potential registers zp ZP_DWORD:113 [ mul16u::return#2 ] : zp ZP_DWORD:113 , -Potential registers zp ZP_WORD:117 [ mul16s::$6 ] : zp ZP_WORD:117 , -Potential registers zp ZP_WORD:119 [ mul16s::$16 ] : zp ZP_WORD:119 , -Potential registers zp ZP_DWORD:121 [ mul16s::return#0 ] : zp ZP_DWORD:121 , -Potential registers zp ZP_BYTE:125 [ mul16u::$1 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_DWORD:126 [ sin16s::$6 ] : zp ZP_DWORD:126 , -Potential registers zp ZP_WORD:130 [ sin16s::x1#0 ] : zp ZP_WORD:130 , -Potential registers zp ZP_WORD:132 [ mulu16_sel::return#0 ] : zp ZP_WORD:132 , -Potential registers zp ZP_WORD:134 [ sin16s::x2#0 ] : zp ZP_WORD:134 , -Potential registers zp ZP_WORD:136 [ mulu16_sel::return#1 ] : zp ZP_WORD:136 , -Potential registers zp ZP_WORD:138 [ sin16s::x3#0 ] : zp ZP_WORD:138 , -Potential registers zp ZP_WORD:140 [ mulu16_sel::return#2 ] : zp ZP_WORD:140 , -Potential registers zp ZP_WORD:142 [ sin16s::x3_6#0 ] : zp ZP_WORD:142 , -Potential registers zp ZP_WORD:144 [ sin16s::usinx#0 ] : zp ZP_WORD:144 , -Potential registers zp ZP_WORD:146 [ mulu16_sel::return#10 ] : zp ZP_WORD:146 , -Potential registers zp ZP_WORD:148 [ sin16s::x4#0 ] : zp ZP_WORD:148 , -Potential registers zp ZP_WORD:150 [ mulu16_sel::return#11 ] : zp ZP_WORD:150 , -Potential registers zp ZP_WORD:152 [ sin16s::x5#0 ] : zp ZP_WORD:152 , -Potential registers zp ZP_WORD:154 [ sin16s::x5_128#0 ] : zp ZP_WORD:154 , -Potential registers zp ZP_WORD:156 [ sin16s::usinx#1 ] : zp ZP_WORD:156 , -Potential registers zp ZP_DWORD:158 [ mul16u::return#3 ] : zp ZP_DWORD:158 , -Potential registers zp ZP_DWORD:162 [ mulu16_sel::$0 ] : zp ZP_DWORD:162 , -Potential registers zp ZP_DWORD:166 [ mulu16_sel::$1 ] : zp ZP_DWORD:166 , -Potential registers zp ZP_WORD:170 [ mulu16_sel::return#12 ] : zp ZP_WORD:170 , -Potential registers zp ZP_WORD:172 [ divr16u::return#2 ] : zp ZP_WORD:172 , -Potential registers zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:174 , -Potential registers zp ZP_WORD:176 [ divr16u::return#3 ] : zp ZP_WORD:176 , -Potential registers zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:178 , -Potential registers zp ZP_DWORD:180 [ div32u16u::return#0 ] : zp ZP_DWORD:180 , -Potential registers zp ZP_BYTE:184 [ divr16u::$1 ] : zp ZP_BYTE:184 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:185 [ divr16u::$2 ] : zp ZP_BYTE:185 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:186 [ rem16u#1 ] : zp ZP_WORD:186 , -Potential registers zp ZP_WORD:188 [ bitmap_clear::$3 ] : zp ZP_WORD:188 , -Potential registers zp ZP_BYTE:190 [ bitmap_init::$3 ] : zp ZP_BYTE:190 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:191 [ bitmap_init::$4 ] : zp ZP_BYTE:191 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:192 [ bitmap_init::$5 ] : zp ZP_BYTE:192 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:193 [ bitmap_init::$6 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:194 [ bitmap_init::$7 ] : zp ZP_BYTE:194 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:117 [ mul16s::$5 ] : zp ZP_WORD:117 , +Potential registers zp ZP_WORD:119 [ mul16s::$6 ] : zp ZP_WORD:119 , +Potential registers zp ZP_WORD:121 [ mul16s::$16 ] : zp ZP_WORD:121 , +Potential registers zp ZP_DWORD:123 [ mul16s::return#0 ] : zp ZP_DWORD:123 , +Potential registers zp ZP_BYTE:127 [ mul16u::$1 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_DWORD:128 [ sin16s::$6 ] : zp ZP_DWORD:128 , +Potential registers zp ZP_WORD:132 [ sin16s::x1#0 ] : zp ZP_WORD:132 , +Potential registers zp ZP_WORD:134 [ mulu16_sel::return#0 ] : zp ZP_WORD:134 , +Potential registers zp ZP_WORD:136 [ sin16s::x2#0 ] : zp ZP_WORD:136 , +Potential registers zp ZP_WORD:138 [ mulu16_sel::return#1 ] : zp ZP_WORD:138 , +Potential registers zp ZP_WORD:140 [ sin16s::x3#0 ] : zp ZP_WORD:140 , +Potential registers zp ZP_WORD:142 [ mulu16_sel::return#2 ] : zp ZP_WORD:142 , +Potential registers zp ZP_WORD:144 [ sin16s::x3_6#0 ] : zp ZP_WORD:144 , +Potential registers zp ZP_WORD:146 [ sin16s::usinx#0 ] : zp ZP_WORD:146 , +Potential registers zp ZP_WORD:148 [ mulu16_sel::return#10 ] : zp ZP_WORD:148 , +Potential registers zp ZP_WORD:150 [ sin16s::x4#0 ] : zp ZP_WORD:150 , +Potential registers zp ZP_WORD:152 [ mulu16_sel::return#11 ] : zp ZP_WORD:152 , +Potential registers zp ZP_WORD:154 [ sin16s::x5#0 ] : zp ZP_WORD:154 , +Potential registers zp ZP_WORD:156 [ sin16s::x5_128#0 ] : zp ZP_WORD:156 , +Potential registers zp ZP_WORD:158 [ sin16s::usinx#1 ] : zp ZP_WORD:158 , +Potential registers zp ZP_DWORD:160 [ mul16u::return#3 ] : zp ZP_DWORD:160 , +Potential registers zp ZP_DWORD:164 [ mulu16_sel::$0 ] : zp ZP_DWORD:164 , +Potential registers zp ZP_DWORD:168 [ mulu16_sel::$1 ] : zp ZP_DWORD:168 , +Potential registers zp ZP_WORD:172 [ mulu16_sel::return#12 ] : zp ZP_WORD:172 , +Potential registers zp ZP_WORD:174 [ divr16u::return#2 ] : zp ZP_WORD:174 , +Potential registers zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] : zp ZP_WORD:176 , +Potential registers zp ZP_WORD:178 [ divr16u::return#3 ] : zp ZP_WORD:178 , +Potential registers zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] : zp ZP_WORD:180 , +Potential registers zp ZP_DWORD:182 [ div32u16u::return#0 ] : zp ZP_DWORD:182 , +Potential registers zp ZP_BYTE:186 [ divr16u::$1 ] : zp ZP_BYTE:186 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:187 [ divr16u::$2 ] : zp ZP_BYTE:187 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:188 [ rem16u#1 ] : zp ZP_WORD:188 , +Potential registers zp ZP_WORD:190 [ bitmap_clear::$3 ] : zp ZP_WORD:190 , +Potential registers zp ZP_BYTE:192 [ bitmap_init::$3 ] : zp ZP_BYTE:192 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:193 [ bitmap_init::$4 ] : zp ZP_BYTE:193 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:194 [ bitmap_init::$5 ] : zp ZP_BYTE:194 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:195 [ bitmap_init::$6 ] : zp ZP_BYTE:195 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:196 [ bitmap_init::$7 ] : zp ZP_BYTE:196 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [mul16u] 346.86: zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:125 [ mul16u::$1 ] 177.67: zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:113 [ mul16u::return#2 ] 4: zp ZP_DWORD:158 [ mul16u::return#3 ] +Uplift Scope [mul16u] 346.86: zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 249.57: zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 202: zp ZP_BYTE:127 [ mul16u::$1 ] 177.67: zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 8: zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] 4: zp ZP_DWORD:113 [ mul16u::return#2 ] 4: zp ZP_DWORD:160 [ mul16u::return#3 ] Uplift Scope [wrap_y] 878: zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] 22: zp ZP_BYTE:71 [ wrap_y::return#0 ] 22: zp ZP_BYTE:79 [ wrap_y::return#1 ] 6: zp ZP_BYTE:88 [ wrap_y::return#2 ] -Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:188 [ bitmap_clear::$3 ] -Uplift Scope [divr16u] 106.92: zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:184 [ divr16u::$1 ] 22: zp ZP_BYTE:185 [ divr16u::$2 ] 18.19: zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:172 [ divr16u::return#2 ] 4: zp ZP_WORD:176 [ divr16u::return#3 ] -Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:58 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:60 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:59 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:191 [ bitmap_init::$4 ] 22: zp ZP_BYTE:192 [ bitmap_init::$5 ] 22: zp ZP_BYTE:193 [ bitmap_init::$6 ] 22: zp ZP_BYTE:194 [ bitmap_init::$7 ] 11: zp ZP_BYTE:190 [ bitmap_init::$3 ] +Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:57 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:190 [ bitmap_clear::$3 ] +Uplift Scope [divr16u] 106.92: zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 35.54: zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:186 [ divr16u::$1 ] 22: zp ZP_BYTE:187 [ divr16u::$2 ] 18.19: zp ZP_BYTE:53 [ divr16u::i#2 divr16u::i#1 ] 9.75: zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 4: zp ZP_WORD:174 [ divr16u::return#2 ] 4: zp ZP_WORD:178 [ divr16u::return#3 ] +Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:58 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:60 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:59 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:193 [ bitmap_init::$4 ] 22: zp ZP_BYTE:194 [ bitmap_init::$5 ] 22: zp ZP_BYTE:195 [ bitmap_init::$6 ] 22: zp ZP_BYTE:196 [ bitmap_init::$7 ] 11: zp ZP_BYTE:192 [ bitmap_init::$3 ] Uplift Scope [render_sine] 22: zp ZP_WORD:65 [ render_sine::$0 ] 22: zp ZP_WORD:67 [ render_sine::$1 ] 22: zp ZP_WORD:69 [ render_sine::sin_val#0 ] 22: zp ZP_WORD:73 [ render_sine::$4 ] 22: zp ZP_WORD:75 [ render_sine::$5 ] 22: zp ZP_WORD:77 [ render_sine::sin2_val#0 ] 20.43: zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] 18.26: zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] 11: zp ZP_BYTE:72 [ render_sine::ypos#0 ] 11: zp ZP_BYTE:80 [ render_sine::ypos2#0 ] Uplift Scope [bitmap_plot] 70: zp ZP_BYTE:6 [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] 28.5: zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] 4: zp ZP_WORD:83 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:87 [ bitmap_plot::$2 ] 3: zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:81 [ bitmap_plot::$3 ] Uplift Scope [sin16s_gen2] 22: zp ZP_DWORD:105 [ sin16s_gen2::$5 ] 22: zp ZP_WORD:111 [ sin16s_gen2::$8 ] 18.19: zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 11: zp ZP_WORD:109 [ sin16s_gen2::$6 ] 10.08: zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 8.5: zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 0.81: zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] -Uplift Scope [sin16s] 27.5: zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:97 [ sin16s::return#0 ] 13: zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:126 [ sin16s::$6 ] 4: zp ZP_WORD:134 [ sin16s::x2#0 ] 4: zp ZP_WORD:142 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:148 [ sin16s::x4#0 ] 4: zp ZP_WORD:152 [ sin16s::x5#0 ] 4: zp ZP_WORD:154 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:138 [ sin16s::x3#0 ] 1: zp ZP_WORD:156 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:130 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:144 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplift Scope [mulu16_sel] 24: zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:132 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:136 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:140 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:146 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:150 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:162 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:166 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:170 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:46 [ mulu16_sel::select#5 ] -Uplift Scope [mul16s] 22: zp ZP_DWORD:101 [ mul16s::return#2 ] 12: zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:121 [ mul16s::return#0 ] 4: zp ZP_WORD:117 [ mul16s::$6 ] 4: zp ZP_WORD:119 [ mul16s::$16 ] 2.6: zp ZP_WORD:99 [ mul16s::a#0 ] +Uplift Scope [sin16s] 27.5: zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 22: zp ZP_WORD:97 [ sin16s::return#0 ] 13: zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 4: zp ZP_DWORD:128 [ sin16s::$6 ] 4: zp ZP_WORD:136 [ sin16s::x2#0 ] 4: zp ZP_WORD:144 [ sin16s::x3_6#0 ] 4: zp ZP_WORD:150 [ sin16s::x4#0 ] 4: zp ZP_WORD:154 [ sin16s::x5#0 ] 4: zp ZP_WORD:156 [ sin16s::x5_128#0 ] 1: zp ZP_WORD:140 [ sin16s::x3#0 ] 1: zp ZP_WORD:158 [ sin16s::usinx#1 ] 0.64: zp ZP_WORD:132 [ sin16s::x1#0 ] 0.33: zp ZP_WORD:146 [ sin16s::usinx#0 ] 0.06: zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplift Scope [mulu16_sel] 24: zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] 21: zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] 4: zp ZP_WORD:134 [ mulu16_sel::return#0 ] 4: zp ZP_WORD:138 [ mulu16_sel::return#1 ] 4: zp ZP_WORD:142 [ mulu16_sel::return#2 ] 4: zp ZP_WORD:148 [ mulu16_sel::return#10 ] 4: zp ZP_WORD:152 [ mulu16_sel::return#11 ] 4: zp ZP_DWORD:164 [ mulu16_sel::$0 ] 4: zp ZP_DWORD:168 [ mulu16_sel::$1 ] 1.71: zp ZP_WORD:172 [ mulu16_sel::return#12 ] 0.33: zp ZP_BYTE:46 [ mulu16_sel::select#5 ] +Uplift Scope [mul16s] 22: zp ZP_DWORD:101 [ mul16s::return#2 ] 20: zp ZP_WORD:117 [ mul16s::$5 ] 12: zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] 4.33: zp ZP_DWORD:123 [ mul16s::return#0 ] 4: zp ZP_WORD:119 [ mul16s::$6 ] 4: zp ZP_WORD:121 [ mul16s::$16 ] 2.6: zp ZP_WORD:99 [ mul16s::a#0 ] Uplift Scope [fill] 33: zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] -Uplift Scope [div32u16u] 4: zp ZP_DWORD:89 [ div32u16u::return#2 ] 4: zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:180 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] -Uplift Scope [] 0.8: zp ZP_WORD:186 [ rem16u#1 ] +Uplift Scope [div32u16u] 4: zp ZP_DWORD:89 [ div32u16u::return#2 ] 4: zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] 1.33: zp ZP_DWORD:182 [ div32u16u::return#0 ] 0.8: zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] +Uplift Scope [] 0.8: zp ZP_WORD:188 [ rem16u#1 ] Uplift Scope [main] -Uplifting [mul16u] best 36829 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_DWORD:158 [ mul16u::return#3 ] -Uplifting [wrap_y] best 36646 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] -Uplifting [bitmap_clear] best 35746 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:188 [ bitmap_clear::$3 ] -Uplifting [divr16u] best 35536 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:172 [ divr16u::return#2 ] zp ZP_WORD:176 [ divr16u::return#3 ] -Uplifting [bitmap_init] best 35036 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:192 [ bitmap_init::$5 ] zp ZP_BYTE:193 [ bitmap_init::$6 ] zp ZP_BYTE:194 [ bitmap_init::$7 ] zp ZP_BYTE:190 [ bitmap_init::$3 ] +Uplifting [mul16u] best 36841 combination zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:31 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] zp ZP_DWORD:113 [ mul16u::return#2 ] zp ZP_DWORD:160 [ mul16u::return#3 ] +Uplifting [wrap_y] best 36658 combination zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ] reg byte a [ wrap_y::return#2 ] +Uplifting [bitmap_clear] best 35758 combination zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:190 [ bitmap_clear::$3 ] +Uplifting [divr16u] best 35548 combination zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:174 [ divr16u::return#2 ] zp ZP_WORD:178 [ divr16u::return#3 ] +Uplifting [bitmap_init] best 35048 combination zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:194 [ bitmap_init::$5 ] zp ZP_BYTE:195 [ bitmap_init::$6 ] zp ZP_BYTE:196 [ bitmap_init::$7 ] zp ZP_BYTE:192 [ bitmap_init::$3 ] Limited combination testing to 100 combinations of 61440 possible. -Uplifting [render_sine] best 34956 combination zp ZP_WORD:65 [ render_sine::$0 ] zp ZP_WORD:67 [ render_sine::$1 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$4 ] zp ZP_WORD:75 [ render_sine::$5 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] -Uplifting [bitmap_plot] best 34889 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ] -Uplifting [sin16s_gen2] best 34889 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:111 [ sin16s_gen2::$8 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] -Uplifting [sin16s] best 34889 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:126 [ sin16s::$6 ] zp ZP_WORD:134 [ sin16s::x2#0 ] zp ZP_WORD:142 [ sin16s::x3_6#0 ] zp ZP_WORD:148 [ sin16s::x4#0 ] zp ZP_WORD:152 [ sin16s::x5#0 ] zp ZP_WORD:154 [ sin16s::x5_128#0 ] zp ZP_WORD:138 [ sin16s::x3#0 ] zp ZP_WORD:156 [ sin16s::usinx#1 ] zp ZP_WORD:130 [ sin16s::x1#0 ] zp ZP_WORD:144 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [mulu16_sel] best 34873 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:132 [ mulu16_sel::return#0 ] zp ZP_WORD:136 [ mulu16_sel::return#1 ] zp ZP_WORD:140 [ mulu16_sel::return#2 ] zp ZP_WORD:146 [ mulu16_sel::return#10 ] zp ZP_WORD:150 [ mulu16_sel::return#11 ] zp ZP_DWORD:162 [ mulu16_sel::$0 ] zp ZP_DWORD:166 [ mulu16_sel::$1 ] zp ZP_WORD:170 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] -Uplifting [mul16s] best 34873 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:121 [ mul16s::return#0 ] zp ZP_WORD:117 [ mul16s::$6 ] zp ZP_WORD:119 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ] -Uplifting [fill] best 34873 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] -Uplifting [div32u16u] best 34873 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:180 [ div32u16u::return#0 ] zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] -Uplifting [] best 34873 combination zp ZP_WORD:186 [ rem16u#1 ] -Uplifting [main] best 34873 combination -Attempting to uplift remaining variables inzp ZP_BYTE:192 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 34813 combination reg byte a [ bitmap_init::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:193 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 34753 combination reg byte a [ bitmap_init::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:194 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 34693 combination reg byte a [ bitmap_init::$7 ] +Uplifting [render_sine] best 34968 combination zp ZP_WORD:65 [ render_sine::$0 ] zp ZP_WORD:67 [ render_sine::$1 ] zp ZP_WORD:69 [ render_sine::sin_val#0 ] zp ZP_WORD:73 [ render_sine::$4 ] zp ZP_WORD:75 [ render_sine::$5 ] zp ZP_WORD:77 [ render_sine::sin2_val#0 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] +Uplifting [bitmap_plot] best 34901 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp ZP_WORD:83 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] zp ZP_WORD:81 [ bitmap_plot::$3 ] +Uplifting [sin16s_gen2] best 34901 combination zp ZP_DWORD:105 [ sin16s_gen2::$5 ] zp ZP_WORD:111 [ sin16s_gen2::$8 ] zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp ZP_WORD:109 [ sin16s_gen2::$6 ] zp ZP_DWORD:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] +Uplifting [sin16s] best 34901 combination zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp ZP_WORD:97 [ sin16s::return#0 ] zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp ZP_DWORD:128 [ sin16s::$6 ] zp ZP_WORD:136 [ sin16s::x2#0 ] zp ZP_WORD:144 [ sin16s::x3_6#0 ] zp ZP_WORD:150 [ sin16s::x4#0 ] zp ZP_WORD:154 [ sin16s::x5#0 ] zp ZP_WORD:156 [ sin16s::x5_128#0 ] zp ZP_WORD:140 [ sin16s::x3#0 ] zp ZP_WORD:158 [ sin16s::usinx#1 ] zp ZP_WORD:132 [ sin16s::x1#0 ] zp ZP_WORD:146 [ sin16s::usinx#0 ] zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [mulu16_sel] best 34885 combination zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] zp ZP_WORD:134 [ mulu16_sel::return#0 ] zp ZP_WORD:138 [ mulu16_sel::return#1 ] zp ZP_WORD:142 [ mulu16_sel::return#2 ] zp ZP_WORD:148 [ mulu16_sel::return#10 ] zp ZP_WORD:152 [ mulu16_sel::return#11 ] zp ZP_DWORD:164 [ mulu16_sel::$0 ] zp ZP_DWORD:168 [ mulu16_sel::$1 ] zp ZP_WORD:172 [ mulu16_sel::return#12 ] reg byte x [ mulu16_sel::select#5 ] +Uplifting [mul16s] best 34885 combination zp ZP_DWORD:101 [ mul16s::return#2 ] zp ZP_WORD:117 [ mul16s::$5 ] zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp ZP_DWORD:123 [ mul16s::return#0 ] zp ZP_WORD:119 [ mul16s::$6 ] zp ZP_WORD:121 [ mul16s::$16 ] zp ZP_WORD:99 [ mul16s::a#0 ] +Uplifting [fill] best 34885 combination zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] +Uplifting [div32u16u] best 34885 combination zp ZP_DWORD:89 [ div32u16u::return#2 ] zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] zp ZP_DWORD:182 [ div32u16u::return#0 ] zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] +Uplifting [] best 34885 combination zp ZP_WORD:188 [ rem16u#1 ] +Uplifting [main] best 34885 combination +Attempting to uplift remaining variables inzp ZP_BYTE:194 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 34825 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:195 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 34765 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:196 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 34705 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 34693 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:190 [ bitmap_init::$3 ] -Uplifting [bitmap_init] best 34693 combination zp ZP_BYTE:190 [ bitmap_init::$3 ] +Uplifting [bitmap_clear] best 34705 combination zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:192 [ bitmap_init::$3 ] +Uplifting [bitmap_init] best 34705 combination zp ZP_BYTE:192 [ bitmap_init::$3 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ sin16s::isUpper#2 ] -Uplifting [sin16s] best 34693 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] +Uplifting [sin16s] best 34705 combination zp ZP_BYTE:35 [ sin16s::isUpper#2 ] Coalescing zero page register with common assignment [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 ] ] with [ zp ZP_WORD:7 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:156 [ sin16s::usinx#1 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:138 [ sin16s::x3#0 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:186 [ rem16u#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp ZP_WORD:158 [ sin16s::usinx#1 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 ] ] with [ zp ZP_WORD:140 [ sin16s::x3#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:188 [ rem16u#1 ] ] - score: 2 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] ] with [ zp ZP_WORD:69 [ render_sine::sin_val#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 ] ] with [ zp ZP_WORD:77 [ render_sine::sin2_val#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] ] with [ zp ZP_DWORD:113 [ mul16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:121 [ mul16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 ] ] with [ zp ZP_DWORD:123 [ mul16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 ] ] with [ zp ZP_WORD:44 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:158 [ mul16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:126 [ sin16s::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:160 [ mul16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp ZP_DWORD:128 [ sin16s::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp ZP_WORD:97 [ sin16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:134 [ sin16s::x2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:148 [ sin16s::x4#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:172 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:176 [ divr16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:188 [ bitmap_clear::$3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 ] ] with [ zp ZP_WORD:136 [ sin16s::x2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp ZP_WORD:150 [ sin16s::x4#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:174 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:178 [ divr16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:190 [ bitmap_clear::$3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:65 [ render_sine::$0 ] ] with [ zp ZP_WORD:67 [ render_sine::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:73 [ render_sine::$4 ] ] with [ zp ZP_WORD:75 [ render_sine::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:81 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:85 [ bitmap_plot::plotter#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:89 [ div32u16u::return#2 ] ] with [ zp ZP_DWORD:93 [ sin16s_gen2::step#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:89 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:180 [ div32u16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:89 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp ZP_DWORD:182 [ div32u16u::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:101 [ mul16s::return#2 ] ] with [ zp ZP_DWORD:105 [ sin16s_gen2::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:109 [ sin16s_gen2::$6 ] ] with [ zp ZP_WORD:111 [ sin16s_gen2::$8 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:117 [ mul16s::$6 ] ] with [ zp ZP_WORD:119 [ mul16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:170 [ mulu16_sel::return#12 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:140 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:142 [ sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:150 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:152 [ sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:162 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:166 [ mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:119 [ mul16s::$6 ] ] with [ zp ZP_WORD:121 [ mul16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ mulu16_sel::return#0 ] ] with [ zp ZP_WORD:172 [ mulu16_sel::return#12 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:142 [ mulu16_sel::return#2 ] ] with [ zp ZP_WORD:144 [ sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:152 [ mulu16_sel::return#11 ] ] with [ zp ZP_WORD:154 [ sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:164 [ mulu16_sel::$0 ] ] with [ zp ZP_DWORD:168 [ mulu16_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 ] ] with [ zp ZP_WORD:65 [ render_sine::$0 render_sine::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 ] ] with [ zp ZP_WORD:73 [ render_sine::$4 render_sine::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 ] ] with [ zp ZP_DWORD:27 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp ZP_DWORD:101 [ mul16s::return#2 sin16s_gen2::$5 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp ZP_WORD:99 [ mul16s::a#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:144 [ sin16s::usinx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:136 [ mulu16_sel::return#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp ZP_WORD:146 [ mulu16_sel::return#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:178 [ div32u16u::quotient_lo#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:140 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:150 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 ] ] with [ zp ZP_DWORD:162 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:132 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:154 [ sin16s::x5_128#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 ] ] with [ zp ZP_WORD:146 [ sin16s::usinx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp ZP_WORD:138 [ mulu16_sel::return#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp ZP_WORD:148 [ mulu16_sel::return#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp ZP_WORD:180 [ div32u16u::quotient_lo#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp ZP_WORD:142 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp ZP_WORD:152 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 ] ] with [ zp ZP_DWORD:164 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:134 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp ZP_WORD:156 [ sin16s::x5_128#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] ] with [ zp ZP_WORD:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ] with [ zp ZP_WORD:47 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] with [ zp ZP_WORD:55 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:61 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD:63 [ fill::addr#2 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ] ] with [ zp ZP_WORD:117 [ mul16s::$5 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] with [ zp ZP_WORD:17 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] with [ zp ZP_WORD:49 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 ] ] with [ zp ZP_WORD:23 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ] ] with [ zp ZP_WORD:51 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] with [ zp ZP_WORD:81 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 ] ] with [ zp ZP_WORD:109 [ sin16s_gen2::$6 sin16s_gen2::$8 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:117 [ mul16s::$6 mul16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:132 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 ] ] with [ zp ZP_WORD:119 [ mul16s::$6 mul16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:9 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:134 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] ] Coalescing zero page register [ zp ZP_DWORD:19 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 ] ] with [ zp ZP_DWORD:36 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ] ] Coalescing zero page register [ zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:83 [ bitmap_plot::$1 ] ] -Coalescing zero page register [ zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 bitmap_plot::$1 ] ] with [ zp ZP_WORD:174 [ div32u16u::quotient_hi#0 ] ] +Coalescing zero page register [ zp ZP_WORD:25 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 bitmap_plot::$1 ] ] with [ zp ZP_WORD:176 [ div32u16u::quotient_hi#0 ] ] Coalescing zero page register [ zp ZP_BYTE:35 [ sin16s::isUpper#2 ] ] with [ zp ZP_BYTE:54 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:35 [ sin16s::isUpper#2 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:190 [ bitmap_init::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:35 [ sin16s::isUpper#2 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:192 [ bitmap_init::$3 ] ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] Allocated (was zp ZP_DWORD:11) zp ZP_DWORD:8 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] Allocated (was zp ZP_DWORD:19) zp ZP_DWORD:12 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ] @@ -5506,7 +5892,7 @@ Allocated (was zp ZP_BYTE:35) zp ZP_BYTE:22 [ sin16s::isUpper#2 bitmap_clear::y# Allocated (was zp ZP_WORD:40) zp ZP_WORD:23 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ] Allocated (was zp ZP_WORD:42) zp ZP_WORD:25 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ] Allocated (was zp ZP_DWORD:89) zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ] -Allocated (was zp ZP_WORD:130) zp ZP_WORD:31 [ sin16s::x1#0 ] +Allocated (was zp ZP_WORD:132) zp ZP_WORD:31 [ sin16s::x1#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -5539,9 +5925,9 @@ ASSEMBLER BEFORE OPTIMIZATION .label rem16u = 2 //SEG2 @begin bbegin: - jmp b28 -//SEG3 @28 -b28: + jmp b29 +//SEG3 @29 +b29: //SEG4 kickasm {{ .label pc_restore = * .pc = $1400 .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } .pc = pc_restore }} .label pc_restore = * .pc = $1400 @@ -5550,15 +5936,15 @@ b28: } .pc = pc_restore -//SEG5 [2] phi from @28 to @31 [phi:@28->@31] -b31_from_b28: - jmp b31 -//SEG6 @31 -b31: +//SEG5 [2] phi from @29 to @32 [phi:@29->@32] +b32_from_b29: + jmp b32 +//SEG6 @32 +b32: //SEG7 [3] call main jsr main -//SEG8 [4] phi from @31 to @end [phi:@31->@end] -bend_from_b31: +//SEG8 [4] phi from @32 to @end [phi:@32->@end] +bend_from_b32: jmp bend //SEG9 @end bend: @@ -5612,7 +5998,7 @@ main: { lda #toD0181_return sta D018 //SEG27 [15] call fill - //SEG28 [223] phi from main::@8 to fill [phi:main::@8->fill] + //SEG28 [224] phi from main::@8 to fill [phi:main::@8->fill] fill_from_b8: jsr fill //SEG29 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] @@ -5621,7 +6007,7 @@ main: { //SEG30 main::@9 b9: //SEG31 [17] call bitmap_init - //SEG32 [200] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG32 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] bitmap_init_from_b9: jsr bitmap_init //SEG33 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] @@ -5960,7 +6346,7 @@ sin16s_gen2: { .label x = 8 .label i = 4 //SEG127 [71] call div32u16u - //SEG128 [161] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG128 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] div32u16u_from_sin16s_gen2: jsr div32u16u //SEG129 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 @@ -6089,6 +6475,7 @@ sin16s_gen2: { } //SEG159 mul16s mul16s: { + .label _5 = 2 .label _6 = 6 .label _16 = 6 .label m = $c @@ -6100,10 +6487,10 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG161 [91] call mul16u - //SEG162 [101] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG162 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG163 [101] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG164 [101] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG163 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG164 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -6122,12 +6509,17 @@ mul16s: { jmp b3 //SEG169 mul16s::@3 b3: - //SEG170 [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG170 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG171 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG171 [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG172 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG172 [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG173 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG173 [98] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG174 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG174 [98] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG175 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG175 mul16s::@1 + //SEG176 mul16s::@1 b1: jmp b2 - //SEG176 mul16s::@2 + //SEG177 mul16s::@2 b2: - //SEG177 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG178 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG178 mul16s::@return + //SEG179 mul16s::@return breturn: - //SEG179 [100] return + //SEG180 [101] return rts } -//SEG180 mul16u +//SEG181 mul16u mul16u: { .label mb = $12 .label a = $10 .label res = $c .label return = $c .label b = 6 - //SEG181 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG182 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6172,42 +6564,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG182 [103] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG183 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG183 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG184 [103] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG184 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG185 [104] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG185 [103] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG186 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG186 mul16u::@1 + //SEG187 mul16u::@1 b1: - //SEG187 [104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG188 [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG188 mul16u::@return + //SEG189 mul16u::@return breturn: - //SEG189 [105] return + //SEG190 [106] return rts - //SEG190 mul16u::@2 + //SEG191 mul16u::@2 b2: - //SEG191 [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG192 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG192 [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG193 [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG193 mul16u::@7 + //SEG194 mul16u::@7 b7: - //SEG194 [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG195 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6221,30 +6613,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG195 [109] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG196 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG196 [109] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG197 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG197 mul16u::@4 + //SEG198 mul16u::@4 b4: - //SEG198 [110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG199 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG199 [111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG200 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG200 [103] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG201 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG201 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG202 [103] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG203 [103] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG202 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG203 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG204 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG204 sin16s +//SEG205 sin16s sin16s: { .label _6 = $c .label x = $c @@ -6259,7 +6651,7 @@ sin16s: { .label x5_128 = 6 .label sinx = $17 .label isUpper = $16 - //SEG205 [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG206 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b1_from_sin16s @@ -6277,9 +6669,9 @@ sin16s: { bcc b1_from_sin16s !: jmp b4 - //SEG206 sin16s::@4 + //SEG207 sin16s::@4 b4: - //SEG207 [113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 + //SEG208 [114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 -- vduz1=vduz1_minus_vduc1 lda x sec sbc #PI_u4f28>>$10 sta x+3 - //SEG208 [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG209 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] b1_from_b4: - //SEG209 [114] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG210 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG210 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG211 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG211 [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG212 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b1_from_sin16s: - //SEG212 [114] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG213 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG213 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG214 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy jmp b1 - //SEG214 sin16s::@1 + //SEG215 sin16s::@1 b1: - //SEG215 [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG216 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2_from_b1 @@ -6327,9 +6719,9 @@ sin16s: { bcc b2_from_b1 !: jmp b5 - //SEG216 sin16s::@5 + //SEG217 sin16s::@5 b5: - //SEG217 [116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 + //SEG218 [117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1 lda #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG218 [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG219 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] b2_from_b1: b2_from_b5: - //SEG219 [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG220 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy jmp b2 - //SEG220 sin16s::@2 + //SEG221 sin16s::@2 b2: - //SEG221 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG222 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -6359,86 +6751,86 @@ sin16s: { rol _6+3 dey bne !- - //SEG222 [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG223 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG223 [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG224 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG224 [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG225 [122] call mulu16_sel - //SEG226 [152] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG226 [123] call mulu16_sel + //SEG227 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] mulu16_sel_from_b2: - //SEG227 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG228 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG228 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG229 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG229 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG230 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG230 [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG231 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#0 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:6 jmp b8 - //SEG231 sin16s::@8 + //SEG232 sin16s::@8 b8: - //SEG232 [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG233 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG233 [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG234 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 // (word) mulu16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:25 - //SEG234 [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG235 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG235 [127] call mulu16_sel - //SEG236 [152] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG236 [128] call mulu16_sel + //SEG237 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] mulu16_sel_from_b8: - //SEG237 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG238 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG238 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG239 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG239 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG240 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG240 [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG241 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 jmp b9 - //SEG241 sin16s::@9 + //SEG242 sin16s::@9 b9: - //SEG242 [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG243 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 // (word) sin16s::x3#0 = (word) mulu16_sel::return#1 // register copy zp ZP_WORD:25 - //SEG243 [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG244 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG244 [131] call mulu16_sel - //SEG245 [152] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG245 [132] call mulu16_sel + //SEG246 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] mulu16_sel_from_b9: - //SEG246 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG247 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG247 [152] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG248 [153] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG248 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG249 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG249 [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG250 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#2 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:6 jmp b10 - //SEG250 sin16s::@10 + //SEG251 sin16s::@10 b10: - //SEG251 [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG252 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 // (word) sin16s::x3_6#0 = (word) mulu16_sel::return#2 // register copy zp ZP_WORD:6 - //SEG252 [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG253 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -6446,61 +6838,61 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG253 [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG254 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG254 [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG255 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG255 [137] call mulu16_sel - //SEG256 [152] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG256 [138] call mulu16_sel + //SEG257 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] mulu16_sel_from_b10: - //SEG257 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG258 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG258 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG259 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG259 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG260 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG260 [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG261 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 jmp b11 - //SEG261 sin16s::@11 + //SEG262 sin16s::@11 b11: - //SEG262 [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG263 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 // (word) sin16s::x4#0 = (word) mulu16_sel::return#10 // register copy zp ZP_WORD:25 - //SEG263 [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG264 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 // (word) mulu16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:25 - //SEG264 [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG265 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG265 [142] call mulu16_sel - //SEG266 [152] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG266 [143] call mulu16_sel + //SEG267 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] mulu16_sel_from_b11: - //SEG267 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG268 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG268 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG269 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG269 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG270 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG270 [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG271 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#11 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:6 jmp b12 - //SEG271 sin16s::@12 + //SEG272 sin16s::@12 b12: - //SEG272 [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG273 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 // (word) sin16s::x5#0 = (word) mulu16_sel::return#11 // register copy zp ZP_WORD:6 - //SEG273 [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG274 [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 ldy #4 !: lsr x5_128+1 ror x5_128 dey bne !- - //SEG274 [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG275 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -6508,14 +6900,14 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG275 [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG276 [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b15 jmp b6 - //SEG276 sin16s::@6 + //SEG277 sin16s::@6 b6: - //SEG277 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG278 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -6525,25 +6917,25 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG278 [149] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG279 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] b3_from_b15: b3_from_b6: - //SEG279 [149] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG280 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy jmp b3 - //SEG280 sin16s::@3 + //SEG281 sin16s::@3 b3: jmp breturn - //SEG281 sin16s::@return + //SEG282 sin16s::@return breturn: - //SEG282 [150] return + //SEG283 [151] return rts - //SEG283 sin16s::@15 + //SEG284 sin16s::@15 b15: - //SEG284 [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG285 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 // (signed word~) sin16s::return#5 = (signed word)(word) sin16s::usinx#1 // register copy zp ZP_WORD:23 jmp b3_from_b15 } -//SEG285 mulu16_sel +//SEG286 mulu16_sel mulu16_sel: { .label _0 = $c .label _1 = $c @@ -6552,27 +6944,27 @@ mulu16_sel: { .label return = 6 .label return_1 = $19 .label return_10 = $19 - //SEG286 [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG287 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG287 [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG288 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 // (word) mul16u::b#1 = (word) mulu16_sel::v2#5 // register copy zp ZP_WORD:6 - //SEG288 [155] call mul16u - //SEG289 [101] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG289 [156] call mul16u + //SEG290 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] mul16u_from_mulu16_sel: - //SEG290 [101] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG291 [101] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG291 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG292 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG292 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG293 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:12 jmp b2 - //SEG293 mulu16_sel::@2 + //SEG294 mulu16_sel::@2 b2: - //SEG294 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG295 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 // (dword~) mulu16_sel::$0 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:12 - //SEG295 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG296 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -6583,66 +6975,66 @@ mulu16_sel: { dex bne !- !e: - //SEG296 [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG297 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 jmp breturn - //SEG297 mulu16_sel::@return + //SEG298 mulu16_sel::@return breturn: - //SEG298 [160] return + //SEG299 [161] return rts } -//SEG299 div32u16u +//SEG300 div32u16u div32u16u: { .label quotient_hi = $10 .label quotient_lo = 6 .label return = $1b - //SEG300 [162] call divr16u - //SEG301 [171] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG301 [163] call divr16u + //SEG302 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] divr16u_from_div32u16u: - //SEG302 [171] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG303 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG303 [171] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG304 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem lda #>0 sta divr16u.rem+1 jsr divr16u - //SEG304 [163] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG305 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:6 jmp b2 - //SEG305 div32u16u::@2 + //SEG306 div32u16u::@2 b2: - //SEG306 [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG307 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG307 [165] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG308 [166] (word) divr16u::rem#4 ← (word) rem16u#1 // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:2 - //SEG308 [166] call divr16u - //SEG309 [171] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG309 [167] call divr16u + //SEG310 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] divr16u_from_b2: - //SEG310 [171] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG311 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG311 [171] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG312 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG312 [167] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG313 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:6 jmp b3 - //SEG313 div32u16u::@3 + //SEG314 div32u16u::@3 b3: - //SEG314 [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG315 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 // (word) div32u16u::quotient_lo#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:6 - //SEG315 [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG316 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -6652,69 +7044,69 @@ div32u16u: { lda quotient_lo+1 sta return+1 jmp breturn - //SEG316 div32u16u::@return + //SEG317 div32u16u::@return breturn: - //SEG317 [170] return + //SEG318 [171] return rts } -//SEG318 divr16u +//SEG319 divr16u divr16u: { .label rem = 2 .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG319 [172] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG320 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG320 [172] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG321 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG321 [172] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG322 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG322 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG323 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG323 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG324 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG324 [172] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG325 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG325 [172] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG326 [172] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG327 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG328 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG326 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG327 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG328 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG329 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG329 divr16u::@1 + //SEG330 divr16u::@1 b1: - //SEG330 [173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG331 [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG332 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG332 [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG333 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG333 [176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG334 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG334 divr16u::@4 + //SEG335 divr16u::@4 b4: - //SEG335 [177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG336 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG336 [178] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG337 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG337 [178] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG338 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG338 divr16u::@2 + //SEG339 divr16u::@2 b2: - //SEG339 [179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG340 [180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG341 [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG342 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3_from_b2 @@ -6724,14 +7116,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG342 divr16u::@5 + //SEG343 divr16u::@5 b5: - //SEG343 [182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG344 [183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG344 [183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG345 [184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #SIN_SIZE sta rem+1 - //SEG345 [184] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG346 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG346 [184] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG347 [184] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG347 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG348 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG348 divr16u::@3 + //SEG349 divr16u::@3 b3: - //SEG349 [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG350 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG350 [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG351 [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp b6 - //SEG351 divr16u::@6 + //SEG352 divr16u::@6 b6: - //SEG352 [187] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG353 [188] (word) rem16u#1 ← (word) divr16u::rem#11 // (word) rem16u#1 = (word) divr16u::rem#11 // register copy zp ZP_WORD:2 jmp breturn - //SEG353 divr16u::@return + //SEG354 divr16u::@return breturn: - //SEG354 [188] return + //SEG355 [189] return rts } -//SEG355 bitmap_clear +//SEG356 bitmap_clear bitmap_clear: { .label bitmap = 2 .label y = $16 .label _3 = 2 - //SEG356 [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG357 [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG357 [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG358 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:2 - //SEG358 [191] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG359 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG359 [191] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG360 [192] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG360 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG361 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG361 [191] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG362 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG362 [191] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG363 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG363 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG364 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG364 bitmap_clear::@1 + //SEG365 bitmap_clear::@1 b1: - //SEG365 [192] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG366 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG366 [192] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG367 [193] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG367 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG368 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG368 [192] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG369 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG369 [192] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG370 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG370 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG371 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG371 bitmap_clear::@2 + //SEG372 bitmap_clear::@2 b2: - //SEG372 [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG373 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG373 [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG374 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG374 [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG375 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG375 [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG376 [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2_from_b2 jmp b3 - //SEG376 bitmap_clear::@3 + //SEG377 bitmap_clear::@3 b3: - //SEG377 [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG378 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG378 [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG379 [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG379 bitmap_clear::@return + //SEG380 bitmap_clear::@return breturn: - //SEG380 [199] return + //SEG381 [200] return rts } -//SEG381 bitmap_init +//SEG382 bitmap_init bitmap_init: { .label _3 = $16 .label yoffs = 2 - //SEG382 [201] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG383 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG383 [201] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG384 [202] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG384 [201] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG385 [202] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 jmp b1 - //SEG385 [201] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG386 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG386 [201] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG387 [201] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG387 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG388 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG388 bitmap_init::@1 + //SEG389 bitmap_init::@1 b1: - //SEG389 [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG390 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG390 [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG391 [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG391 [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 + //SEG392 [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 cmp #0 bne b10_from_b1 - //SEG392 [205] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG393 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG393 [205] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG394 [206] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 jmp b2 - //SEG394 bitmap_init::@2 + //SEG395 bitmap_init::@2 b2: - //SEG395 [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG396 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG396 [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG397 [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG397 [208] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG398 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG398 [208] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG399 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG399 [208] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG400 [209] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG400 [208] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG401 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG401 [208] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG402 [208] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG402 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG403 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG403 bitmap_init::@3 + //SEG404 bitmap_init::@3 b3: - //SEG404 [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG405 [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _3 - //SEG405 [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG406 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG406 [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG407 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG407 [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG408 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG408 [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG409 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG409 [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG410 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG410 [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG411 [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG411 [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG412 [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG412 bitmap_init::@7 + //SEG413 bitmap_init::@7 b7: - //SEG413 [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG414 [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -6916,62 +7308,62 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG414 [218] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG415 [219] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG415 [218] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG416 [219] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG416 bitmap_init::@4 + //SEG417 bitmap_init::@4 b4: - //SEG417 [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG418 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG418 [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG419 [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG419 bitmap_init::@return + //SEG420 bitmap_init::@return breturn: - //SEG420 [221] return + //SEG421 [222] return rts - //SEG421 [222] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG422 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG422 bitmap_init::@10 + //SEG423 bitmap_init::@10 b10: - //SEG423 [205] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG424 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG424 [205] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG425 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } -//SEG425 fill +//SEG426 fill fill: { .const size = $3e8 .label end = SCREEN+size .label addr = 2 - //SEG426 [224] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG427 [225] phi from fill to fill::@1 [phi:fill->fill::@1] b1_from_fill: - //SEG427 [224] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG428 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 jmp b1 - //SEG428 [224] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG429 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] b1_from_b1: - //SEG429 [224] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG430 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG430 fill::@1 + //SEG431 fill::@1 b1: - //SEG431 [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG432 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG432 [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG433 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG433 [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG434 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1_from_b1 @@ -6979,9 +7371,9 @@ fill: { cmp #((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:6 4.0 +(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:6 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -7545,8 +8005,11 @@ FINAL SYMBOL TABLE (word) mulu16_sel::v2#3 v2 zp ZP_WORD:6 4.0 (word) mulu16_sel::v2#4 v2 zp ZP_WORD:6 4.0 (word) mulu16_sel::v2#5 v2 zp ZP_WORD:6 5.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (void()) render_sine() (word~) render_sine::$0 $0 zp ZP_WORD:6 22.0 (signed word*~) render_sine::$1 $1 zp ZP_WORD:6 22.0 @@ -7674,7 +8137,7 @@ FINAL SYMBOL TABLE (signed word) wrap_y::y#6 y zp ZP_WORD:6 203.0 (signed word) wrap_y::y#9 y zp ZP_WORD:6 24.0 -zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ] +zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 mul16s::$5 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] @@ -7709,7 +8172,7 @@ reg byte a [ bitmap_init::$7 ] FINAL ASSEMBLER -Score: 28369 +Score: 28381 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -7740,7 +8203,7 @@ Score: 28369 .label sin2 = $1400 .label rem16u = 2 //SEG2 @begin -//SEG3 @28 +//SEG3 @29 //SEG4 kickasm {{ .label pc_restore = * .pc = $1400 .for(var i=0; i<512; i++) { .word sin(toRadians([i*360]/512))*320 } .pc = pc_restore }} .label pc_restore = * .pc = $1400 @@ -7749,11 +8212,11 @@ Score: 28369 } .pc = pc_restore -//SEG5 [2] phi from @28 to @31 [phi:@28->@31] -//SEG6 @31 +//SEG5 [2] phi from @29 to @32 [phi:@29->@32] +//SEG6 @32 //SEG7 [3] call main jsr main -//SEG8 [4] phi from @31 to @end [phi:@31->@end] +//SEG8 [4] phi from @32 to @end [phi:@32->@end] //SEG9 @end //SEG10 main main: { @@ -7791,12 +8254,12 @@ main: { lda #toD0181_return sta D018 //SEG27 [15] call fill - //SEG28 [223] phi from main::@8 to fill [phi:main::@8->fill] + //SEG28 [224] phi from main::@8 to fill [phi:main::@8->fill] jsr fill //SEG29 [16] phi from main::@8 to main::@9 [phi:main::@8->main::@9] //SEG30 main::@9 //SEG31 [17] call bitmap_init - //SEG32 [200] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] + //SEG32 [201] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init] jsr bitmap_init //SEG33 [18] phi from main::@9 to main::@10 [phi:main::@9->main::@10] //SEG34 main::@10 @@ -8084,7 +8547,7 @@ sin16s_gen2: { .label x = 8 .label i = 4 //SEG127 [71] call div32u16u - //SEG128 [161] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] + //SEG128 [162] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u] jsr div32u16u //SEG129 [72] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 // (dword) div32u16u::return#2 = (dword) div32u16u::return#0 // register copy zp ZP_DWORD:27 @@ -8198,6 +8661,7 @@ sin16s_gen2: { } //SEG159 mul16s mul16s: { + .label _5 = 2 .label _6 = 6 .label _16 = 6 .label m = $c @@ -8209,9 +8673,9 @@ mul16s: { lda a+1 sta mul16u.a+1 //SEG161 [91] call mul16u - //SEG162 [101] phi from mul16s to mul16u [phi:mul16s->mul16u] - //SEG163 [101] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG164 [101] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 + //SEG162 [102] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG163 [102] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG164 [102] phi (word) mul16u::b#2 = ((word))(const signed word) sin16s_gen2::ampl#0 [phi:mul16s->mul16u#1] -- vwuz1=vwuc1 lda #sin16s_gen2.ampl @@ -8226,12 +8690,17 @@ mul16s: { lda a+1 bpl b2 //SEG169 mul16s::@3 - //SEG170 [95] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG170 [95] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG171 [96] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG171 [96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG172 [97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 -- vwuz1=vwuz1_minus_vwuc1 lda _16 sec sbc #sin16s_gen2.ampl sta _16+1 - //SEG172 [97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG173 [98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG173 [98] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] - //SEG174 [98] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy - //SEG175 mul16s::@1 - //SEG176 mul16s::@2 + //SEG174 [99] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG175 [99] phi (dword) mul16s::m#4 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG176 mul16s::@1 + //SEG177 mul16s::@2 b2: - //SEG177 [99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG178 mul16s::@return - //SEG179 [100] return + //SEG178 [100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG179 mul16s::@return + //SEG180 [101] return rts } -//SEG180 mul16u +//SEG181 mul16u mul16u: { .label mb = $12 .label a = $10 .label res = $c .label return = $c .label b = 6 - //SEG181 [102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG182 [103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8269,34 +8738,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG182 [103] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG183 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG184 [103] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG183 [104] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG184 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG185 [104] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 sta res sta res+1 sta res+2 sta res+3 - //SEG185 [103] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG186 mul16u::@1 + //SEG186 [104] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG187 mul16u::@1 b1: - //SEG187 [104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG188 [105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG188 mul16u::@return - //SEG189 [105] return + //SEG189 mul16u::@return + //SEG190 [106] return rts - //SEG190 mul16u::@2 + //SEG191 mul16u::@2 b2: - //SEG191 [106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG192 [107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG192 [107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG193 [108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG193 mul16u::@7 - //SEG194 [108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG194 mul16u::@7 + //SEG195 [109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8310,26 +8779,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG195 [109] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG196 [109] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG197 mul16u::@4 + //SEG196 [110] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG197 [110] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG198 mul16u::@4 b4: - //SEG198 [110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG199 [111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG199 [111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG200 [112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG200 [103] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG201 [103] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG202 [103] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG203 [103] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG201 [104] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG202 [104] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG203 [104] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG204 [104] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG204 sin16s +//SEG205 sin16s sin16s: { .label _6 = $c .label x = $c @@ -8344,7 +8813,7 @@ sin16s: { .label x5_128 = 6 .label sinx = $17 .label isUpper = $16 - //SEG205 [112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 + //SEG206 [113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_u4f28>>$10 bcc b4 @@ -8361,8 +8830,8 @@ sin16s: { cmp #PI_u4f28>>$10 sta x+3 - //SEG208 [114] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] - //SEG209 [114] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG209 [115] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1] + //SEG210 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG210 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy + //SEG211 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy jmp b1 - //SEG211 [114] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] + //SEG212 [115] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1] b4: - //SEG212 [114] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 + //SEG213 [115] phi (byte) sin16s::isUpper#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG213 [114] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy - //SEG214 sin16s::@1 + //SEG214 [115] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy + //SEG215 sin16s::@1 b1: - //SEG215 [115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 + //SEG216 [116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1 lda x+3 cmp #>PI_HALF_u4f28>>$10 bcc b2 @@ -8407,8 +8876,8 @@ sin16s: { cmp #PI_u4f28>>$10 sbc x+3 sta x+3 - //SEG218 [117] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] - //SEG219 [117] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy - //SEG220 sin16s::@2 + //SEG219 [118] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2] + //SEG220 [118] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy + //SEG221 sin16s::@2 b2: - //SEG221 [118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 + //SEG222 [119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vduz1=vduz1_rol_3 ldy #3 !: asl _6 @@ -8435,77 +8904,77 @@ sin16s: { rol _6+3 dey bne !- - //SEG222 [119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 + //SEG223 [120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 -- vwuz1=_hi_vduz2 lda _6+2 sta x1 lda _6+3 sta x1+1 - //SEG223 [120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG224 [121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v1 lda x1+1 sta mulu16_sel.v1+1 - //SEG224 [121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG225 [122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG225 [122] call mulu16_sel - //SEG226 [152] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] - //SEG227 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG226 [123] call mulu16_sel + //SEG227 [153] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel] + //SEG228 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG228 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy - //SEG229 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy + //SEG229 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy + //SEG230 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG230 [123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 + //SEG231 [124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#0 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:6 - //SEG231 sin16s::@8 - //SEG232 [124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 + //SEG232 sin16s::@8 + //SEG233 [125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2 lda mulu16_sel.return sta x2 lda mulu16_sel.return+1 sta x2+1 - //SEG233 [125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 + //SEG234 [126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 // (word) mulu16_sel::v1#1 = (word) sin16s::x2#0 // register copy zp ZP_WORD:25 - //SEG234 [126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG235 [127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG235 [127] call mulu16_sel - //SEG236 [152] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] - //SEG237 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG236 [128] call mulu16_sel + //SEG237 [153] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel] + //SEG238 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG238 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy - //SEG239 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy + //SEG239 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@8->mulu16_sel#1] -- register_copy + //SEG240 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@8->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG240 [128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG241 [129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_1 lda mulu16_sel.return+1 sta mulu16_sel.return_1+1 - //SEG241 sin16s::@9 - //SEG242 [129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 + //SEG242 sin16s::@9 + //SEG243 [130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 // (word) sin16s::x3#0 = (word) mulu16_sel::return#1 // register copy zp ZP_WORD:25 - //SEG243 [130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 + //SEG244 [131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#2 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG244 [131] call mulu16_sel - //SEG245 [152] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] - //SEG246 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG245 [132] call mulu16_sel + //SEG246 [153] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel] + //SEG247 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1 ldx #1 - //SEG247 [152] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 + //SEG248 [153] phi (word) mulu16_sel::v2#5 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s::@9->mulu16_sel#1] -- vwuz1=vwuc1 lda #<$10000/6 sta mulu16_sel.v2 lda #>$10000/6 sta mulu16_sel.v2+1 - //SEG248 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy + //SEG249 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@9->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG249 [132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 + //SEG250 [133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#2 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:6 - //SEG250 sin16s::@10 - //SEG251 [133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 + //SEG251 sin16s::@10 + //SEG252 [134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 // (word) sin16s::x3_6#0 = (word) mulu16_sel::return#2 // register copy zp ZP_WORD:6 - //SEG252 [134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG253 [135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3 lda x1 sec sbc x3_6 @@ -8513,55 +8982,55 @@ sin16s: { lda x1+1 sbc x3_6+1 sta usinx+1 - //SEG253 [135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 + //SEG254 [136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 // (word) mulu16_sel::v1#3 = (word) sin16s::x3#0 // register copy zp ZP_WORD:25 - //SEG254 [136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG255 [137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG255 [137] call mulu16_sel - //SEG256 [152] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] - //SEG257 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG256 [138] call mulu16_sel + //SEG257 [153] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel] + //SEG258 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG258 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy - //SEG259 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy + //SEG259 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@10->mulu16_sel#1] -- register_copy + //SEG260 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@10->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG260 [138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 + //SEG261 [139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2 lda mulu16_sel.return sta mulu16_sel.return_10 lda mulu16_sel.return+1 sta mulu16_sel.return_10+1 - //SEG261 sin16s::@11 - //SEG262 [139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 + //SEG262 sin16s::@11 + //SEG263 [140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 // (word) sin16s::x4#0 = (word) mulu16_sel::return#10 // register copy zp ZP_WORD:25 - //SEG263 [140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 + //SEG264 [141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 // (word) mulu16_sel::v1#4 = (word) sin16s::x4#0 // register copy zp ZP_WORD:25 - //SEG264 [141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 + //SEG265 [142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2 lda x1 sta mulu16_sel.v2 lda x1+1 sta mulu16_sel.v2+1 - //SEG265 [142] call mulu16_sel - //SEG266 [152] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] - //SEG267 [152] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 + //SEG266 [143] call mulu16_sel + //SEG267 [153] phi from sin16s::@11 to mulu16_sel [phi:sin16s::@11->mulu16_sel] + //SEG268 [153] phi (byte) mulu16_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s::@11->mulu16_sel#0] -- vbuxx=vbuc1 ldx #0 - //SEG268 [152] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy - //SEG269 [152] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy + //SEG269 [153] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@11->mulu16_sel#1] -- register_copy + //SEG270 [153] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@11->mulu16_sel#2] -- register_copy jsr mulu16_sel - //SEG270 [143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 + //SEG271 [144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 // (word) mulu16_sel::return#11 = (word) mulu16_sel::return#12 // register copy zp ZP_WORD:6 - //SEG271 sin16s::@12 - //SEG272 [144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 + //SEG272 sin16s::@12 + //SEG273 [145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 // (word) sin16s::x5#0 = (word) mulu16_sel::return#11 // register copy zp ZP_WORD:6 - //SEG273 [145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 + //SEG274 [146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_ror_4 ldy #4 !: lsr x5_128+1 ror x5_128 dey bne !- - //SEG274 [146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 + //SEG275 [147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2 lda usinx clc adc x5_128 @@ -8569,12 +9038,12 @@ sin16s: { lda usinx+1 adc x5_128+1 sta usinx+1 - //SEG275 [147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 + //SEG276 [148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b3 - //SEG276 sin16s::@6 - //SEG277 [148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 + //SEG277 sin16s::@6 + //SEG278 [149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1 sec lda sinx eor #$ff @@ -8584,18 +9053,18 @@ sin16s: { eor #$ff adc #0 sta sinx+1 - //SEG278 [149] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] - //SEG279 [149] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy - //SEG280 sin16s::@3 + //SEG279 [150] phi from sin16s::@15 sin16s::@6 to sin16s::@3 [phi:sin16s::@15/sin16s::@6->sin16s::@3] + //SEG280 [150] phi (signed word) sin16s::return#1 = (signed word~) sin16s::return#5 [phi:sin16s::@15/sin16s::@6->sin16s::@3#0] -- register_copy + //SEG281 sin16s::@3 b3: - //SEG281 sin16s::@return - //SEG282 [150] return + //SEG282 sin16s::@return + //SEG283 [151] return rts - //SEG283 sin16s::@15 - //SEG284 [151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 + //SEG284 sin16s::@15 + //SEG285 [152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 // (signed word~) sin16s::return#5 = (signed word)(word) sin16s::usinx#1 // register copy zp ZP_WORD:23 } -//SEG285 mulu16_sel +//SEG286 mulu16_sel mulu16_sel: { .label _0 = $c .label _1 = $c @@ -8604,24 +9073,24 @@ mulu16_sel: { .label return = 6 .label return_1 = $19 .label return_10 = $19 - //SEG286 [153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 + //SEG287 [154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2 lda v1 sta mul16u.a lda v1+1 sta mul16u.a+1 - //SEG287 [154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 + //SEG288 [155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 // (word) mul16u::b#1 = (word) mulu16_sel::v2#5 // register copy zp ZP_WORD:6 - //SEG288 [155] call mul16u - //SEG289 [101] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] - //SEG290 [101] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy - //SEG291 [101] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy + //SEG289 [156] call mul16u + //SEG290 [102] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u] + //SEG291 [102] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy + //SEG292 [102] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy jsr mul16u - //SEG292 [156] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG293 [157] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:12 - //SEG293 mulu16_sel::@2 - //SEG294 [157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 + //SEG294 mulu16_sel::@2 + //SEG295 [158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 // (dword~) mulu16_sel::$0 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:12 - //SEG295 [158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx + //SEG296 [159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx cpx #0 beq !e+ !: @@ -8632,57 +9101,57 @@ mulu16_sel: { dex bne !- !e: - //SEG296 [159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 + //SEG297 [160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2 lda _1+2 sta return lda _1+3 sta return+1 - //SEG297 mulu16_sel::@return - //SEG298 [160] return + //SEG298 mulu16_sel::@return + //SEG299 [161] return rts } -//SEG299 div32u16u +//SEG300 div32u16u div32u16u: { .label quotient_hi = $10 .label quotient_lo = 6 .label return = $1b - //SEG300 [162] call divr16u - //SEG301 [171] phi from div32u16u to divr16u [phi:div32u16u->divr16u] - //SEG302 [171] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 + //SEG301 [163] call divr16u + //SEG302 [172] phi from div32u16u to divr16u [phi:div32u16u->divr16u] + //SEG303 [172] phi (word) divr16u::dividend#5 = >(const dword) PI2_u4f28#0 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1 lda #>$10 sta divr16u.dividend lda #>PI2_u4f28>>$10 sta divr16u.dividend+1 - //SEG303 [171] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 + //SEG304 [172] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1 lda #<0 sta divr16u.rem sta divr16u.rem+1 jsr divr16u - //SEG304 [163] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG305 [164] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:6 - //SEG305 div32u16u::@2 - //SEG306 [164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG306 div32u16u::@2 + //SEG307 [165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return sta quotient_hi lda divr16u.return+1 sta quotient_hi+1 - //SEG307 [165] (word) divr16u::rem#4 ← (word) rem16u#1 + //SEG308 [166] (word) divr16u::rem#4 ← (word) rem16u#1 // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:2 - //SEG308 [166] call divr16u - //SEG309 [171] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] - //SEG310 [171] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 + //SEG309 [167] call divr16u + //SEG310 [172] phi from div32u16u::@2 to divr16u [phi:div32u16u::@2->divr16u] + //SEG311 [172] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:div32u16u::@2->divr16u#0] -- vwuz1=vwuc1 lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG311 [171] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy + //SEG312 [172] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@2->divr16u#1] -- register_copy jsr divr16u - //SEG312 [167] (word) divr16u::return#3 ← (word) divr16u::return#0 + //SEG313 [168] (word) divr16u::return#3 ← (word) divr16u::return#0 // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:6 - //SEG313 div32u16u::@3 - //SEG314 [168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 + //SEG314 div32u16u::@3 + //SEG315 [169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 // (word) div32u16u::quotient_lo#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:6 - //SEG315 [169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 + //SEG316 [170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3 lda quotient_hi sta return+2 lda quotient_hi+1 @@ -8691,58 +9160,58 @@ div32u16u: { sta return lda quotient_lo+1 sta return+1 - //SEG316 div32u16u::@return - //SEG317 [170] return + //SEG317 div32u16u::@return + //SEG318 [171] return rts } -//SEG318 divr16u +//SEG319 divr16u divr16u: { .label rem = 2 .label dividend = 4 .label quotient = 6 .label return = 6 - //SEG319 [172] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG320 [172] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG320 [173] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG321 [173] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG321 [172] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG322 [173] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG322 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG323 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG324 [172] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG325 [172] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG326 [172] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG327 [172] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG328 [172] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG329 divr16u::@1 + //SEG323 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG324 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG325 [173] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG326 [173] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG327 [173] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG328 [173] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG329 [173] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG330 divr16u::@1 b1: - //SEG330 [173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG331 [174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG331 [174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 + //SEG332 [175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG332 [175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG333 [176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG333 [176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG334 [177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG334 divr16u::@4 - //SEG335 [177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG335 divr16u::@4 + //SEG336 [178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG336 [178] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG337 [178] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG338 divr16u::@2 + //SEG337 [179] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG338 [179] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG339 divr16u::@2 b2: - //SEG339 [179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG340 [180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG340 [180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG341 [181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG341 [181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG342 [182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>SIN_SIZE bcc b3 @@ -8751,13 +9220,13 @@ divr16u: { cmp #SIN_SIZE sta rem+1 - //SEG345 [184] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG346 [184] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG347 [184] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG348 divr16u::@3 + //SEG346 [185] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG347 [185] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG348 [185] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG349 divr16u::@3 b3: - //SEG349 [185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG350 [186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG350 [186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG351 [187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG351 divr16u::@6 - //SEG352 [187] (word) rem16u#1 ← (word) divr16u::rem#11 + //SEG352 divr16u::@6 + //SEG353 [188] (word) rem16u#1 ← (word) divr16u::rem#11 // (word) rem16u#1 = (word) divr16u::rem#11 // register copy zp ZP_WORD:2 - //SEG353 divr16u::@return - //SEG354 [188] return + //SEG354 divr16u::@return + //SEG355 [189] return rts } -//SEG355 bitmap_clear +//SEG356 bitmap_clear bitmap_clear: { .label bitmap = 2 .label y = $16 .label _3 = 2 - //SEG356 [189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG357 [190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG357 [190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG358 [191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:2 - //SEG358 [191] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] - //SEG359 [191] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG359 [192] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG360 [192] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG360 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy - //SEG361 [191] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] - //SEG362 [191] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG363 [191] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy - //SEG364 bitmap_clear::@1 + //SEG361 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG362 [192] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG363 [192] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG364 [192] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG365 bitmap_clear::@1 b1: - //SEG365 [192] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] - //SEG366 [192] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG366 [193] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG367 [193] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG367 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy - //SEG368 [192] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] - //SEG369 [192] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG370 [192] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy - //SEG371 bitmap_clear::@2 + //SEG368 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG369 [193] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG370 [193] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG371 [193] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG372 bitmap_clear::@2 b2: - //SEG372 [193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG373 [194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y - //SEG373 [194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG374 [195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG374 [195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG375 [196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG375 [196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG376 [197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2 - //SEG376 bitmap_clear::@3 - //SEG377 [197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG377 bitmap_clear::@3 + //SEG378 [198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG378 [198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG379 [199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1 - //SEG379 bitmap_clear::@return - //SEG380 [199] return + //SEG380 bitmap_clear::@return + //SEG381 [200] return rts } -//SEG381 bitmap_init +//SEG382 bitmap_init bitmap_init: { .label _3 = $16 .label yoffs = 2 - //SEG382 [201] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG383 [201] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG383 [202] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG384 [202] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG384 [201] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG385 [202] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 - //SEG385 [201] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG386 [201] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG387 [201] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG388 bitmap_init::@1 + //SEG386 [202] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG387 [202] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG388 [202] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG389 bitmap_init::@1 b1: - //SEG389 [202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG390 [203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG390 [203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG391 [204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG391 [204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 + //SEG392 [205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG392 [205] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG393 [205] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG393 [206] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG394 [206] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 - //SEG394 bitmap_init::@2 + //SEG395 bitmap_init::@2 b2: - //SEG395 [206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG396 [207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG396 [207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG397 [208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG397 [208] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG398 [208] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG398 [209] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG399 [209] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG399 [208] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG400 [209] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG400 [208] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG401 [208] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG402 [208] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG403 bitmap_init::@3 + //SEG401 [209] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG402 [209] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG403 [209] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG404 bitmap_init::@3 b3: - //SEG404 [209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG405 [210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _3 - //SEG405 [210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG406 [211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG406 [211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG407 [212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG407 [212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG408 [213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG408 [213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG409 [214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG409 [214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG410 [215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG410 [215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG411 [216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG411 [216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG412 [217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG412 bitmap_init::@7 - //SEG413 [217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG413 bitmap_init::@7 + //SEG414 [218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -8911,56 +9380,56 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG414 [218] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] - //SEG415 [218] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy - //SEG416 bitmap_init::@4 + //SEG415 [219] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG416 [219] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG417 bitmap_init::@4 b4: - //SEG417 [219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG418 [220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG418 [220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG419 [221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG419 bitmap_init::@return - //SEG420 [221] return + //SEG420 bitmap_init::@return + //SEG421 [222] return rts - //SEG421 [222] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] - //SEG422 bitmap_init::@10 - //SEG423 [205] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] - //SEG424 [205] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG422 [223] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG423 bitmap_init::@10 + //SEG424 [206] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG425 [206] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } -//SEG425 fill +//SEG426 fill fill: { .const size = $3e8 .label end = SCREEN+size .label addr = 2 - //SEG426 [224] phi from fill to fill::@1 [phi:fill->fill::@1] - //SEG427 [224] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 + //SEG427 [225] phi from fill to fill::@1 [phi:fill->fill::@1] + //SEG428 [225] phi (byte*) fill::addr#2 = (const byte*) SCREEN#0 [phi:fill->fill::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta addr+1 - //SEG428 [224] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] - //SEG429 [224] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy - //SEG430 fill::@1 + //SEG429 [225] phi from fill::@1 to fill::@1 [phi:fill::@1->fill::@1] + //SEG430 [225] phi (byte*) fill::addr#2 = (byte*) fill::addr#1 [phi:fill::@1->fill::@1#0] -- register_copy + //SEG431 fill::@1 b1: - //SEG431 [225] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 + //SEG432 [226] *((byte*) fill::addr#2) ← (const byte) WHITE#0 -- _deref_pbuz1=vbuc1 lda #WHITE ldy #0 sta (addr),y - //SEG432 [226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG433 [227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG433 [227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG434 [228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuc1_then_la1 lda addr+1 cmp #>end bne b1 lda addr cmp #((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) (word~) mul16s::$16 $16 zp ZP_WORD:6 4.0 +(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:6 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -277,8 +345,11 @@ (word) mulu16_sel::v2#3 v2 zp ZP_WORD:6 4.0 (word) mulu16_sel::v2#4 v2 zp ZP_WORD:6 4.0 (word) mulu16_sel::v2#5 v2 zp ZP_WORD:6 5.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (void()) render_sine() (word~) render_sine::$0 $0 zp ZP_WORD:6 22.0 (signed word*~) render_sine::$1 $1 zp ZP_WORD:6 22.0 @@ -406,7 +477,7 @@ (signed word) wrap_y::y#6 y zp ZP_WORD:6 203.0 (signed word) wrap_y::y#9 y zp ZP_WORD:6 24.0 -zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ] +zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 mul16s::$5 ] zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ] diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.cfg b/src/test/ref/examples/sinsprites/sinus-sprites.cfg index b4f3834f1..4d36a0769 100644 --- a/src/test/ref/examples/sinsprites/sinus-sprites.cfg +++ b/src/test/ref/examples/sinsprites/sinus-sprites.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@59 -@59: scope:[] from @begin + to:@60 +@60: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @59 +@end: scope:[] from @60 [3] phi() -main: scope:[main] from @59 +main: scope:[main] from @60 [4] phi() [5] call init to:main::@2 diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.log b/src/test/ref/examples/sinsprites/sinus-sprites.log index 287ef13c4..9a31ee3c1 100644 --- a/src/test/ref/examples/sinsprites/sinus-sprites.log +++ b/src/test/ref/examples/sinsprites/sinus-sprites.log @@ -2,23 +2,90 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 - to:@3 -@3: scope:[] from @begin + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) memLo#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 254 (byte*) memHi#0 ← ((byte*)) (byte/word/signed word/dword/signed dword) 255 - to:@49 + to:@31 prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 @@ -113,19 +180,27 @@ sinFAC: scope:[sinFAC] from gen_sintab::@18 sinFAC::@return: scope:[sinFAC] from sinFAC return to:@return -@49: scope:[] from @3 +@31: scope:[] from @4 + (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte*) print_line_cursor#0 ← (byte*) print_screen#0 + (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 + to:@43 +@43: scope:[] from @31 + (byte[]) print_hextab#0 ← (const string) $0 + to:@50 +@50: scope:[] from @43 (byte) sinlen_x#0 ← (byte/word/signed word/dword/signed dword) 221 (byte[221]) sintab_x#0 ← { fill( 221, 0) } (byte) sinlen_y#0 ← (byte/word/signed word/dword/signed dword) 197 (byte[197]) sintab_y#0 ← { fill( 197, 0) } (byte*) sprites#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@52 -main: scope:[main] from @59 - (byte) sin_idx_y#24 ← phi( @59/(byte) sin_idx_y#17 ) - (byte) sin_idx_x#26 ← phi( @59/(byte) sin_idx_x#16 ) - (byte) progress_idx#30 ← phi( @59/(byte) progress_idx#35 ) - (byte*) progress_cursor#29 ← phi( @59/(byte*) progress_cursor#35 ) + to:@53 +main: scope:[main] from @60 + (byte) sin_idx_y#24 ← phi( @60/(byte) sin_idx_y#17 ) + (byte) sin_idx_x#26 ← phi( @60/(byte) sin_idx_x#16 ) + (byte) progress_idx#30 ← phi( @60/(byte) progress_idx#35 ) + (byte*) progress_cursor#29 ← phi( @60/(byte*) progress_cursor#35 ) call init to:main::@5 main::@5: scope:[main] from main @@ -277,10 +352,10 @@ clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1 clear_screen::@return: scope:[clear_screen] from clear_screen::@1 return to:@return -@52: scope:[] from @49 +@53: scope:[] from @50 (byte*) progress_cursor#7 ← (byte*) SCREEN#0 (byte) progress_idx#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@54 + to:@55 progress_init: scope:[progress_init] from init::@5 init::@7 (byte*) progress_init::line#2 ← phi( init::@5/(byte*) progress_init::line#0 init::@7/(byte*) progress_init::line#1 ) (byte*) progress_cursor#8 ← (byte*) progress_init::line#2 @@ -320,12 +395,12 @@ progress_inc::@return: scope:[progress_inc] from progress_inc::@1 (byte*) progress_cursor#11 ← (byte*) progress_cursor#25 return to:@return -@54: scope:[] from @52 - (byte) progress_idx#39 ← phi( @52/(byte) progress_idx#7 ) - (byte*) progress_cursor#39 ← phi( @52/(byte*) progress_cursor#7 ) +@55: scope:[] from @53 + (byte) progress_idx#39 ← phi( @53/(byte) progress_idx#7 ) + (byte*) progress_cursor#39 ← phi( @53/(byte*) progress_cursor#7 ) (byte) sin_idx_x#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin_idx_y#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@59 + to:@60 anim: scope:[anim] from main::@3 (byte) sin_idx_y#9 ← phi( main::@3/(byte) sin_idx_y#13 ) (byte) sin_idx_x#9 ← phi( main::@3/(byte) sin_idx_x#13 ) @@ -885,44 +960,147 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 (byte*) progress_cursor#13 ← (byte*) progress_cursor#27 return to:@return -@59: scope:[] from @54 - (byte) sin_idx_y#17 ← phi( @54/(byte) sin_idx_y#2 ) - (byte) sin_idx_x#16 ← phi( @54/(byte) sin_idx_x#2 ) - (byte) progress_idx#35 ← phi( @54/(byte) progress_idx#39 ) - (byte*) progress_cursor#35 ← phi( @54/(byte*) progress_cursor#39 ) +@60: scope:[] from @55 + (byte) sin_idx_y#17 ← phi( @55/(byte) sin_idx_y#2 ) + (byte) sin_idx_x#16 ← phi( @55/(byte) sin_idx_x#2 ) + (byte) progress_idx#35 ← phi( @55/(byte) progress_idx#39 ) + (byte*) progress_cursor#35 ← phi( @55/(byte*) progress_cursor#39 ) call main - to:@60 -@60: scope:[] from @59 - (byte) sin_idx_y#12 ← phi( @59/(byte) sin_idx_y#1 ) - (byte) sin_idx_x#12 ← phi( @59/(byte) sin_idx_x#1 ) - (byte) progress_idx#29 ← phi( @59/(byte) progress_idx#1 ) - (byte*) progress_cursor#28 ← phi( @59/(byte*) progress_cursor#1 ) + to:@61 +@61: scope:[] from @60 + (byte) sin_idx_y#12 ← phi( @60/(byte) sin_idx_y#1 ) + (byte) sin_idx_x#12 ← phi( @60/(byte) sin_idx_x#1 ) + (byte) progress_idx#29 ← phi( @60/(byte) progress_idx#1 ) + (byte*) progress_cursor#28 ← phi( @60/(byte*) progress_cursor#1 ) (byte*) progress_cursor#14 ← (byte*) progress_cursor#28 (byte) progress_idx#15 ← (byte) progress_idx#29 (byte) sin_idx_x#6 ← (byte) sin_idx_x#12 (byte) sin_idx_y#6 ← (byte) sin_idx_y#12 to:@end -@end: scope:[] from @60 +@end: scope:[] from @61 SYMBOL TABLE SSA -(label) @3 -(label) @49 -(label) @52 -(label) @54 -(label) @59 +(const string) $0 = (string) "0123456789abcdef" +(label) @31 +(label) @4 +(label) @43 +(label) @50 +(label) @53 +(label) @55 (label) @60 +(label) @61 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 (byte*) CHARGEN (byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 (byte*) COLS (byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SPRITES_COLS @@ -933,12 +1111,46 @@ SYMBOL TABLE SSA (byte*) SPRITES_EXPAND_X#0 (byte*) SPRITES_EXPAND_Y (byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 (byte*) SPRITES_XMSB (byte*) SPRITES_XMSB#0 (byte*) SPRITES_XPOS (byte*) SPRITES_XPOS#0 (byte*) SPRITES_YPOS (byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem) (label) addMEMtoFAC::@1 (label) addMEMtoFAC::@return @@ -1409,6 +1621,14 @@ SYMBOL TABLE SSA (byte*) prepareMEM::mem#3 (byte*) prepareMEM::mem#4 (byte*) prepareMEM::mem#5 +(byte*) print_char_cursor +(byte*) print_char_cursor#0 +(byte[]) print_hextab +(byte[]) print_hextab#0 +(byte*) print_line_cursor +(byte*) print_line_cursor#0 +(byte*) print_screen +(byte*) print_screen#0 (byte*) progress_cursor (byte*) progress_cursor#0 (byte*) progress_cursor#1 @@ -1661,6 +1881,7 @@ Inversing boolean not (bool~) gen_chargen_sprite::$9 ← (byte) gen_chargen_spri Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) prepareMEM::mem#0 = (byte*~) setFAC::$0 Alias (word) getFAC::return#0 = (word) getFAC::w#0 (word) getFAC::return#3 (word) getFAC::return#1 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 Alias (byte) sin_idx_x#23 = (byte) sin_idx_x#26 Alias (byte) sin_idx_y#21 = (byte) sin_idx_y#24 Alias (byte*) progress_cursor#0 = (byte*) progress_cursor#15 @@ -1882,20 +2103,89 @@ Simple Condition (bool~) gen_chargen_sprite::$12 if((byte) gen_chargen_sprite::x Simple Condition (bool~) gen_chargen_sprite::$14 if((byte) gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 Simple Condition (bool~) gen_sintab::$26 if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) memLo#0 = ((byte*))254 Constant (const byte*) memHi#0 = ((byte*))255 +Constant (const byte*) print_line_cursor#0 = ((byte*))1024 +Constant (const byte[]) print_hextab#0 = $0 Constant (const byte) sinlen_x#0 = 221 Constant (const byte[221]) sintab_x#0 = { fill( 221, 0) } Constant (const byte) sinlen_y#0 = 197 @@ -1976,6 +2266,7 @@ Fixing inline constructor with getFAC::$0 ← *(memHi#0) w= *(memLo#0) Successful SSA optimization Pass2FixInlineConstructors Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) init::$1 ← (byte) init::i#2 Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 Successful SSA optimization Pass2NopCastElimination Removing unused block main::@return @@ -1994,17 +2285,19 @@ Resolved ranged next value gen_chargen_sprite::x#1 ← ++ gen_chargen_sprite::x# Resolved ranged comparison value if(gen_chargen_sprite::x#1!=rangelast(0,7)) goto gen_chargen_sprite::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value gen_chargen_sprite::y#1 ← ++ gen_chargen_sprite::y#10 to ++ Resolved ranged comparison value if(gen_chargen_sprite::y#1!=rangelast(0,7)) goto gen_chargen_sprite::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8 -Culled Empty Block (label) @3 -Culled Empty Block (label) @49 +Culled Empty Block (label) @4 +Culled Empty Block (label) @31 +Culled Empty Block (label) @43 +Culled Empty Block (label) @50 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@6 Culled Empty Block (label) init::@3 Culled Empty Block (label) init::@10 -Culled Empty Block (label) @52 -Culled Empty Block (label) @54 +Culled Empty Block (label) @53 +Culled Empty Block (label) @55 Culled Empty Block (label) gen_sintab::@13 -Culled Empty Block (label) @60 +Culled Empty Block (label) @61 Successful SSA optimization Pass2CullEmptyBlocks Alias (word) getFAC::return#0 = (word~) getFAC::$0 Alias (byte) init::i#2 = (byte~) init::$1 @@ -2148,7 +2441,7 @@ Added new block during phi lifting gen_chargen_sprite::@13(between gen_chargen_s Added new block during phi lifting gen_chargen_sprite::@14(between gen_chargen_sprite::@4 and gen_chargen_sprite::@5) Added new block during phi lifting place_sprites::@3(between place_sprites::@1 and place_sprites::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @59 +Adding NOP phi() at start of @60 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -2272,7 +2565,7 @@ Culled Empty Block (label) gen_chargen_sprite::@13 Culled Empty Block (label) gen_chargen_sprite::@14 Culled Empty Block (label) place_sprites::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @59 +Adding NOP phi() at start of @60 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -2310,14 +2603,14 @@ Adding NOP phi() at start of gen_chargen_sprite::@6 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@59 -@59: scope:[] from @begin + to:@60 +@60: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @59 +@end: scope:[] from @60 [3] phi() -main: scope:[main] from @59 +main: scope:[main] from @60 [4] phi() [5] call init to:main::@2 @@ -2772,19 +3065,86 @@ place_sprites::@return: scope:[place_sprites] from place_sprites::@1 VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN (byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN (byte*) SPRITES_COLS (byte*) SPRITES_ENABLE (byte*) SPRITES_EXPAND_X (byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (byte*) SPRITES_XPOS (byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem) (byte*) addMEMtoFAC::mem (void()) anim() @@ -2931,6 +3291,10 @@ VARIABLE REGISTER WEIGHTS (byte*) prepareMEM::mem#4 4.0 (byte*) prepareMEM::mem#5 3.9999999999999996 (byte*~) prepareMEM::mem#8 4.0 +(byte*) print_char_cursor +(byte[]) print_hextab +(byte*) print_line_cursor +(byte*) print_screen (byte*) progress_cursor (byte*) progress_cursor#10 4.0 (byte*) progress_cursor#11 2.8333333333333335 @@ -3163,17 +3527,17 @@ INITIAL ASM .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @59 [phi:@begin->@59] -b59_from_bbegin: - jmp b59 -//SEG4 @59 -b59: +//SEG3 [1] phi from @begin to @60 [phi:@begin->@60] +b60_from_bbegin: + jmp b60 +//SEG4 @60 +b60: //SEG5 [2] call main -//SEG6 [4] phi from @59 to main [phi:@59->main] -main_from_b59: +//SEG6 [4] phi from @60 to main [phi:@60->main] +main_from_b60: jsr main -//SEG7 [3] phi from @59 to @end [phi:@59->@end] -bend_from_b59: +//SEG7 [3] phi from @60 to @end [phi:@60->@end] +bend_from_b60: jmp bend //SEG8 @end bend: @@ -4892,17 +5256,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label sin_idx_y = 3 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @59 [phi:@begin->@59] -b59_from_bbegin: - jmp b59 -//SEG4 @59 -b59: +//SEG3 [1] phi from @begin to @60 [phi:@begin->@60] +b60_from_bbegin: + jmp b60 +//SEG4 @60 +b60: //SEG5 [2] call main -//SEG6 [4] phi from @59 to main [phi:@59->main] -main_from_b59: +//SEG6 [4] phi from @60 to main [phi:@60->main] +main_from_b60: jsr main -//SEG7 [3] phi from @59 to @end [phi:@59->@end] -bend_from_b59: +//SEG7 [3] phi from @60 to @end [phi:@60->@end] +bend_from_b60: jmp bend //SEG8 @end bend: @@ -6178,7 +6542,7 @@ place_sprites: { sintab_y: .fill $c5, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b59 +Removing instruction jmp b60 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -6296,9 +6660,9 @@ Replacing label b2_from_b8 with b2 Replacing label b1_from_b9 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b59_from_bbegin: -Removing instruction main_from_b59: -Removing instruction bend_from_b59: +Removing instruction b60_from_bbegin: +Removing instruction main_from_b60: +Removing instruction bend_from_b60: Removing instruction b2_from_b2: Removing instruction b3_from_b2: Removing instruction b1_from_b3: @@ -6365,7 +6729,7 @@ Removing instruction b4_from_b5: Removing instruction b5_from_b4: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b59: +Removing instruction b60: Removing instruction bend: Removing instruction init_from_main: Removing instruction b2_from_main: @@ -6484,19 +6848,69 @@ Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @59 +(label) @60 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SPRITES_COLS @@ -6507,12 +6921,29 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264 (byte*) SPRITES_XPOS (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem) (label) addMEMtoFAC::@1 (label) addMEMtoFAC::@return @@ -6737,6 +7168,10 @@ FINAL SYMBOL TABLE (byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0 (byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 3.9999999999999996 (byte*~) prepareMEM::mem#8 mem zp ZP_WORD:12 4.0 +(byte*) print_char_cursor +(byte[]) print_hextab +(byte*) print_line_cursor +(byte*) print_screen (byte*) progress_cursor (byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0 (byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 @@ -6852,12 +7287,12 @@ Score: 768747 .label sin_idx_x = 2 .label sin_idx_y = 3 //SEG2 @begin -//SEG3 [1] phi from @begin to @59 [phi:@begin->@59] -//SEG4 @59 +//SEG3 [1] phi from @begin to @60 [phi:@begin->@60] +//SEG4 @60 //SEG5 [2] call main -//SEG6 [4] phi from @59 to main [phi:@59->main] +//SEG6 [4] phi from @60 to main [phi:@60->main] jsr main -//SEG7 [3] phi from @59 to @end [phi:@59->@end] +//SEG7 [3] phi from @60 to @end [phi:@60->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/ref/examples/sinsprites/sinus-sprites.sym b/src/test/ref/examples/sinsprites/sinus-sprites.sym index f355b702e..1771c011f 100644 --- a/src/test/ref/examples/sinsprites/sinus-sprites.sym +++ b/src/test/ref/examples/sinsprites/sinus-sprites.sym @@ -1,16 +1,66 @@ -(label) @59 +(label) @60 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SPRITES_COLS @@ -21,12 +71,29 @@ (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_XMSB (const byte*) SPRITES_XMSB#0 SPRITES_XMSB = ((byte*))(word/dword/signed dword) 53264 (byte*) SPRITES_XPOS (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) addMEMtoFAC((byte*) addMEMtoFAC::mem) (label) addMEMtoFAC::@1 (label) addMEMtoFAC::@return @@ -251,6 +318,10 @@ (byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0 (byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 3.9999999999999996 (byte*~) prepareMEM::mem#8 mem zp ZP_WORD:12 4.0 +(byte*) print_char_cursor +(byte[]) print_hextab +(byte*) print_line_cursor +(byte*) print_screen (byte*) progress_cursor (byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0 (byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 diff --git a/src/test/ref/examples/tetris/test-sprites.asm b/src/test/ref/examples/tetris/test-sprites.asm new file mode 100644 index 000000000..e6fee941a --- /dev/null +++ b/src/test/ref/examples/tetris/test-sprites.asm @@ -0,0 +1,167 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 + .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d + .label BORDERCOL = $d020 + .label BGCOL = $d021 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 + .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label KERNEL_IRQ = $314 + .const BLACK = 0 + .const WHITE = 1 + .const BLUE = 6 + .label PLAYFIELD_SPRITES = $2000 + .label PLAYFIELD_CHARSET = $1000 + .label PLAYFIELD_SCREEN = $400 + .const IRQ_RASTER_FIRST = $30 + .label irq_raster_next = 2 + .label irq_cnt = 2 + .label irq_sprite_ypos = 2 + lda #IRQ_RASTER_FIRST + sta irq_raster_next + lda #0 + sta irq_cnt + lda #$32 + sta irq_sprite_ypos + jsr main +main: { + jsr init_sprites + jsr init_irq + rts +} +init_irq: { + sei + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + lda #IRQ_RASTER_FIRST + sta RASTER + lda #IRQ_RASTER + sta IRQ_ENABLE + lda #irq + sta KERNEL_IRQ+1 + cli + rts +} +init_sprites: { + .const ypos = $32 + .label sprites_ptr = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + .label xpos = 2 + .label ptr = 3 + lda #3 + sta CIA2_PORT_A_DDR + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + lda #toD0181_return + sta D018 + lda #$f + sta SPRITES_ENABLE + lda #0 + sta SPRITES_MC + sta SPRITES_EXPAND_Y + sta SPRITES_EXPAND_X + lda #toSpritePtr1_return + sta ptr + lda #$18+$e*8 + sta xpos + ldy #0 + b1: + tya + asl + tax + lda xpos + sta SPRITES_XPOS,x + lda #ypos + sta SPRITES_YPOS,x + lda #BLACK + sta SPRITES_COLS,y + lda ptr + sta sprites_ptr,y + lda #$18 + clc + adc xpos + sta xpos + inc ptr + iny + cpy #4 + bne b1 + rts +} +irq: { + lda #WHITE + sta BGCOL + sta BORDERCOL + lda irq_sprite_ypos + sta SPRITES_YPOS + lda irq_sprite_ypos + sta SPRITES_YPOS+2 + lda irq_sprite_ypos + sta SPRITES_YPOS+4 + lda irq_sprite_ypos + sta SPRITES_YPOS+6 + inc irq_cnt + lda irq_cnt + cmp #$a + beq b1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + b2: + lda irq_raster_next + sta RASTER + lda #IRQ_RASTER + sta IRQ_STATUS + lda #BLACK + sta BORDERCOL + lda #BLUE + sta BGCOL + jmp $ea81 + b1: + lda #0 + sta irq_cnt + lda #IRQ_RASTER_FIRST + sta irq_raster_next + lda #$32 + sta irq_sprite_ypos + jmp b2 +} +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + diff --git a/src/test/ref/examples/tetris/test-sprites.cfg b/src/test/ref/examples/tetris/test-sprites.cfg new file mode 100644 index 000000000..6777f8e66 --- /dev/null +++ b/src/test/ref/examples/tetris/test-sprites.cfg @@ -0,0 +1,119 @@ +@begin: scope:[] from + [0] phi() + to:@6 +@6: scope:[] from @begin + [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:@8 +@8: scope:[] from @6 + kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + }} + [5] call main + to:@end +@end: scope:[] from @8 + [6] phi() +main: scope:[main] from @8 + [7] phi() + [8] call init_sprites + to:main::@1 +main::@1: scope:[main] from main + [9] phi() + [10] call init_irq + to:main::@return +main::@return: scope:[main] from main::@1 + [11] return + to:@return +init_irq: scope:[init_irq] from main::@1 + asm { sei } + [13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() + asm { cli } + to:init_irq::@return +init_irq::@return: scope:[init_irq] from init_irq + [19] return + to:@return +init_sprites: scope:[init_sprites] from main + [20] phi() + to:init_sprites::vicSelectGfxBank1 +init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites + [21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + to:init_sprites::vicSelectGfxBank1_toDd001 +init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1 + [22] phi() + to:init_sprites::vicSelectGfxBank1_@1 +init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001 + [23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 + to:init_sprites::toD0181 +init_sprites::toD0181: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1 + [24] phi() + to:init_sprites::@4 +init_sprites::@4: scope:[init_sprites] from init_sprites::toD0181 + [25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 + [26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + to:init_sprites::toSpritePtr1 +init_sprites::toSpritePtr1: scope:[init_sprites] from init_sprites::@4 + [30] phi() + to:init_sprites::@1 +init_sprites::@1: scope:[init_sprites] from init_sprites::@1 init_sprites::toSpritePtr1 + [31] (byte) init_sprites::ptr#2 ← phi( init_sprites::@1/(byte) init_sprites::ptr#1 init_sprites::toSpritePtr1/(const byte) init_sprites::toSpritePtr1_return#0 ) + [31] (byte) init_sprites::xpos#2 ← phi( init_sprites::@1/(byte) init_sprites::xpos#1 init_sprites::toSpritePtr1/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 ) + [31] (byte) init_sprites::s#2 ← phi( init_sprites::@1/(byte) init_sprites::s#1 init_sprites::toSpritePtr1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 + [34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0 + [35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 + [36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 + [37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [38] (byte) init_sprites::ptr#1 ← ++ (byte) init_sprites::ptr#2 + [39] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 + [40] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 + to:init_sprites::@return +init_sprites::@return: scope:[init_sprites] from init_sprites::@1 + [41] return + to:@return +irq: scope:[irq] from + [42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0) + [44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0 + [45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0 + [46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0 + [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0 + [48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 + to:irq::@3 +irq::@3: scope:[irq] from irq + [50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + to:irq::@2 +irq::@2: scope:[irq] from irq::@1 irq::@3 + [52] (byte) irq_raster_next#3 ← phi( irq::@1/(byte) irq_raster_next#1 irq::@3/(byte) irq_raster_next#2 ) + [53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3 + [54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + to:irq::@return +irq::@return: scope:[irq] from irq::@2 + [57] return + to:@return +irq::@1: scope:[irq] from irq + [58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:irq::@2 diff --git a/src/test/ref/examples/tetris/test-sprites.log b/src/test/ref/examples/tetris/test-sprites.log new file mode 100644 index 000000000..1de689b36 --- /dev/null +++ b/src/test/ref/examples/tetris/test-sprites.log @@ -0,0 +1,2532 @@ +Resolved forward reference irq to interrupt(KERNEL_MIN)(void()) irq() +Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx +Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_SCREEN +Inlined call (byte~) init_sprites::$1 ← call toD018 (byte*) PLAYFIELD_SCREEN (byte*) PLAYFIELD_CHARSET +Inlined call (byte~) init_sprites::$5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin + (byte*) PLAYFIELD_SPRITES#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 + (byte*) PLAYFIELD_CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 4096 + (byte*) PLAYFIELD_SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + to:@6 +main: scope:[main] from @8 + (byte*) PLAYFIELD_SPRITES#12 ← phi( @8/(byte*) PLAYFIELD_SPRITES#2 ) + (byte*) PLAYFIELD_CHARSET#7 ← phi( @8/(byte*) PLAYFIELD_CHARSET#8 ) + (byte*) PLAYFIELD_SCREEN#4 ← phi( @8/(byte*) PLAYFIELD_SCREEN#7 ) + call init_sprites + to:main::@1 +main::@1: scope:[main] from main + call init_irq + to:main::@2 +main::@2: scope:[main] from main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +init_sprites: scope:[init_sprites] from main + (byte*) PLAYFIELD_SPRITES#11 ← phi( main/(byte*) PLAYFIELD_SPRITES#12 ) + (byte*) PLAYFIELD_CHARSET#6 ← phi( main/(byte*) PLAYFIELD_CHARSET#7 ) + (byte*) PLAYFIELD_SCREEN#1 ← phi( main/(byte*) PLAYFIELD_SCREEN#4 ) + (byte*) init_sprites::vicSelectGfxBank1_gfx#0 ← (byte*) PLAYFIELD_SCREEN#1 + to:init_sprites::vicSelectGfxBank1 +init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites + (byte*) PLAYFIELD_SPRITES#10 ← phi( init_sprites/(byte*) PLAYFIELD_SPRITES#11 ) + (byte*) PLAYFIELD_CHARSET#5 ← phi( init_sprites/(byte*) PLAYFIELD_CHARSET#6 ) + (byte*) PLAYFIELD_SCREEN#12 ← phi( init_sprites/(byte*) PLAYFIELD_SCREEN#1 ) + (byte*) init_sprites::vicSelectGfxBank1_gfx#1 ← phi( init_sprites/(byte*) init_sprites::vicSelectGfxBank1_gfx#0 ) + *((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) init_sprites::vicSelectGfxBank1_gfx#1 + to:init_sprites::vicSelectGfxBank1_toDd001 +init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1 + (byte*) PLAYFIELD_SPRITES#9 ← phi( init_sprites::vicSelectGfxBank1/(byte*) PLAYFIELD_SPRITES#10 ) + (byte*) PLAYFIELD_CHARSET#4 ← phi( init_sprites::vicSelectGfxBank1/(byte*) PLAYFIELD_CHARSET#5 ) + (byte*) PLAYFIELD_SCREEN#10 ← phi( init_sprites::vicSelectGfxBank1/(byte*) PLAYFIELD_SCREEN#12 ) + (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 ← phi( init_sprites::vicSelectGfxBank1/(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 ) + (word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 + (byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 ← > (word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 + (byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 + (byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 + to:init_sprites::vicSelectGfxBank1_toDd001_@return +init_sprites::vicSelectGfxBank1_toDd001_@return: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001 + (byte*) PLAYFIELD_SPRITES#8 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte*) PLAYFIELD_SPRITES#9 ) + (byte*) PLAYFIELD_CHARSET#3 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte*) PLAYFIELD_CHARSET#4 ) + (byte*) PLAYFIELD_SCREEN#8 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte*) PLAYFIELD_SCREEN#10 ) + (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 ← phi( init_sprites::vicSelectGfxBank1_toDd001/(byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 ) + (byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 + to:init_sprites::vicSelectGfxBank1_@1 +init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001_@return + (byte*) PLAYFIELD_SPRITES#7 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte*) PLAYFIELD_SPRITES#8 ) + (byte*) PLAYFIELD_CHARSET#2 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte*) PLAYFIELD_CHARSET#3 ) + (byte*) PLAYFIELD_SCREEN#5 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte*) PLAYFIELD_SCREEN#8 ) + (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 ← phi( init_sprites::vicSelectGfxBank1_toDd001_@return/(byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 ) + (byte) init_sprites::vicSelectGfxBank1_$0#0 ← (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 + *((byte*) CIA2_PORT_A#0) ← (byte) init_sprites::vicSelectGfxBank1_$0#0 + to:init_sprites::@3 +init_sprites::@3: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1 + (byte*) PLAYFIELD_SPRITES#6 ← phi( init_sprites::vicSelectGfxBank1_@1/(byte*) PLAYFIELD_SPRITES#7 ) + (byte*) PLAYFIELD_CHARSET#1 ← phi( init_sprites::vicSelectGfxBank1_@1/(byte*) PLAYFIELD_CHARSET#2 ) + (byte*) PLAYFIELD_SCREEN#2 ← phi( init_sprites::vicSelectGfxBank1_@1/(byte*) PLAYFIELD_SCREEN#5 ) + (byte*) init_sprites::toD0181_screen#0 ← (byte*) PLAYFIELD_SCREEN#2 + (byte*) init_sprites::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#1 + to:init_sprites::toD0181 +init_sprites::toD0181: scope:[init_sprites] from init_sprites::@3 + (byte*) PLAYFIELD_SPRITES#5 ← phi( init_sprites::@3/(byte*) PLAYFIELD_SPRITES#6 ) + (byte*) PLAYFIELD_SCREEN#9 ← phi( init_sprites::@3/(byte*) PLAYFIELD_SCREEN#2 ) + (byte*) init_sprites::toD0181_gfx#1 ← phi( init_sprites::@3/(byte*) init_sprites::toD0181_gfx#0 ) + (byte*) init_sprites::toD0181_screen#1 ← phi( init_sprites::@3/(byte*) init_sprites::toD0181_screen#0 ) + (word) init_sprites::toD0181_$0#0 ← ((word)) (byte*) init_sprites::toD0181_screen#1 + (word) init_sprites::toD0181_$1#0 ← (word) init_sprites::toD0181_$0#0 & (word/signed word/dword/signed dword) 16383 + (word) init_sprites::toD0181_$2#0 ← (word) init_sprites::toD0181_$1#0 << (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) init_sprites::toD0181_$3#0 ← > (word) init_sprites::toD0181_$2#0 + (word) init_sprites::toD0181_$4#0 ← ((word)) (byte*) init_sprites::toD0181_gfx#1 + (byte) init_sprites::toD0181_$5#0 ← > (word) init_sprites::toD0181_$4#0 + (byte) init_sprites::toD0181_$6#0 ← (byte) init_sprites::toD0181_$5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) init_sprites::toD0181_$7#0 ← (byte) init_sprites::toD0181_$6#0 & (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) init_sprites::toD0181_$8#0 ← (byte) init_sprites::toD0181_$3#0 | (byte) init_sprites::toD0181_$7#0 + (byte) init_sprites::toD0181_return#0 ← (byte) init_sprites::toD0181_$8#0 + to:init_sprites::toD0181_@return +init_sprites::toD0181_@return: scope:[init_sprites] from init_sprites::toD0181 + (byte*) PLAYFIELD_SPRITES#3 ← phi( init_sprites::toD0181/(byte*) PLAYFIELD_SPRITES#5 ) + (byte*) PLAYFIELD_SCREEN#6 ← phi( init_sprites::toD0181/(byte*) PLAYFIELD_SCREEN#9 ) + (byte) init_sprites::toD0181_return#2 ← phi( init_sprites::toD0181/(byte) init_sprites::toD0181_return#0 ) + (byte) init_sprites::toD0181_return#1 ← (byte) init_sprites::toD0181_return#2 + to:init_sprites::@4 +init_sprites::@4: scope:[init_sprites] from init_sprites::toD0181_@return + (byte*) PLAYFIELD_SPRITES#1 ← phi( init_sprites::toD0181_@return/(byte*) PLAYFIELD_SPRITES#3 ) + (byte*) PLAYFIELD_SCREEN#3 ← phi( init_sprites::toD0181_@return/(byte*) PLAYFIELD_SCREEN#6 ) + (byte) init_sprites::toD0181_return#3 ← phi( init_sprites::toD0181_@return/(byte) init_sprites::toD0181_return#1 ) + (byte~) init_sprites::$1 ← (byte) init_sprites::toD0181_return#3 + *((byte*) D018#0) ← (byte~) init_sprites::$1 + *((byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + *((byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + *((byte*) SPRITES_EXPAND_Y#0) ← *((byte*) SPRITES_MC#0) + *((byte*) SPRITES_EXPAND_X#0) ← *((byte*) SPRITES_EXPAND_Y#0) + (byte*~) init_sprites::$2 ← (byte*) PLAYFIELD_SCREEN#3 + (word) SPRITE_PTRS#0 + (byte*) init_sprites::sprites_ptr#0 ← (byte*~) init_sprites::$2 + (byte/signed byte/word/signed word/dword/signed dword~) init_sprites::$3 ← (byte/signed byte/word/signed word/dword/signed dword) 14 * (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$4 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte/signed byte/word/signed word/dword/signed dword~) init_sprites::$3 + (byte) init_sprites::xpos#0 ← (byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$4 + (byte) init_sprites::ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte*) init_sprites::toSpritePtr1_sprite#0 ← (byte*) PLAYFIELD_SPRITES#1 + to:init_sprites::toSpritePtr1 +init_sprites::toSpritePtr1: scope:[init_sprites] from init_sprites::@4 + (byte*) init_sprites::sprites_ptr#4 ← phi( init_sprites::@4/(byte*) init_sprites::sprites_ptr#0 ) + (byte) init_sprites::ypos#4 ← phi( init_sprites::@4/(byte) init_sprites::ypos#0 ) + (byte) init_sprites::xpos#5 ← phi( init_sprites::@4/(byte) init_sprites::xpos#0 ) + (byte*) init_sprites::toSpritePtr1_sprite#1 ← phi( init_sprites::@4/(byte*) init_sprites::toSpritePtr1_sprite#0 ) + (word) init_sprites::toSpritePtr1_$0#0 ← ((word)) (byte*) init_sprites::toSpritePtr1_sprite#1 + (word) init_sprites::toSpritePtr1_$1#0 ← (word) init_sprites::toSpritePtr1_$0#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) init_sprites::toSpritePtr1_$2#0 ← ((byte)) (word) init_sprites::toSpritePtr1_$1#0 + (byte) init_sprites::toSpritePtr1_return#0 ← (byte) init_sprites::toSpritePtr1_$2#0 + to:init_sprites::toSpritePtr1_@return +init_sprites::toSpritePtr1_@return: scope:[init_sprites] from init_sprites::toSpritePtr1 + (byte*) init_sprites::sprites_ptr#3 ← phi( init_sprites::toSpritePtr1/(byte*) init_sprites::sprites_ptr#4 ) + (byte) init_sprites::ypos#3 ← phi( init_sprites::toSpritePtr1/(byte) init_sprites::ypos#4 ) + (byte) init_sprites::xpos#4 ← phi( init_sprites::toSpritePtr1/(byte) init_sprites::xpos#5 ) + (byte) init_sprites::toSpritePtr1_return#2 ← phi( init_sprites::toSpritePtr1/(byte) init_sprites::toSpritePtr1_return#0 ) + (byte) init_sprites::toSpritePtr1_return#1 ← (byte) init_sprites::toSpritePtr1_return#2 + to:init_sprites::@5 +init_sprites::@5: scope:[init_sprites] from init_sprites::toSpritePtr1_@return + (byte*) init_sprites::sprites_ptr#2 ← phi( init_sprites::toSpritePtr1_@return/(byte*) init_sprites::sprites_ptr#3 ) + (byte) init_sprites::ypos#2 ← phi( init_sprites::toSpritePtr1_@return/(byte) init_sprites::ypos#3 ) + (byte) init_sprites::xpos#3 ← phi( init_sprites::toSpritePtr1_@return/(byte) init_sprites::xpos#4 ) + (byte) init_sprites::toSpritePtr1_return#3 ← phi( init_sprites::toSpritePtr1_@return/(byte) init_sprites::toSpritePtr1_return#1 ) + (byte~) init_sprites::$5 ← (byte) init_sprites::toSpritePtr1_return#3 + (byte) init_sprites::ptr#0 ← (byte~) init_sprites::$5 + (byte) init_sprites::s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:init_sprites::@1 +init_sprites::@1: scope:[init_sprites] from init_sprites::@1 init_sprites::@5 + (byte*) init_sprites::sprites_ptr#1 ← phi( init_sprites::@1/(byte*) init_sprites::sprites_ptr#1 init_sprites::@5/(byte*) init_sprites::sprites_ptr#2 ) + (byte) init_sprites::ptr#2 ← phi( init_sprites::@1/(byte) init_sprites::ptr#1 init_sprites::@5/(byte) init_sprites::ptr#0 ) + (byte) init_sprites::ypos#1 ← phi( init_sprites::@1/(byte) init_sprites::ypos#1 init_sprites::@5/(byte) init_sprites::ypos#2 ) + (byte) init_sprites::xpos#2 ← phi( init_sprites::@1/(byte) init_sprites::xpos#1 init_sprites::@5/(byte) init_sprites::xpos#3 ) + (byte) init_sprites::s#2 ← phi( init_sprites::@1/(byte) init_sprites::s#1 init_sprites::@5/(byte) init_sprites::s#0 ) + (byte~) init_sprites::$6 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) init_sprites::s2#0 ← (byte~) init_sprites::$6 + *((byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 + *((byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::ypos#1 + *((byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (byte) BLACK#0 + *((byte*) init_sprites::sprites_ptr#1 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 + (byte/signed word/word/dword/signed dword~) init_sprites::$7 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) init_sprites::xpos#1 ← (byte/signed word/word/dword/signed dword~) init_sprites::$7 + (byte) init_sprites::ptr#1 ← ++ (byte) init_sprites::ptr#2 + (byte) init_sprites::s#1 ← (byte) init_sprites::s#2 + rangenext(0,3) + (bool~) init_sprites::$8 ← (byte) init_sprites::s#1 != rangelast(0,3) + if((bool~) init_sprites::$8) goto init_sprites::@1 + to:init_sprites::@return +init_sprites::@return: scope:[init_sprites] from init_sprites::@1 + return + to:@return +@6: scope:[] from @4 + (byte*) PLAYFIELD_CHARSET#9 ← phi( @4/(byte*) PLAYFIELD_CHARSET#0 ) + (byte*) PLAYFIELD_SCREEN#11 ← phi( @4/(byte*) PLAYFIELD_SCREEN#0 ) + (byte*) PLAYFIELD_SPRITES#4 ← phi( @4/(byte*) PLAYFIELD_SPRITES#0 ) + (byte) IRQ_RASTER_FIRST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) irq_raster_next#0 ← (byte) IRQ_RASTER_FIRST#0 + (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:@8 +init_irq: scope:[init_irq] from main::@1 + asm { sei } + *((byte*) CIA1_INTERRUPT#0) ← (byte) CIA_INTERRUPT_CLEAR#0 + *((byte*) VIC_CONTROL#0) ← *((byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + *((byte*) RASTER#0) ← (byte) IRQ_RASTER_FIRST#0 + *((byte*) IRQ_ENABLE#0) ← (byte) IRQ_RASTER#0 + (void()*~) init_irq::$0 ← & interrupt(KERNEL_MIN)(void()) irq() + *((void()**) KERNEL_IRQ#0) ← (void()*~) init_irq::$0 + asm { cli } + to:init_irq::@return +init_irq::@return: scope:[init_irq] from init_irq + return + to:@return +irq: scope:[irq] from + (byte) irq_raster_next#7 ← phi( @8/(byte) irq_raster_next#8 ) + (byte) irq_cnt#4 ← phi( @8/(byte) irq_cnt#6 ) + (byte) irq_sprite_ypos#4 ← phi( @8/(byte) irq_sprite_ypos#7 ) + *((byte*) BGCOL#0) ← (byte) WHITE#0 + *((byte*) BORDERCOL#0) ← *((byte*) BGCOL#0) + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) irq_sprite_ypos#4 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#4 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#4 + *((byte*) SPRITES_YPOS#0 + (byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#4 + (byte) irq_cnt#1 ← ++ (byte) irq_cnt#4 + (bool~) irq::$0 ← (byte) irq_cnt#1 == (byte/signed byte/word/signed word/dword/signed dword) 10 + if((bool~) irq::$0) goto irq::@1 + to:irq::@3 +irq::@1: scope:[irq] from irq + (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) irq_raster_next#1 ← (byte) IRQ_RASTER_FIRST#0 + (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:irq::@2 +irq::@3: scope:[irq] from irq + (byte) irq_cnt#8 ← phi( irq/(byte) irq_cnt#1 ) + (byte) irq_sprite_ypos#5 ← phi( irq/(byte) irq_sprite_ypos#4 ) + (byte) irq_raster_next#4 ← phi( irq/(byte) irq_raster_next#7 ) + (byte) irq_raster_next#2 ← (byte) irq_raster_next#4 + (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#5 + (byte/signed byte/word/signed word/dword/signed dword) 21 + to:irq::@2 +irq::@2: scope:[irq] from irq::@1 irq::@3 + (byte) irq_sprite_ypos#8 ← phi( irq::@1/(byte) irq_sprite_ypos#1 irq::@3/(byte) irq_sprite_ypos#2 ) + (byte) irq_cnt#7 ← phi( irq::@1/(byte) irq_cnt#2 irq::@3/(byte) irq_cnt#8 ) + (byte) irq_raster_next#5 ← phi( irq::@1/(byte) irq_raster_next#1 irq::@3/(byte) irq_raster_next#2 ) + *((byte*) RASTER#0) ← (byte) irq_raster_next#5 + *((byte*) IRQ_STATUS#0) ← (byte) IRQ_RASTER#0 + *((byte*) BORDERCOL#0) ← (byte) BLACK#0 + *((byte*) BGCOL#0) ← (byte) BLUE#0 + to:irq::@return +irq::@return: scope:[irq] from irq::@2 + (byte) irq_sprite_ypos#6 ← phi( irq::@2/(byte) irq_sprite_ypos#8 ) + (byte) irq_raster_next#6 ← phi( irq::@2/(byte) irq_raster_next#5 ) + (byte) irq_cnt#5 ← phi( irq::@2/(byte) irq_cnt#7 ) + (byte) irq_cnt#3 ← (byte) irq_cnt#5 + (byte) irq_raster_next#3 ← (byte) irq_raster_next#6 + (byte) irq_sprite_ypos#3 ← (byte) irq_sprite_ypos#6 + return + to:@return +@8: scope:[] from @6 + (byte*) PLAYFIELD_CHARSET#8 ← phi( @6/(byte*) PLAYFIELD_CHARSET#9 ) + (byte) irq_raster_next#8 ← phi( @6/(byte) irq_raster_next#0 ) + (byte*) PLAYFIELD_SCREEN#7 ← phi( @6/(byte*) PLAYFIELD_SCREEN#11 ) + (byte) irq_cnt#6 ← phi( @6/(byte) irq_cnt#0 ) + (byte) irq_sprite_ypos#7 ← phi( @6/(byte) irq_sprite_ypos#0 ) + (byte*) PLAYFIELD_SPRITES#2 ← phi( @6/(byte*) PLAYFIELD_SPRITES#4 ) + kickasm(location (byte*) PLAYFIELD_SPRITES#2) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + }} + call main + to:@9 +@9: scope:[] from @8 + to:@end +@end: scope:[] from @9 + +SYMBOL TABLE SSA +(label) @4 +(label) @6 +(label) @8 +(label) @9 +(label) @begin +(label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte) IRQ_RASTER_FIRST +(byte) IRQ_RASTER_FIRST#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PLAYFIELD_CHARSET +(byte*) PLAYFIELD_CHARSET#0 +(byte*) PLAYFIELD_CHARSET#1 +(byte*) PLAYFIELD_CHARSET#2 +(byte*) PLAYFIELD_CHARSET#3 +(byte*) PLAYFIELD_CHARSET#4 +(byte*) PLAYFIELD_CHARSET#5 +(byte*) PLAYFIELD_CHARSET#6 +(byte*) PLAYFIELD_CHARSET#7 +(byte*) PLAYFIELD_CHARSET#8 +(byte*) PLAYFIELD_CHARSET#9 +(byte*) PLAYFIELD_SCREEN +(byte*) PLAYFIELD_SCREEN#0 +(byte*) PLAYFIELD_SCREEN#1 +(byte*) PLAYFIELD_SCREEN#10 +(byte*) PLAYFIELD_SCREEN#11 +(byte*) PLAYFIELD_SCREEN#12 +(byte*) PLAYFIELD_SCREEN#2 +(byte*) PLAYFIELD_SCREEN#3 +(byte*) PLAYFIELD_SCREEN#4 +(byte*) PLAYFIELD_SCREEN#5 +(byte*) PLAYFIELD_SCREEN#6 +(byte*) PLAYFIELD_SCREEN#7 +(byte*) PLAYFIELD_SCREEN#8 +(byte*) PLAYFIELD_SCREEN#9 +(byte*) PLAYFIELD_SPRITES +(byte*) PLAYFIELD_SPRITES#0 +(byte*) PLAYFIELD_SPRITES#1 +(byte*) PLAYFIELD_SPRITES#10 +(byte*) PLAYFIELD_SPRITES#11 +(byte*) PLAYFIELD_SPRITES#12 +(byte*) PLAYFIELD_SPRITES#2 +(byte*) PLAYFIELD_SPRITES#3 +(byte*) PLAYFIELD_SPRITES#4 +(byte*) PLAYFIELD_SPRITES#5 +(byte*) PLAYFIELD_SPRITES#6 +(byte*) PLAYFIELD_SPRITES#7 +(byte*) PLAYFIELD_SPRITES#8 +(byte*) PLAYFIELD_SPRITES#9 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 +(byte*) RASTER +(byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 +(void()) init_irq() +(void()*~) init_irq::$0 +(label) init_irq::@return +(void()) init_sprites() +(byte~) init_sprites::$1 +(byte*~) init_sprites::$2 +(byte/signed byte/word/signed word/dword/signed dword~) init_sprites::$3 +(byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$4 +(byte~) init_sprites::$5 +(byte~) init_sprites::$6 +(byte/signed word/word/dword/signed dword~) init_sprites::$7 +(bool~) init_sprites::$8 +(label) init_sprites::@1 +(label) init_sprites::@3 +(label) init_sprites::@4 +(label) init_sprites::@5 +(label) init_sprites::@return +(byte) init_sprites::ptr +(byte) init_sprites::ptr#0 +(byte) init_sprites::ptr#1 +(byte) init_sprites::ptr#2 +(byte) init_sprites::s +(byte) init_sprites::s#0 +(byte) init_sprites::s#1 +(byte) init_sprites::s#2 +(byte) init_sprites::s2 +(byte) init_sprites::s2#0 +(byte*) init_sprites::sprites_ptr +(byte*) init_sprites::sprites_ptr#0 +(byte*) init_sprites::sprites_ptr#1 +(byte*) init_sprites::sprites_ptr#2 +(byte*) init_sprites::sprites_ptr#3 +(byte*) init_sprites::sprites_ptr#4 +(label) init_sprites::toD0181 +(word~) init_sprites::toD0181_$0 +(word) init_sprites::toD0181_$0#0 +(word~) init_sprites::toD0181_$1 +(word) init_sprites::toD0181_$1#0 +(word~) init_sprites::toD0181_$2 +(word) init_sprites::toD0181_$2#0 +(byte~) init_sprites::toD0181_$3 +(byte) init_sprites::toD0181_$3#0 +(word~) init_sprites::toD0181_$4 +(word) init_sprites::toD0181_$4#0 +(byte~) init_sprites::toD0181_$5 +(byte) init_sprites::toD0181_$5#0 +(byte~) init_sprites::toD0181_$6 +(byte) init_sprites::toD0181_$6#0 +(byte~) init_sprites::toD0181_$7 +(byte) init_sprites::toD0181_$7#0 +(byte~) init_sprites::toD0181_$8 +(byte) init_sprites::toD0181_$8#0 +(label) init_sprites::toD0181_@return +(byte*) init_sprites::toD0181_gfx +(byte*) init_sprites::toD0181_gfx#0 +(byte*) init_sprites::toD0181_gfx#1 +(byte) init_sprites::toD0181_return +(byte) init_sprites::toD0181_return#0 +(byte) init_sprites::toD0181_return#1 +(byte) init_sprites::toD0181_return#2 +(byte) init_sprites::toD0181_return#3 +(byte*) init_sprites::toD0181_screen +(byte*) init_sprites::toD0181_screen#0 +(byte*) init_sprites::toD0181_screen#1 +(label) init_sprites::toSpritePtr1 +(word~) init_sprites::toSpritePtr1_$0 +(word) init_sprites::toSpritePtr1_$0#0 +(word~) init_sprites::toSpritePtr1_$1 +(word) init_sprites::toSpritePtr1_$1#0 +(byte~) init_sprites::toSpritePtr1_$2 +(byte) init_sprites::toSpritePtr1_$2#0 +(label) init_sprites::toSpritePtr1_@return +(byte) init_sprites::toSpritePtr1_return +(byte) init_sprites::toSpritePtr1_return#0 +(byte) init_sprites::toSpritePtr1_return#1 +(byte) init_sprites::toSpritePtr1_return#2 +(byte) init_sprites::toSpritePtr1_return#3 +(byte*) init_sprites::toSpritePtr1_sprite +(byte*) init_sprites::toSpritePtr1_sprite#0 +(byte*) init_sprites::toSpritePtr1_sprite#1 +(label) init_sprites::vicSelectGfxBank1 +(byte~) init_sprites::vicSelectGfxBank1_$0 +(byte) init_sprites::vicSelectGfxBank1_$0#0 +(label) init_sprites::vicSelectGfxBank1_@1 +(byte*) init_sprites::vicSelectGfxBank1_gfx +(byte*) init_sprites::vicSelectGfxBank1_gfx#0 +(byte*) init_sprites::vicSelectGfxBank1_gfx#1 +(label) init_sprites::vicSelectGfxBank1_toDd001 +(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 +(word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 +(byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 +(byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 +(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 +(byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 +(label) init_sprites::vicSelectGfxBank1_toDd001_@return +(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx +(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 +(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 +(byte) init_sprites::vicSelectGfxBank1_toDd001_return +(byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 +(byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 +(byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 +(byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 +(byte) init_sprites::xpos +(byte) init_sprites::xpos#0 +(byte) init_sprites::xpos#1 +(byte) init_sprites::xpos#2 +(byte) init_sprites::xpos#3 +(byte) init_sprites::xpos#4 +(byte) init_sprites::xpos#5 +(byte) init_sprites::ypos +(byte) init_sprites::ypos#0 +(byte) init_sprites::ypos#1 +(byte) init_sprites::ypos#2 +(byte) init_sprites::ypos#3 +(byte) init_sprites::ypos#4 +interrupt(KERNEL_MIN)(void()) irq() +(bool~) irq::$0 +(label) irq::@1 +(label) irq::@2 +(label) irq::@3 +(label) irq::@return +(byte) irq_cnt +(byte) irq_cnt#0 +(byte) irq_cnt#1 +(byte) irq_cnt#2 +(byte) irq_cnt#3 +(byte) irq_cnt#4 +(byte) irq_cnt#5 +(byte) irq_cnt#6 +(byte) irq_cnt#7 +(byte) irq_cnt#8 +(byte) irq_raster_next +(byte) irq_raster_next#0 +(byte) irq_raster_next#1 +(byte) irq_raster_next#2 +(byte) irq_raster_next#3 +(byte) irq_raster_next#4 +(byte) irq_raster_next#5 +(byte) irq_raster_next#6 +(byte) irq_raster_next#7 +(byte) irq_raster_next#8 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 +(byte) irq_sprite_ypos#1 +(byte) irq_sprite_ypos#2 +(byte) irq_sprite_ypos#3 +(byte) irq_sprite_ypos#4 +(byte) irq_sprite_ypos#5 +(byte) irq_sprite_ypos#6 +(byte) irq_sprite_ypos#7 +(byte) irq_sprite_ypos#8 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return + +Culled Empty Block (label) main::@2 +Culled Empty Block (label) @9 +Successful SSA optimization Pass2CullEmptyBlocks +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#8 +Alias (byte*) init_sprites::vicSelectGfxBank1_gfx#0 = (byte*) init_sprites::vicSelectGfxBank1_gfx#1 (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#0 (byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx#1 +Alias (byte*) PLAYFIELD_SCREEN#1 = (byte*) PLAYFIELD_SCREEN#12 (byte*) PLAYFIELD_SCREEN#10 (byte*) PLAYFIELD_SCREEN#8 (byte*) PLAYFIELD_SCREEN#5 (byte*) PLAYFIELD_SCREEN#2 (byte*) PLAYFIELD_SCREEN#9 (byte*) PLAYFIELD_SCREEN#6 (byte*) PLAYFIELD_SCREEN#3 +Alias (byte*) PLAYFIELD_CHARSET#1 = (byte*) PLAYFIELD_CHARSET#5 (byte*) PLAYFIELD_CHARSET#6 (byte*) PLAYFIELD_CHARSET#4 (byte*) PLAYFIELD_CHARSET#3 (byte*) PLAYFIELD_CHARSET#2 +Alias (byte*) PLAYFIELD_SPRITES#1 = (byte*) PLAYFIELD_SPRITES#10 (byte*) PLAYFIELD_SPRITES#11 (byte*) PLAYFIELD_SPRITES#9 (byte*) PLAYFIELD_SPRITES#8 (byte*) PLAYFIELD_SPRITES#7 (byte*) PLAYFIELD_SPRITES#6 (byte*) PLAYFIELD_SPRITES#5 (byte*) PLAYFIELD_SPRITES#3 +Alias (byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) init_sprites::vicSelectGfxBank1_toDd001_$3#0 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#2 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#1 (byte) init_sprites::vicSelectGfxBank1_toDd001_return#3 (byte) init_sprites::vicSelectGfxBank1_$0#0 +Alias (byte*) init_sprites::toD0181_screen#0 = (byte*) init_sprites::toD0181_screen#1 +Alias (byte*) init_sprites::toD0181_gfx#0 = (byte*) init_sprites::toD0181_gfx#1 +Alias (byte) init_sprites::toD0181_return#0 = (byte) init_sprites::toD0181_$8#0 (byte) init_sprites::toD0181_return#2 (byte) init_sprites::toD0181_return#1 (byte) init_sprites::toD0181_return#3 (byte~) init_sprites::$1 +Alias (byte*) init_sprites::sprites_ptr#0 = (byte*~) init_sprites::$2 (byte*) init_sprites::sprites_ptr#4 (byte*) init_sprites::sprites_ptr#3 (byte*) init_sprites::sprites_ptr#2 +Alias (byte) init_sprites::xpos#0 = (byte/signed word/word/dword/signed dword/signed byte~) init_sprites::$4 (byte) init_sprites::xpos#5 (byte) init_sprites::xpos#4 (byte) init_sprites::xpos#3 +Alias (byte*) init_sprites::toSpritePtr1_sprite#0 = (byte*) init_sprites::toSpritePtr1_sprite#1 +Alias (byte) init_sprites::ypos#0 = (byte) init_sprites::ypos#4 (byte) init_sprites::ypos#3 (byte) init_sprites::ypos#2 +Alias (byte) init_sprites::toSpritePtr1_return#0 = (byte) init_sprites::toSpritePtr1_$2#0 (byte) init_sprites::toSpritePtr1_return#2 (byte) init_sprites::toSpritePtr1_return#1 (byte) init_sprites::toSpritePtr1_return#3 (byte~) init_sprites::$5 (byte) init_sprites::ptr#0 +Alias (byte) init_sprites::s2#0 = (byte~) init_sprites::$6 +Alias (byte) init_sprites::xpos#1 = (byte/signed word/word/dword/signed dword~) init_sprites::$7 +Alias (byte*) PLAYFIELD_SPRITES#0 = (byte*) PLAYFIELD_SPRITES#4 (byte*) PLAYFIELD_SPRITES#2 +Alias (byte*) PLAYFIELD_SCREEN#0 = (byte*) PLAYFIELD_SCREEN#11 (byte*) PLAYFIELD_SCREEN#7 +Alias (byte*) PLAYFIELD_CHARSET#0 = (byte*) PLAYFIELD_CHARSET#9 (byte*) PLAYFIELD_CHARSET#8 +Alias (byte) irq_raster_next#4 = (byte) irq_raster_next#7 +Alias (byte) irq_sprite_ypos#4 = (byte) irq_sprite_ypos#5 +Alias (byte) irq_cnt#1 = (byte) irq_cnt#8 +Alias (byte) irq_cnt#3 = (byte) irq_cnt#5 (byte) irq_cnt#7 +Alias (byte) irq_raster_next#3 = (byte) irq_raster_next#6 (byte) irq_raster_next#5 +Alias (byte) irq_sprite_ypos#3 = (byte) irq_sprite_ypos#6 (byte) irq_sprite_ypos#8 +Alias (byte) irq_sprite_ypos#0 = (byte) irq_sprite_ypos#7 +Alias (byte) irq_cnt#0 = (byte) irq_cnt#6 +Successful SSA optimization Pass2AliasElimination +Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte) irq_raster_next#0 (byte) irq_raster_next#8 +Self Phi Eliminated (byte) init_sprites::ypos#1 +Self Phi Eliminated (byte*) init_sprites::sprites_ptr#1 +Successful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte*) PLAYFIELD_SCREEN#4 (byte*) PLAYFIELD_SCREEN#0 +Redundant Phi (byte*) PLAYFIELD_CHARSET#7 (byte*) PLAYFIELD_CHARSET#0 +Redundant Phi (byte*) PLAYFIELD_SPRITES#12 (byte*) PLAYFIELD_SPRITES#0 +Redundant Phi (byte*) PLAYFIELD_SCREEN#1 (byte*) PLAYFIELD_SCREEN#4 +Redundant Phi (byte*) PLAYFIELD_CHARSET#1 (byte*) PLAYFIELD_CHARSET#7 +Redundant Phi (byte*) PLAYFIELD_SPRITES#1 (byte*) PLAYFIELD_SPRITES#12 +Redundant Phi (byte) init_sprites::ypos#1 (byte) init_sprites::ypos#0 +Redundant Phi (byte*) init_sprites::sprites_ptr#1 (byte*) init_sprites::sprites_ptr#0 +Redundant Phi (byte) irq_sprite_ypos#4 (byte) irq_sprite_ypos#0 +Redundant Phi (byte) irq_cnt#4 (byte) irq_cnt#0 +Redundant Phi (byte) irq_raster_next#4 (byte) irq_raster_next#8 +Redundant Phi (byte) irq_raster_next#8 (byte) irq_raster_next#0 +Successful SSA optimization Pass2RedundantPhiElimination +Simple Condition (bool~) init_sprites::$8 if((byte) init_sprites::s#1!=rangelast(0,3)) goto init_sprites::@1 +Simple Condition (bool~) irq::$0 if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte*) PLAYFIELD_SPRITES#0 = ((byte*))8192 +Constant (const byte*) PLAYFIELD_CHARSET#0 = ((byte*))4096 +Constant (const byte*) PLAYFIELD_SCREEN#0 = ((byte*))1024 +Constant (const byte/signed byte/word/signed word/dword/signed dword) init_sprites::$3 = 14*8 +Constant (const byte) init_sprites::ypos#0 = 50 +Constant (const byte) init_sprites::s#0 = 0 +Constant (const byte) IRQ_RASTER_FIRST#0 = 48 +Constant (const void()*) init_irq::$0 = &irq +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte*) init_sprites::vicSelectGfxBank1_gfx#0 = PLAYFIELD_SCREEN#0 +Constant (const byte*) init_sprites::toD0181_screen#0 = PLAYFIELD_SCREEN#0 +Constant (const byte*) init_sprites::toD0181_gfx#0 = PLAYFIELD_CHARSET#0 +Constant (const byte*) init_sprites::sprites_ptr#0 = PLAYFIELD_SCREEN#0+SPRITE_PTRS#0 +Constant (const byte) init_sprites::xpos#0 = 24+init_sprites::$3 +Constant (const byte*) init_sprites::toSpritePtr1_sprite#0 = PLAYFIELD_SPRITES#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const word) init_sprites::vicSelectGfxBank1_toDd001_$0#0 = ((word))init_sprites::vicSelectGfxBank1_gfx#0 +Constant (const word) init_sprites::toD0181_$0#0 = ((word))init_sprites::toD0181_screen#0 +Constant (const word) init_sprites::toD0181_$4#0 = ((word))init_sprites::toD0181_gfx#0 +Constant (const word) init_sprites::toSpritePtr1_$0#0 = ((word))init_sprites::toSpritePtr1_sprite#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) init_sprites::vicSelectGfxBank1_toDd001_$1#0 = >init_sprites::vicSelectGfxBank1_toDd001_$0#0 +Constant (const word) init_sprites::toD0181_$1#0 = init_sprites::toD0181_$0#0&16383 +Constant (const byte) init_sprites::toD0181_$5#0 = >init_sprites::toD0181_$4#0 +Constant (const word) init_sprites::toSpritePtr1_$1#0 = init_sprites::toSpritePtr1_$0#0>>6 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) init_sprites::vicSelectGfxBank1_toDd001_$2#0 = init_sprites::vicSelectGfxBank1_toDd001_$1#0>>6 +Constant (const word) init_sprites::toD0181_$2#0 = init_sprites::toD0181_$1#0<<2 +Constant (const byte) init_sprites::toD0181_$6#0 = init_sprites::toD0181_$5#0>>2 +Constant (const byte) init_sprites::toSpritePtr1_return#0 = ((byte))init_sprites::toSpritePtr1_$1#0 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 = 3^init_sprites::vicSelectGfxBank1_toDd001_$2#0 +Constant (const byte) init_sprites::toD0181_$3#0 = >init_sprites::toD0181_$2#0 +Constant (const byte) init_sprites::toD0181_$7#0 = init_sprites::toD0181_$6#0&15 +Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) init_sprites::toD0181_return#0 = init_sprites::toD0181_$3#0|init_sprites::toD0181_$7#0 +Successful SSA optimization Pass2ConstantIdentification +Consolidated array index constant in *(SPRITES_YPOS#0+0) +Consolidated array index constant in *(SPRITES_YPOS#0+2) +Consolidated array index constant in *(SPRITES_YPOS#0+4) +Consolidated array index constant in *(SPRITES_YPOS#0+6) +Successful SSA optimization Pass2ConstantAdditionElimination +Successful SSA optimization PassNEliminateUnusedVars +Resolved ranged next value init_sprites::s#1 ← ++ init_sprites::s#2 to ++ +Resolved ranged comparison value if(init_sprites::s#1!=rangelast(0,3)) goto init_sprites::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 +Culled Empty Block (label) @4 +Culled Empty Block (label) init_sprites::vicSelectGfxBank1_toDd001_@return +Culled Empty Block (label) init_sprites::@3 +Culled Empty Block (label) init_sprites::toD0181_@return +Culled Empty Block (label) init_sprites::toSpritePtr1_@return +Culled Empty Block (label) init_sprites::@5 +Successful SSA optimization Pass2CullEmptyBlocks +Inlining constant with var siblings (const byte) init_sprites::s#0 +Inlining constant with var siblings (const byte) init_sprites::xpos#0 +Constant inlined init_sprites::s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined init_sprites::toD0181_gfx#0 = (const byte*) PLAYFIELD_CHARSET#0 +Constant inlined init_sprites::$3 = (byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 +Constant inlined init_sprites::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0 +Constant inlined init_sprites::toD0181_$7#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +Constant inlined init_sprites::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 +Constant inlined init_sprites::toD0181_$6#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined init_sprites::toD0181_$5#0 = >((word))(const byte*) PLAYFIELD_CHARSET#0 +Constant inlined init_sprites::toD0181_$4#0 = ((word))(const byte*) PLAYFIELD_CHARSET#0 +Constant inlined init_sprites::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +Constant inlined init_sprites::toD0181_$2#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined init_sprites::toD0181_$3#0 = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined init_sprites::toD0181_$0#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0 +Constant inlined init_sprites::toD0181_$1#0 = ((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383 +Constant inlined init_sprites::toD0181_screen#0 = (const byte*) PLAYFIELD_SCREEN#0 +Constant inlined init_sprites::toSpritePtr1_$1#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +Constant inlined init_sprites::toSpritePtr1_sprite#0 = (const byte*) PLAYFIELD_SPRITES#0 +Constant inlined init_sprites::toSpritePtr1_$0#0 = ((word))(const byte*) PLAYFIELD_SPRITES#0 +Constant inlined init_sprites::xpos#0 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 +Constant inlined init_irq::$0 = &interrupt(KERNEL_MIN)(void()) irq() +Constant inlined init_sprites::vicSelectGfxBank1_gfx#0 = (const byte*) PLAYFIELD_SCREEN#0 +Successful SSA optimization Pass2ConstantInlining +Simplifying constant plus zero SPRITES_YPOS#0+0 +Added new block during phi lifting init_sprites::@6(between init_sprites::@1 and init_sprites::@1) +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of init_sprites +Adding NOP phi() at start of init_sprites::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of init_sprites::toD0181 +Adding NOP phi() at start of init_sprites::toSpritePtr1 +CALL GRAPH +Calls in [] to main:5 +Calls in [main] to init_sprites:8 init_irq:10 + +Created 4 initial phi equivalence classes +Coalesced [42] init_sprites::s#3 ← init_sprites::s#1 +Coalesced [43] init_sprites::xpos#6 ← init_sprites::xpos#1 +Coalesced [44] init_sprites::ptr#3 ← init_sprites::ptr#1 +Coalesced [55] irq_raster_next#10 ← irq_raster_next#2 +Coalesced [65] irq_raster_next#9 ← irq_raster_next#1 +Coalesced down to 4 phi equivalence classes +Culled Empty Block (label) init_sprites::@6 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@1 +Adding NOP phi() at start of init_sprites +Adding NOP phi() at start of init_sprites::vicSelectGfxBank1_toDd001 +Adding NOP phi() at start of init_sprites::toD0181 +Adding NOP phi() at start of init_sprites::toSpritePtr1 + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() + to:@6 +@6: scope:[] from @begin + [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 + [2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:@8 +@8: scope:[] from @6 + kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + }} + [5] call main + to:@end +@end: scope:[] from @8 + [6] phi() +main: scope:[main] from @8 + [7] phi() + [8] call init_sprites + to:main::@1 +main::@1: scope:[main] from main + [9] phi() + [10] call init_irq + to:main::@return +main::@return: scope:[main] from main::@1 + [11] return + to:@return +init_irq: scope:[init_irq] from main::@1 + asm { sei } + [13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 + [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 + [15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 + [16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 + [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() + asm { cli } + to:init_irq::@return +init_irq::@return: scope:[init_irq] from init_irq + [19] return + to:@return +init_sprites: scope:[init_sprites] from main + [20] phi() + to:init_sprites::vicSelectGfxBank1 +init_sprites::vicSelectGfxBank1: scope:[init_sprites] from init_sprites + [21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + to:init_sprites::vicSelectGfxBank1_toDd001 +init_sprites::vicSelectGfxBank1_toDd001: scope:[init_sprites] from init_sprites::vicSelectGfxBank1 + [22] phi() + to:init_sprites::vicSelectGfxBank1_@1 +init_sprites::vicSelectGfxBank1_@1: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_toDd001 + [23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 + to:init_sprites::toD0181 +init_sprites::toD0181: scope:[init_sprites] from init_sprites::vicSelectGfxBank1_@1 + [24] phi() + to:init_sprites::@4 +init_sprites::@4: scope:[init_sprites] from init_sprites::toD0181 + [25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 + [26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 + [27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) + [29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) + to:init_sprites::toSpritePtr1 +init_sprites::toSpritePtr1: scope:[init_sprites] from init_sprites::@4 + [30] phi() + to:init_sprites::@1 +init_sprites::@1: scope:[init_sprites] from init_sprites::@1 init_sprites::toSpritePtr1 + [31] (byte) init_sprites::ptr#2 ← phi( init_sprites::@1/(byte) init_sprites::ptr#1 init_sprites::toSpritePtr1/(const byte) init_sprites::toSpritePtr1_return#0 ) + [31] (byte) init_sprites::xpos#2 ← phi( init_sprites::@1/(byte) init_sprites::xpos#1 init_sprites::toSpritePtr1/(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 ) + [31] (byte) init_sprites::s#2 ← phi( init_sprites::@1/(byte) init_sprites::s#1 init_sprites::toSpritePtr1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 + [34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0 + [35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 + [36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 + [37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 + [38] (byte) init_sprites::ptr#1 ← ++ (byte) init_sprites::ptr#2 + [39] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 + [40] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 + to:init_sprites::@return +init_sprites::@return: scope:[init_sprites] from init_sprites::@1 + [41] return + to:@return +irq: scope:[irq] from + [42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 + [43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0) + [44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0 + [45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0 + [46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0 + [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0 + [48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 + [49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 + to:irq::@3 +irq::@3: scope:[irq] from irq + [50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + [51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 + to:irq::@2 +irq::@2: scope:[irq] from irq::@1 irq::@3 + [52] (byte) irq_raster_next#3 ← phi( irq::@1/(byte) irq_raster_next#1 irq::@3/(byte) irq_raster_next#2 ) + [53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3 + [54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 + [55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 + [56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 + to:irq::@return +irq::@return: scope:[irq] from irq::@2 + [57] return + to:@return +irq::@1: scope:[irq] from irq + [58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 + [60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + to:irq::@2 + + +VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte) IRQ_RASTER_FIRST +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PLAYFIELD_CHARSET +(byte*) PLAYFIELD_SCREEN +(byte*) PLAYFIELD_SPRITES +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(void()) init_irq() +(void()) init_sprites() +(byte) init_sprites::ptr +(byte) init_sprites::ptr#1 7.333333333333333 +(byte) init_sprites::ptr#2 4.714285714285714 +(byte) init_sprites::s +(byte) init_sprites::s#1 16.5 +(byte) init_sprites::s#2 6.875 +(byte) init_sprites::s2 +(byte) init_sprites::s2#0 16.5 +(byte*) init_sprites::sprites_ptr +(word~) init_sprites::toD0181_$0 +(word~) init_sprites::toD0181_$1 +(word~) init_sprites::toD0181_$2 +(byte~) init_sprites::toD0181_$3 +(word~) init_sprites::toD0181_$4 +(byte~) init_sprites::toD0181_$5 +(byte~) init_sprites::toD0181_$6 +(byte~) init_sprites::toD0181_$7 +(byte~) init_sprites::toD0181_$8 +(byte*) init_sprites::toD0181_gfx +(byte) init_sprites::toD0181_return +(byte*) init_sprites::toD0181_screen +(word~) init_sprites::toSpritePtr1_$0 +(word~) init_sprites::toSpritePtr1_$1 +(byte~) init_sprites::toSpritePtr1_$2 +(byte) init_sprites::toSpritePtr1_return +(byte*) init_sprites::toSpritePtr1_sprite +(byte~) init_sprites::vicSelectGfxBank1_$0 +(byte*) init_sprites::vicSelectGfxBank1_gfx +(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 +(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx +(byte) init_sprites::vicSelectGfxBank1_toDd001_return +(byte) init_sprites::xpos +(byte) init_sprites::xpos#1 5.5 +(byte) init_sprites::xpos#2 5.5 +(byte) init_sprites::ypos +interrupt(KERNEL_MIN)(void()) irq() +(byte) irq_cnt +(byte) irq_cnt#0 0.6666666666666666 +(byte) irq_cnt#1 4.0 +(byte) irq_cnt#2 20.0 +(byte) irq_raster_next +(byte) irq_raster_next#0 0.5 +(byte) irq_raster_next#1 2.0 +(byte) irq_raster_next#2 2.0 +(byte) irq_raster_next#3 6.0 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 1.3333333333333335 +(byte) irq_sprite_ypos#1 20.0 +(byte) irq_sprite_ypos#2 20.0 +(void()) main() + +Initial phi equivalence classes +[ init_sprites::s#2 init_sprites::s#1 ] +[ init_sprites::xpos#2 init_sprites::xpos#1 ] +[ init_sprites::ptr#2 init_sprites::ptr#1 ] +[ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Added variable irq_raster_next#0 to zero page equivalence class [ irq_raster_next#0 ] +Added variable irq_cnt#0 to zero page equivalence class [ irq_cnt#0 ] +Added variable irq_sprite_ypos#0 to zero page equivalence class [ irq_sprite_ypos#0 ] +Added variable init_sprites::s2#0 to zero page equivalence class [ init_sprites::s2#0 ] +Added variable irq_cnt#1 to zero page equivalence class [ irq_cnt#1 ] +Added variable irq_sprite_ypos#2 to zero page equivalence class [ irq_sprite_ypos#2 ] +Added variable irq_cnt#2 to zero page equivalence class [ irq_cnt#2 ] +Added variable irq_sprite_ypos#1 to zero page equivalence class [ irq_sprite_ypos#1 ] +Complete equivalence classes +[ init_sprites::s#2 init_sprites::s#1 ] +[ init_sprites::xpos#2 init_sprites::xpos#1 ] +[ init_sprites::ptr#2 init_sprites::ptr#1 ] +[ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +[ irq_raster_next#0 ] +[ irq_cnt#0 ] +[ irq_sprite_ypos#0 ] +[ init_sprites::s2#0 ] +[ irq_cnt#1 ] +[ irq_sprite_ypos#2 ] +[ irq_cnt#2 ] +[ irq_sprite_ypos#1 ] +Allocated zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] +Allocated zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Allocated zp ZP_BYTE:4 [ init_sprites::ptr#2 init_sprites::ptr#1 ] +Allocated zp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Allocated zp ZP_BYTE:6 [ irq_raster_next#0 ] +Allocated zp ZP_BYTE:7 [ irq_cnt#0 ] +Allocated zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] +Allocated zp ZP_BYTE:9 [ init_sprites::s2#0 ] +Allocated zp ZP_BYTE:10 [ irq_cnt#1 ] +Allocated zp ZP_BYTE:11 [ irq_sprite_ypos#2 ] +Allocated zp ZP_BYTE:12 [ irq_cnt#2 ] +Allocated zp ZP_BYTE:13 [ irq_sprite_ypos#1 ] + +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 + .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d + .label BORDERCOL = $d020 + .label BGCOL = $d021 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 + .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label KERNEL_IRQ = $314 + .const BLACK = 0 + .const WHITE = 1 + .const BLUE = 6 + .label PLAYFIELD_SPRITES = $2000 + .label PLAYFIELD_CHARSET = $1000 + .label PLAYFIELD_SCREEN = $400 + .const IRQ_RASTER_FIRST = $30 + .label irq_raster_next = 6 + .label irq_cnt = 7 + .label irq_sprite_ypos = 8 + .label irq_cnt_1 = $a + .label irq_cnt_2 = $c + .label irq_raster_next_1 = 5 + .label irq_sprite_ypos_1 = $d + .label irq_raster_next_2 = 5 + .label irq_sprite_ypos_2 = $b + .label irq_raster_next_3 = 5 +//SEG2 @begin +bbegin: + jmp b6 +//SEG3 @6 +b6: +//SEG4 [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next +//SEG5 [2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt +//SEG6 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos + jmp b8 +//SEG7 @8 +b8: +//SEG8 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG9 [5] call main +//SEG10 [7] phi from @8 to main [phi:@8->main] +main_from_b8: + jsr main +//SEG11 [6] phi from @8 to @end [phi:@8->@end] +bend_from_b8: + jmp bend +//SEG12 @end +bend: +//SEG13 main +main: { + //SEG14 [8] call init_sprites + //SEG15 [20] phi from main to init_sprites [phi:main->init_sprites] + init_sprites_from_main: + jsr init_sprites + //SEG16 [9] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + jmp b1 + //SEG17 main::@1 + b1: + //SEG18 [10] call init_irq + jsr init_irq + jmp breturn + //SEG19 main::@return + breturn: + //SEG20 [11] return + rts +} +//SEG21 init_irq +init_irq: { + //SEG22 asm { sei } + sei + //SEG23 [13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + //SEG24 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + //SEG25 [15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER_FIRST + sta RASTER + //SEG26 [16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_ENABLE + //SEG27 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG28 asm { cli } + cli + jmp breturn + //SEG29 init_irq::@return + breturn: + //SEG30 [19] return + rts +} +//SEG31 init_sprites +init_sprites: { + .const ypos = $32 + .label sprites_ptr = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + .label s2 = 9 + .label xpos = 3 + .label ptr = 4 + .label s = 2 + jmp vicSelectGfxBank1 + //SEG32 init_sprites::vicSelectGfxBank1 + vicSelectGfxBank1: + //SEG33 [21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + //SEG34 [22] phi from init_sprites::vicSelectGfxBank1 to init_sprites::vicSelectGfxBank1_toDd001 [phi:init_sprites::vicSelectGfxBank1->init_sprites::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + //SEG35 init_sprites::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + //SEG36 init_sprites::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + //SEG37 [23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG38 [24] phi from init_sprites::vicSelectGfxBank1_@1 to init_sprites::toD0181 [phi:init_sprites::vicSelectGfxBank1_@1->init_sprites::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + //SEG39 init_sprites::toD0181 + toD0181: + jmp b4 + //SEG40 init_sprites::@4 + b4: + //SEG41 [25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG42 [26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + lda #$f + sta SPRITES_ENABLE + //SEG43 [27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta SPRITES_MC + //SEG44 [28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_MC + sta SPRITES_EXPAND_Y + //SEG45 [29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_EXPAND_Y + sta SPRITES_EXPAND_X + //SEG46 [30] phi from init_sprites::@4 to init_sprites::toSpritePtr1 [phi:init_sprites::@4->init_sprites::toSpritePtr1] + toSpritePtr1_from_b4: + jmp toSpritePtr1 + //SEG47 init_sprites::toSpritePtr1 + toSpritePtr1: + //SEG48 [31] phi from init_sprites::toSpritePtr1 to init_sprites::@1 [phi:init_sprites::toSpritePtr1->init_sprites::@1] + b1_from_toSpritePtr1: + //SEG49 [31] phi (byte) init_sprites::ptr#2 = (const byte) init_sprites::toSpritePtr1_return#0 [phi:init_sprites::toSpritePtr1->init_sprites::@1#0] -- vbuz1=vbuc1 + lda #toSpritePtr1_return + sta ptr + //SEG50 [31] phi (byte) init_sprites::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:init_sprites::toSpritePtr1->init_sprites::@1#1] -- vbuz1=vbuc1 + lda #$18+$e*8 + sta xpos + //SEG51 [31] phi (byte) init_sprites::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_sprites::toSpritePtr1->init_sprites::@1#2] -- vbuz1=vbuc1 + lda #0 + sta s + jmp b1 + //SEG52 [31] phi from init_sprites::@1 to init_sprites::@1 [phi:init_sprites::@1->init_sprites::@1] + b1_from_b1: + //SEG53 [31] phi (byte) init_sprites::ptr#2 = (byte) init_sprites::ptr#1 [phi:init_sprites::@1->init_sprites::@1#0] -- register_copy + //SEG54 [31] phi (byte) init_sprites::xpos#2 = (byte) init_sprites::xpos#1 [phi:init_sprites::@1->init_sprites::@1#1] -- register_copy + //SEG55 [31] phi (byte) init_sprites::s#2 = (byte) init_sprites::s#1 [phi:init_sprites::@1->init_sprites::@1#2] -- register_copy + jmp b1 + //SEG56 init_sprites::@1 + b1: + //SEG57 [32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + lda s + asl + sta s2 + //SEG58 [33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 -- pbuc1_derefidx_vbuz1=vbuz2 + lda xpos + ldy s2 + sta SPRITES_XPOS,y + //SEG59 [34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0 -- pbuc1_derefidx_vbuz1=vbuc2 + ldy s2 + lda #ypos + sta SPRITES_YPOS,y + //SEG60 [35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuz1=vbuc2 + ldy s + lda #BLACK + sta SPRITES_COLS,y + //SEG61 [36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 -- pbuc1_derefidx_vbuz1=vbuz2 + lda ptr + ldy s + sta sprites_ptr,y + //SEG62 [37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + lda #$18 + clc + adc xpos + sta xpos + //SEG63 [38] (byte) init_sprites::ptr#1 ← ++ (byte) init_sprites::ptr#2 -- vbuz1=_inc_vbuz1 + inc ptr + //SEG64 [39] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 -- vbuz1=_inc_vbuz1 + inc s + //SEG65 [40] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 -- vbuz1_neq_vbuc1_then_la1 + lda s + cmp #4 + bne b1_from_b1 + jmp breturn + //SEG66 init_sprites::@return + breturn: + //SEG67 [41] return + rts +} +//SEG68 irq +irq: { + //SEG69 entry interrupt(KERNEL_MIN) + //SEG70 [42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + lda #WHITE + sta BGCOL + //SEG71 [43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0) -- _deref_pbuc1=_deref_pbuc2 + lda BGCOL + sta BORDERCOL + //SEG72 [44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS + //SEG73 [45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+2 + //SEG74 [46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+4 + //SEG75 [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+6 + //SEG76 [48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz2 + ldy irq_cnt + iny + sty irq_cnt_1 + //SEG77 [49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt_1 + cmp #$a + beq b1 + jmp b3 + //SEG78 irq::@3 + b3: + //SEG79 [50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next_2 + //SEG80 [51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz2_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos_2 + //SEG81 [52] phi from irq::@1 irq::@3 to irq::@2 [phi:irq::@1/irq::@3->irq::@2] + b2_from_b1: + b2_from_b3: + //SEG82 [52] phi (byte) irq_raster_next#3 = (byte) irq_raster_next#1 [phi:irq::@1/irq::@3->irq::@2#0] -- register_copy + jmp b2 + //SEG83 irq::@2 + b2: + //SEG84 [53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3 -- _deref_pbuc1=vbuz1 + lda irq_raster_next_3 + sta RASTER + //SEG85 [54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG86 [55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + //SEG87 [56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + lda #BLUE + sta BGCOL + jmp breturn + //SEG88 irq::@return + breturn: + //SEG89 [57] return - exit interrupt(KERNEL_MIN) + jmp $ea81 + //SEG90 irq::@1 + b1: + //SEG91 [58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt_2 + //SEG92 [59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next_1 + //SEG93 [60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos_1 + jmp b2_from_b1 +} +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ init_sprites::ptr#2 init_sprites::ptr#1 ] +Statement [33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ init_sprites::s2#0 ] +Statement [34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ) always clobbers reg byte a +Statement [36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ) always clobbers reg byte a +Statement [37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ init_sprites::s#2 init_sprites::ptr#2 init_sprites::xpos#1 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::ptr#2 init_sprites::xpos#1 ] ) always clobbers reg byte a +Statement [42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0) [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_cnt#1 ] ( ) always clobbers reg byte y +Statement [49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ypos#0 irq_raster_next#2 ] ( ) always clobbers reg byte a +Statement [51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_raster_next#2 ] ( ) always clobbers reg byte a +Statement [53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3 [ ] ( ) always clobbers reg byte a +Statement [54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( ) always clobbers reg byte a +Statement [55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( ) always clobbers reg byte a +Statement [56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( ) always clobbers reg byte a +Statement [58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( ) always clobbers reg byte a +Statement [60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( ) always clobbers reg byte a +Statement [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( ) always clobbers reg byte a +Statement [2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ ] ( ) always clobbers reg byte a +Statement [13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() [ ] ( main:5::init_irq:10 [ ] ) always clobbers reg byte a +Statement [21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) [ ] ( main:5::init_sprites:8 [ ] ) always clobbers reg byte a +Statement [32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ) always clobbers reg byte a +Statement [33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 init_sprites::s2#0 ] ) always clobbers reg byte a +Statement [34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ) always clobbers reg byte a +Statement [35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ) always clobbers reg byte a +Statement [36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::xpos#2 init_sprites::ptr#2 ] ) always clobbers reg byte a +Statement [37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 [ init_sprites::s#2 init_sprites::ptr#2 init_sprites::xpos#1 ] ( main:5::init_sprites:8 [ init_sprites::s#2 init_sprites::ptr#2 init_sprites::xpos#1 ] ) always clobbers reg byte a +Statement [42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0) [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0 [ irq_raster_next#0 irq_cnt#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 [ irq_raster_next#0 irq_sprite_ypos#0 irq_cnt#1 ] ( ) always clobbers reg byte y +Statement [49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 [ irq_raster_next#0 irq_sprite_ypos#0 ] ( ) always clobbers reg byte a +Statement [50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_sprite_ypos#0 irq_raster_next#2 ] ( ) always clobbers reg byte a +Statement [51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 [ irq_raster_next#2 ] ( ) always clobbers reg byte a +Statement [53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3 [ ] ( ) always clobbers reg byte a +Statement [54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 [ ] ( ) always clobbers reg byte a +Statement [55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 [ ] ( ) always clobbers reg byte a +Statement [56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( ) always clobbers reg byte a +Statement [58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( ) always clobbers reg byte a +Statement [59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 [ irq_raster_next#1 ] ( ) always clobbers reg byte a +Statement [60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 [ irq_raster_next#1 ] ( ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ init_sprites::ptr#2 init_sprites::ptr#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] : zp ZP_BYTE:5 , +Potential registers zp ZP_BYTE:6 [ irq_raster_next#0 ] : zp ZP_BYTE:6 , +Potential registers zp ZP_BYTE:7 [ irq_cnt#0 ] : zp ZP_BYTE:7 , +Potential registers zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] : zp ZP_BYTE:8 , +Potential registers zp ZP_BYTE:9 [ init_sprites::s2#0 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ irq_cnt#1 ] : zp ZP_BYTE:10 , +Potential registers zp ZP_BYTE:11 [ irq_sprite_ypos#2 ] : zp ZP_BYTE:11 , +Potential registers zp ZP_BYTE:12 [ irq_cnt#2 ] : zp ZP_BYTE:12 , +Potential registers zp ZP_BYTE:13 [ irq_sprite_ypos#1 ] : zp ZP_BYTE:13 , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 20: zp ZP_BYTE:11 [ irq_sprite_ypos#2 ] 20: zp ZP_BYTE:12 [ irq_cnt#2 ] 20: zp ZP_BYTE:13 [ irq_sprite_ypos#1 ] 10: zp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] 4: zp ZP_BYTE:10 [ irq_cnt#1 ] 1.33: zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] 0.67: zp ZP_BYTE:7 [ irq_cnt#0 ] 0.5: zp ZP_BYTE:6 [ irq_raster_next#0 ] +Uplift Scope [init_sprites] 23.38: zp ZP_BYTE:2 [ init_sprites::s#2 init_sprites::s#1 ] 16.5: zp ZP_BYTE:9 [ init_sprites::s2#0 ] 12.05: zp ZP_BYTE:4 [ init_sprites::ptr#2 init_sprites::ptr#1 ] 11: zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Uplift Scope [main] +Uplift Scope [init_irq] +Uplift Scope [irq] + +Uplifting [] best 1688 combination zp ZP_BYTE:11 [ irq_sprite_ypos#2 ] zp ZP_BYTE:12 [ irq_cnt#2 ] zp ZP_BYTE:13 [ irq_sprite_ypos#1 ] zp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] zp ZP_BYTE:10 [ irq_cnt#1 ] zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] zp ZP_BYTE:7 [ irq_cnt#0 ] zp ZP_BYTE:6 [ irq_raster_next#0 ] +Uplifting [init_sprites] best 1458 combination reg byte y [ init_sprites::s#2 init_sprites::s#1 ] reg byte x [ init_sprites::s2#0 ] zp ZP_BYTE:4 [ init_sprites::ptr#2 init_sprites::ptr#1 ] zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Uplifting [main] best 1458 combination +Uplifting [init_irq] best 1458 combination +Uplifting [irq] best 1458 combination +Attempting to uplift remaining variables inzp ZP_BYTE:11 [ irq_sprite_ypos#2 ] +Uplifting [] best 1458 combination zp ZP_BYTE:11 [ irq_sprite_ypos#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:12 [ irq_cnt#2 ] +Uplifting [] best 1458 combination zp ZP_BYTE:12 [ irq_cnt#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:13 [ irq_sprite_ypos#1 ] +Uplifting [] best 1458 combination zp ZP_BYTE:13 [ irq_sprite_ypos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:4 [ init_sprites::ptr#2 init_sprites::ptr#1 ] +Uplifting [init_sprites] best 1458 combination zp ZP_BYTE:4 [ init_sprites::ptr#2 init_sprites::ptr#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Uplifting [init_sprites] best 1458 combination zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Uplifting [] best 1458 combination zp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:10 [ irq_cnt#1 ] +Uplifting [] best 1458 combination zp ZP_BYTE:10 [ irq_cnt#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:8 [ irq_sprite_ypos#0 ] +Uplifting [] best 1458 combination zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:7 [ irq_cnt#0 ] +Uplifting [] best 1458 combination zp ZP_BYTE:7 [ irq_cnt#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ irq_raster_next#0 ] +Uplifting [] best 1458 combination zp ZP_BYTE:6 [ irq_raster_next#0 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 ] ] with [ zp ZP_BYTE:6 [ irq_raster_next#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:7 [ irq_cnt#0 ] ] with [ zp ZP_BYTE:10 [ irq_cnt#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:8 [ irq_sprite_ypos#0 ] ] with [ zp ZP_BYTE:11 [ irq_sprite_ypos#2 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 ] ] with [ zp ZP_BYTE:5 [ irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ] ] with [ zp ZP_BYTE:7 [ irq_cnt#0 irq_cnt#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 irq_cnt#0 irq_cnt#1 ] ] with [ zp ZP_BYTE:8 [ irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 irq_cnt#0 irq_cnt#1 irq_sprite_ypos#0 irq_sprite_ypos#2 ] ] with [ zp ZP_BYTE:12 [ irq_cnt#2 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 irq_cnt#0 irq_cnt#1 irq_sprite_ypos#0 irq_sprite_ypos#2 irq_cnt#2 ] ] with [ zp ZP_BYTE:13 [ irq_sprite_ypos#1 ] ] +Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 irq_cnt#0 irq_cnt#1 irq_sprite_ypos#0 irq_sprite_ypos#2 irq_cnt#2 irq_sprite_ypos#1 ] +Allocated (was zp ZP_BYTE:4) zp ZP_BYTE:3 [ init_sprites::ptr#2 init_sprites::ptr#1 ] + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 + .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d + .label BORDERCOL = $d020 + .label BGCOL = $d021 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 + .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label KERNEL_IRQ = $314 + .const BLACK = 0 + .const WHITE = 1 + .const BLUE = 6 + .label PLAYFIELD_SPRITES = $2000 + .label PLAYFIELD_CHARSET = $1000 + .label PLAYFIELD_SCREEN = $400 + .const IRQ_RASTER_FIRST = $30 + .label irq_raster_next = 2 + .label irq_cnt = 2 + .label irq_sprite_ypos = 2 +//SEG2 @begin +bbegin: + jmp b6 +//SEG3 @6 +b6: +//SEG4 [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next +//SEG5 [2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt +//SEG6 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos + jmp b8 +//SEG7 @8 +b8: +//SEG8 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG9 [5] call main +//SEG10 [7] phi from @8 to main [phi:@8->main] +main_from_b8: + jsr main +//SEG11 [6] phi from @8 to @end [phi:@8->@end] +bend_from_b8: + jmp bend +//SEG12 @end +bend: +//SEG13 main +main: { + //SEG14 [8] call init_sprites + //SEG15 [20] phi from main to init_sprites [phi:main->init_sprites] + init_sprites_from_main: + jsr init_sprites + //SEG16 [9] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + jmp b1 + //SEG17 main::@1 + b1: + //SEG18 [10] call init_irq + jsr init_irq + jmp breturn + //SEG19 main::@return + breturn: + //SEG20 [11] return + rts +} +//SEG21 init_irq +init_irq: { + //SEG22 asm { sei } + sei + //SEG23 [13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + //SEG24 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + //SEG25 [15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER_FIRST + sta RASTER + //SEG26 [16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_ENABLE + //SEG27 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG28 asm { cli } + cli + jmp breturn + //SEG29 init_irq::@return + breturn: + //SEG30 [19] return + rts +} +//SEG31 init_sprites +init_sprites: { + .const ypos = $32 + .label sprites_ptr = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + .label xpos = 2 + .label ptr = 3 + jmp vicSelectGfxBank1 + //SEG32 init_sprites::vicSelectGfxBank1 + vicSelectGfxBank1: + //SEG33 [21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + //SEG34 [22] phi from init_sprites::vicSelectGfxBank1 to init_sprites::vicSelectGfxBank1_toDd001 [phi:init_sprites::vicSelectGfxBank1->init_sprites::vicSelectGfxBank1_toDd001] + vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: + jmp vicSelectGfxBank1_toDd001 + //SEG35 init_sprites::vicSelectGfxBank1_toDd001 + vicSelectGfxBank1_toDd001: + jmp vicSelectGfxBank1_b1 + //SEG36 init_sprites::vicSelectGfxBank1_@1 + vicSelectGfxBank1_b1: + //SEG37 [23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG38 [24] phi from init_sprites::vicSelectGfxBank1_@1 to init_sprites::toD0181 [phi:init_sprites::vicSelectGfxBank1_@1->init_sprites::toD0181] + toD0181_from_vicSelectGfxBank1_b1: + jmp toD0181 + //SEG39 init_sprites::toD0181 + toD0181: + jmp b4 + //SEG40 init_sprites::@4 + b4: + //SEG41 [25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG42 [26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + lda #$f + sta SPRITES_ENABLE + //SEG43 [27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta SPRITES_MC + //SEG44 [28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_MC + sta SPRITES_EXPAND_Y + //SEG45 [29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + lda SPRITES_EXPAND_Y + sta SPRITES_EXPAND_X + //SEG46 [30] phi from init_sprites::@4 to init_sprites::toSpritePtr1 [phi:init_sprites::@4->init_sprites::toSpritePtr1] + toSpritePtr1_from_b4: + jmp toSpritePtr1 + //SEG47 init_sprites::toSpritePtr1 + toSpritePtr1: + //SEG48 [31] phi from init_sprites::toSpritePtr1 to init_sprites::@1 [phi:init_sprites::toSpritePtr1->init_sprites::@1] + b1_from_toSpritePtr1: + //SEG49 [31] phi (byte) init_sprites::ptr#2 = (const byte) init_sprites::toSpritePtr1_return#0 [phi:init_sprites::toSpritePtr1->init_sprites::@1#0] -- vbuz1=vbuc1 + lda #toSpritePtr1_return + sta ptr + //SEG50 [31] phi (byte) init_sprites::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:init_sprites::toSpritePtr1->init_sprites::@1#1] -- vbuz1=vbuc1 + lda #$18+$e*8 + sta xpos + //SEG51 [31] phi (byte) init_sprites::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_sprites::toSpritePtr1->init_sprites::@1#2] -- vbuyy=vbuc1 + ldy #0 + jmp b1 + //SEG52 [31] phi from init_sprites::@1 to init_sprites::@1 [phi:init_sprites::@1->init_sprites::@1] + b1_from_b1: + //SEG53 [31] phi (byte) init_sprites::ptr#2 = (byte) init_sprites::ptr#1 [phi:init_sprites::@1->init_sprites::@1#0] -- register_copy + //SEG54 [31] phi (byte) init_sprites::xpos#2 = (byte) init_sprites::xpos#1 [phi:init_sprites::@1->init_sprites::@1#1] -- register_copy + //SEG55 [31] phi (byte) init_sprites::s#2 = (byte) init_sprites::s#1 [phi:init_sprites::@1->init_sprites::@1#2] -- register_copy + jmp b1 + //SEG56 init_sprites::@1 + b1: + //SEG57 [32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + tya + asl + tax + //SEG58 [33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + lda xpos + sta SPRITES_XPOS,x + //SEG59 [34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0 -- pbuc1_derefidx_vbuxx=vbuc2 + lda #ypos + sta SPRITES_YPOS,x + //SEG60 [35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + lda #BLACK + sta SPRITES_COLS,y + //SEG61 [36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 -- pbuc1_derefidx_vbuyy=vbuz1 + lda ptr + sta sprites_ptr,y + //SEG62 [37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + lda #$18 + clc + adc xpos + sta xpos + //SEG63 [38] (byte) init_sprites::ptr#1 ← ++ (byte) init_sprites::ptr#2 -- vbuz1=_inc_vbuz1 + inc ptr + //SEG64 [39] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 -- vbuyy=_inc_vbuyy + iny + //SEG65 [40] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #4 + bne b1_from_b1 + jmp breturn + //SEG66 init_sprites::@return + breturn: + //SEG67 [41] return + rts +} +//SEG68 irq +irq: { + //SEG69 entry interrupt(KERNEL_MIN) + //SEG70 [42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + lda #WHITE + sta BGCOL + //SEG71 [43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0) -- _deref_pbuc1=_deref_pbuc2 + lda BGCOL + sta BORDERCOL + //SEG72 [44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS + //SEG73 [45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+2 + //SEG74 [46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+4 + //SEG75 [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+6 + //SEG76 [48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + inc irq_cnt + //SEG77 [49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt + cmp #$a + beq b1 + jmp b3 + //SEG78 irq::@3 + b3: + //SEG79 [50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG80 [51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + //SEG81 [52] phi from irq::@1 irq::@3 to irq::@2 [phi:irq::@1/irq::@3->irq::@2] + b2_from_b1: + b2_from_b3: + //SEG82 [52] phi (byte) irq_raster_next#3 = (byte) irq_raster_next#1 [phi:irq::@1/irq::@3->irq::@2#0] -- register_copy + jmp b2 + //SEG83 irq::@2 + b2: + //SEG84 [53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3 -- _deref_pbuc1=vbuz1 + lda irq_raster_next + sta RASTER + //SEG85 [54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG86 [55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + //SEG87 [56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + lda #BLUE + sta BGCOL + jmp breturn + //SEG88 irq::@return + breturn: + //SEG89 [57] return - exit interrupt(KERNEL_MIN) + jmp $ea81 + //SEG90 irq::@1 + b1: + //SEG91 [58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt + //SEG92 [59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next + //SEG93 [60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos + jmp b2_from_b1 +} +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b6 +Removing instruction jmp b8 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp breturn +Removing instruction jmp vicSelectGfxBank1 +Removing instruction jmp vicSelectGfxBank1_toDd001 +Removing instruction jmp vicSelectGfxBank1_b1 +Removing instruction jmp toD0181 +Removing instruction jmp b4 +Removing instruction jmp toSpritePtr1 +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda SPRITES_MC +Removing instruction lda SPRITES_EXPAND_Y +Removing instruction lda BGCOL +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b1_from_b1 with b1 +Replacing label b2_from_b1 with b2 +Removing instruction bbegin: +Removing instruction main_from_b8: +Removing instruction bend_from_b8: +Removing instruction b1_from_main: +Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_toDd001: +Removing instruction toD0181_from_vicSelectGfxBank1_b1: +Removing instruction toD0181: +Removing instruction toSpritePtr1_from_b4: +Removing instruction b1_from_toSpritePtr1: +Removing instruction b1_from_b1: +Removing instruction b2_from_b1: +Removing instruction b2_from_b3: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b6: +Removing instruction b8: +Removing instruction bend: +Removing instruction init_sprites_from_main: +Removing instruction b1: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction vicSelectGfxBank1: +Removing instruction vicSelectGfxBank1_b1: +Removing instruction b4: +Removing instruction toSpritePtr1: +Removing instruction breturn: +Removing instruction b3: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Removing instruction jmp b1 +Succesful ASM optimization Pass5NextJumpElimination + +FINAL SYMBOL TABLE +(label) @6 +(label) @8 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE +(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) BORDERCOL +(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) IRQ_RASTER_FIRST +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 48 +(byte*) IRQ_STATUS +(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ +(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PLAYFIELD_CHARSET +(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 4096 +(byte*) PLAYFIELD_SCREEN +(const byte*) PLAYFIELD_SCREEN#0 PLAYFIELD_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) PLAYFIELD_SPRITES +(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 +(byte*) SPRITES_ENABLE +(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 +(byte*) SPRITES_EXPAND_X +(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 +(byte*) SPRITES_EXPAND_Y +(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte*) SPRITES_MC +(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 +(byte*) SPRITES_YPOS +(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) 1016 +(byte) VIC_BMM +(byte*) VIC_CONTROL +(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW +(void()) init_irq() +(label) init_irq::@return +(void()) init_sprites() +(label) init_sprites::@1 +(label) init_sprites::@4 +(label) init_sprites::@return +(byte) init_sprites::ptr +(byte) init_sprites::ptr#1 ptr zp ZP_BYTE:3 7.333333333333333 +(byte) init_sprites::ptr#2 ptr zp ZP_BYTE:3 4.714285714285714 +(byte) init_sprites::s +(byte) init_sprites::s#1 reg byte y 16.5 +(byte) init_sprites::s#2 reg byte y 6.875 +(byte) init_sprites::s2 +(byte) init_sprites::s2#0 reg byte x 16.5 +(byte*) init_sprites::sprites_ptr +(const byte*) init_sprites::sprites_ptr#0 sprites_ptr = (const byte*) PLAYFIELD_SCREEN#0+(const word) SPRITE_PTRS#0 +(label) init_sprites::toD0181 +(word~) init_sprites::toD0181_$0 +(word~) init_sprites::toD0181_$1 +(word~) init_sprites::toD0181_$2 +(byte~) init_sprites::toD0181_$3 +(word~) init_sprites::toD0181_$4 +(byte~) init_sprites::toD0181_$5 +(byte~) init_sprites::toD0181_$6 +(byte~) init_sprites::toD0181_$7 +(byte~) init_sprites::toD0181_$8 +(byte*) init_sprites::toD0181_gfx +(byte) init_sprites::toD0181_return +(const byte) init_sprites::toD0181_return#0 toD0181_return = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +(byte*) init_sprites::toD0181_screen +(label) init_sprites::toSpritePtr1 +(word~) init_sprites::toSpritePtr1_$0 +(word~) init_sprites::toSpritePtr1_$1 +(byte~) init_sprites::toSpritePtr1_$2 +(byte) init_sprites::toSpritePtr1_return +(const byte) init_sprites::toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) init_sprites::toSpritePtr1_sprite +(label) init_sprites::vicSelectGfxBank1 +(byte~) init_sprites::vicSelectGfxBank1_$0 +(label) init_sprites::vicSelectGfxBank1_@1 +(byte*) init_sprites::vicSelectGfxBank1_gfx +(label) init_sprites::vicSelectGfxBank1_toDd001 +(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 +(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx +(byte) init_sprites::vicSelectGfxBank1_toDd001_return +(const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte) init_sprites::xpos +(byte) init_sprites::xpos#1 xpos zp ZP_BYTE:2 5.5 +(byte) init_sprites::xpos#2 xpos zp ZP_BYTE:2 5.5 +(byte) init_sprites::ypos +(const byte) init_sprites::ypos#0 ypos = (byte/signed byte/word/signed word/dword/signed dword) 50 +interrupt(KERNEL_MIN)(void()) irq() +(label) irq::@1 +(label) irq::@2 +(label) irq::@3 +(label) irq::@return +(byte) irq_cnt +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:2 0.6666666666666666 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:2 4.0 +(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:2 20.0 +(byte) irq_raster_next +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:2 0.5 +(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:2 2.0 +(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:2 2.0 +(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:2 6.0 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:2 1.3333333333333335 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:2 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:2 20.0 +(void()) main() +(label) main::@1 +(label) main::@return + +reg byte y [ init_sprites::s#2 init_sprites::s#1 ] +zp ZP_BYTE:2 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 irq_cnt#0 irq_cnt#1 irq_sprite_ypos#0 irq_sprite_ypos#2 irq_cnt#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:3 [ init_sprites::ptr#2 init_sprites::ptr#1 ] +reg byte x [ init_sprites::s2#0 ] + + +FINAL ASSEMBLER +Score: 1200 + +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SPRITE_PTRS = $3f8 + .label SPRITES_XPOS = $d000 + .label SPRITES_YPOS = $d001 + .label RASTER = $d012 + .label SPRITES_ENABLE = $d015 + .label SPRITES_EXPAND_Y = $d017 + .label SPRITES_MC = $d01c + .label SPRITES_EXPAND_X = $d01d + .label BORDERCOL = $d020 + .label BGCOL = $d021 + .label SPRITES_COLS = $d027 + .label VIC_CONTROL = $d011 + .label D018 = $d018 + .label IRQ_STATUS = $d019 + .label IRQ_ENABLE = $d01a + .const IRQ_RASTER = 1 + .label CIA1_INTERRUPT = $dc0d + .const CIA_INTERRUPT_CLEAR = $7f + .label CIA2_PORT_A = $dd00 + .label CIA2_PORT_A_DDR = $dd02 + .label KERNEL_IRQ = $314 + .const BLACK = 0 + .const WHITE = 1 + .const BLUE = 6 + .label PLAYFIELD_SPRITES = $2000 + .label PLAYFIELD_CHARSET = $1000 + .label PLAYFIELD_SCREEN = $400 + .const IRQ_RASTER_FIRST = $30 + .label irq_raster_next = 2 + .label irq_cnt = 2 + .label irq_sprite_ypos = 2 +//SEG2 @begin +//SEG3 @6 +//SEG4 [1] (byte) irq_raster_next#0 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next +//SEG5 [2] (byte) irq_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt +//SEG6 [3] (byte) irq_sprite_ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos +//SEG7 @8 +//SEG8 kickasm(location (const byte*) PLAYFIELD_SPRITES#0) {{ .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) .for(var sy=0;sy<10;sy++) { .for(var sx=0;sx<3;sx++) { .for (var y=0;y<21; y++) { .for (var c=0; c<3; c++) { .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) } } .byte 0 } } }} +//SEG9 [5] call main +//SEG10 [7] phi from @8 to main [phi:@8->main] + jsr main +//SEG11 [6] phi from @8 to @end [phi:@8->@end] +//SEG12 @end +//SEG13 main +main: { + //SEG14 [8] call init_sprites + //SEG15 [20] phi from main to init_sprites [phi:main->init_sprites] + jsr init_sprites + //SEG16 [9] phi from main to main::@1 [phi:main->main::@1] + //SEG17 main::@1 + //SEG18 [10] call init_irq + jsr init_irq + //SEG19 main::@return + //SEG20 [11] return + rts +} +//SEG21 init_irq +init_irq: { + //SEG22 asm { sei } + sei + //SEG23 [13] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0 -- _deref_pbuc1=vbuc2 + lda #CIA_INTERRUPT_CLEAR + sta CIA1_INTERRUPT + //SEG24 [14] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 -- _deref_pbuc1=_deref_pbuc1_band_vbuc2 + lda VIC_CONTROL + and #$7f + sta VIC_CONTROL + //SEG25 [15] *((const byte*) RASTER#0) ← (const byte) IRQ_RASTER_FIRST#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER_FIRST + sta RASTER + //SEG26 [16] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_ENABLE + //SEG27 [17] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG28 asm { cli } + cli + //SEG29 init_irq::@return + //SEG30 [19] return + rts +} +//SEG31 init_sprites +init_sprites: { + .const ypos = $32 + .label sprites_ptr = PLAYFIELD_SCREEN+SPRITE_PTRS + .const toSpritePtr1_return = PLAYFIELD_SPRITES>>6 + .const vicSelectGfxBank1_toDd001_return = 3^(>PLAYFIELD_SCREEN)>>6 + .const toD0181_return = (>(PLAYFIELD_SCREEN&$3fff)<<2)|(>PLAYFIELD_CHARSET)>>2&$f + .label xpos = 2 + .label ptr = 3 + //SEG32 init_sprites::vicSelectGfxBank1 + //SEG33 [21] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2 + lda #3 + sta CIA2_PORT_A_DDR + //SEG34 [22] phi from init_sprites::vicSelectGfxBank1 to init_sprites::vicSelectGfxBank1_toDd001 [phi:init_sprites::vicSelectGfxBank1->init_sprites::vicSelectGfxBank1_toDd001] + //SEG35 init_sprites::vicSelectGfxBank1_toDd001 + //SEG36 init_sprites::vicSelectGfxBank1_@1 + //SEG37 [23] *((const byte*) CIA2_PORT_A#0) ← (const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2 + lda #vicSelectGfxBank1_toDd001_return + sta CIA2_PORT_A + //SEG38 [24] phi from init_sprites::vicSelectGfxBank1_@1 to init_sprites::toD0181 [phi:init_sprites::vicSelectGfxBank1_@1->init_sprites::toD0181] + //SEG39 init_sprites::toD0181 + //SEG40 init_sprites::@4 + //SEG41 [25] *((const byte*) D018#0) ← (const byte) init_sprites::toD0181_return#0 -- _deref_pbuc1=vbuc2 + lda #toD0181_return + sta D018 + //SEG42 [26] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word/dword/signed dword) 15 -- _deref_pbuc1=vbuc2 + lda #$f + sta SPRITES_ENABLE + //SEG43 [27] *((const byte*) SPRITES_MC#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuc1=vbuc2 + lda #0 + sta SPRITES_MC + //SEG44 [28] *((const byte*) SPRITES_EXPAND_Y#0) ← *((const byte*) SPRITES_MC#0) -- _deref_pbuc1=_deref_pbuc2 + sta SPRITES_EXPAND_Y + //SEG45 [29] *((const byte*) SPRITES_EXPAND_X#0) ← *((const byte*) SPRITES_EXPAND_Y#0) -- _deref_pbuc1=_deref_pbuc2 + sta SPRITES_EXPAND_X + //SEG46 [30] phi from init_sprites::@4 to init_sprites::toSpritePtr1 [phi:init_sprites::@4->init_sprites::toSpritePtr1] + //SEG47 init_sprites::toSpritePtr1 + //SEG48 [31] phi from init_sprites::toSpritePtr1 to init_sprites::@1 [phi:init_sprites::toSpritePtr1->init_sprites::@1] + //SEG49 [31] phi (byte) init_sprites::ptr#2 = (const byte) init_sprites::toSpritePtr1_return#0 [phi:init_sprites::toSpritePtr1->init_sprites::@1#0] -- vbuz1=vbuc1 + lda #toSpritePtr1_return + sta ptr + //SEG50 [31] phi (byte) init_sprites::xpos#2 = (byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 14*(byte/signed byte/word/signed word/dword/signed dword) 8 [phi:init_sprites::toSpritePtr1->init_sprites::@1#1] -- vbuz1=vbuc1 + lda #$18+$e*8 + sta xpos + //SEG51 [31] phi (byte) init_sprites::s#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:init_sprites::toSpritePtr1->init_sprites::@1#2] -- vbuyy=vbuc1 + ldy #0 + //SEG52 [31] phi from init_sprites::@1 to init_sprites::@1 [phi:init_sprites::@1->init_sprites::@1] + //SEG53 [31] phi (byte) init_sprites::ptr#2 = (byte) init_sprites::ptr#1 [phi:init_sprites::@1->init_sprites::@1#0] -- register_copy + //SEG54 [31] phi (byte) init_sprites::xpos#2 = (byte) init_sprites::xpos#1 [phi:init_sprites::@1->init_sprites::@1#1] -- register_copy + //SEG55 [31] phi (byte) init_sprites::s#2 = (byte) init_sprites::s#1 [phi:init_sprites::@1->init_sprites::@1#2] -- register_copy + //SEG56 init_sprites::@1 + b1: + //SEG57 [32] (byte) init_sprites::s2#0 ← (byte) init_sprites::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuyy_rol_1 + tya + asl + tax + //SEG58 [33] *((const byte*) SPRITES_XPOS#0 + (byte) init_sprites::s2#0) ← (byte) init_sprites::xpos#2 -- pbuc1_derefidx_vbuxx=vbuz1 + lda xpos + sta SPRITES_XPOS,x + //SEG59 [34] *((const byte*) SPRITES_YPOS#0 + (byte) init_sprites::s2#0) ← (const byte) init_sprites::ypos#0 -- pbuc1_derefidx_vbuxx=vbuc2 + lda #ypos + sta SPRITES_YPOS,x + //SEG60 [35] *((const byte*) SPRITES_COLS#0 + (byte) init_sprites::s#2) ← (const byte) BLACK#0 -- pbuc1_derefidx_vbuyy=vbuc2 + lda #BLACK + sta SPRITES_COLS,y + //SEG61 [36] *((const byte*) init_sprites::sprites_ptr#0 + (byte) init_sprites::s#2) ← (byte) init_sprites::ptr#2 -- pbuc1_derefidx_vbuyy=vbuz1 + lda ptr + sta sprites_ptr,y + //SEG62 [37] (byte) init_sprites::xpos#1 ← (byte) init_sprites::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) 24 -- vbuz1=vbuz1_plus_vbuc1 + lda #$18 + clc + adc xpos + sta xpos + //SEG63 [38] (byte) init_sprites::ptr#1 ← ++ (byte) init_sprites::ptr#2 -- vbuz1=_inc_vbuz1 + inc ptr + //SEG64 [39] (byte) init_sprites::s#1 ← ++ (byte) init_sprites::s#2 -- vbuyy=_inc_vbuyy + iny + //SEG65 [40] if((byte) init_sprites::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto init_sprites::@1 -- vbuyy_neq_vbuc1_then_la1 + cpy #4 + bne b1 + //SEG66 init_sprites::@return + //SEG67 [41] return + rts +} +//SEG68 irq +irq: { + //SEG69 entry interrupt(KERNEL_MIN) + //SEG70 [42] *((const byte*) BGCOL#0) ← (const byte) WHITE#0 -- _deref_pbuc1=vbuc2 + lda #WHITE + sta BGCOL + //SEG71 [43] *((const byte*) BORDERCOL#0) ← *((const byte*) BGCOL#0) -- _deref_pbuc1=_deref_pbuc2 + sta BORDERCOL + //SEG72 [44] *((const byte*) SPRITES_YPOS#0) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS + //SEG73 [45] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+2 + //SEG74 [46] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+4 + //SEG75 [47] *((const byte*) SPRITES_YPOS#0+(byte/signed byte/word/signed word/dword/signed dword) 6) ← (byte) irq_sprite_ypos#0 -- _deref_pbuc1=vbuz1 + lda irq_sprite_ypos + sta SPRITES_YPOS+6 + //SEG76 [48] (byte) irq_cnt#1 ← ++ (byte) irq_cnt#0 -- vbuz1=_inc_vbuz1 + inc irq_cnt + //SEG77 [49] if((byte) irq_cnt#1==(byte/signed byte/word/signed word/dword/signed dword) 10) goto irq::@1 -- vbuz1_eq_vbuc1_then_la1 + lda irq_cnt + cmp #$a + beq b1 + //SEG78 irq::@3 + //SEG79 [50] (byte) irq_raster_next#2 ← (byte) irq_raster_next#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_raster_next + sta irq_raster_next + //SEG80 [51] (byte) irq_sprite_ypos#2 ← (byte) irq_sprite_ypos#0 + (byte/signed byte/word/signed word/dword/signed dword) 21 -- vbuz1=vbuz1_plus_vbuc1 + lda #$15 + clc + adc irq_sprite_ypos + sta irq_sprite_ypos + //SEG81 [52] phi from irq::@1 irq::@3 to irq::@2 [phi:irq::@1/irq::@3->irq::@2] + //SEG82 [52] phi (byte) irq_raster_next#3 = (byte) irq_raster_next#1 [phi:irq::@1/irq::@3->irq::@2#0] -- register_copy + //SEG83 irq::@2 + b2: + //SEG84 [53] *((const byte*) RASTER#0) ← (byte) irq_raster_next#3 -- _deref_pbuc1=vbuz1 + lda irq_raster_next + sta RASTER + //SEG85 [54] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0 -- _deref_pbuc1=vbuc2 + lda #IRQ_RASTER + sta IRQ_STATUS + //SEG86 [55] *((const byte*) BORDERCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BORDERCOL + //SEG87 [56] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 -- _deref_pbuc1=vbuc2 + lda #BLUE + sta BGCOL + //SEG88 irq::@return + //SEG89 [57] return - exit interrupt(KERNEL_MIN) + jmp $ea81 + //SEG90 irq::@1 + b1: + //SEG91 [58] (byte) irq_cnt#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta irq_cnt + //SEG92 [59] (byte) irq_raster_next#1 ← (const byte) IRQ_RASTER_FIRST#0 -- vbuz1=vbuc1 + lda #IRQ_RASTER_FIRST + sta irq_raster_next + //SEG93 [60] (byte) irq_sprite_ypos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 50 -- vbuz1=vbuc1 + lda #$32 + sta irq_sprite_ypos + jmp b2 +} +.pc = PLAYFIELD_SPRITES "Inline" + .var sprites = LoadPicture("nes-playfield.png", List().add($010101, $000000)) + .for(var sy=0;sy<10;sy++) { + .for(var sx=0;sx<3;sx++) { + .for (var y=0;y<21; y++) { + .for (var c=0; c<3; c++) { + .byte sprites.getSinglecolorByte(sx*3+c,sy*21+y) + } + } + .byte 0 + } + } + + diff --git a/src/test/ref/examples/tetris/test-sprites.sym b/src/test/ref/examples/tetris/test-sprites.sym new file mode 100644 index 000000000..7ce77c52b --- /dev/null +++ b/src/test/ref/examples/tetris/test-sprites.sym @@ -0,0 +1,195 @@ +(label) @6 +(label) @8 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE +(const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) BORDERCOL +(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 +(byte*) CIA2_PORT_A_DDR +(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) IRQ_RASTER_FIRST +(const byte) IRQ_RASTER_FIRST#0 IRQ_RASTER_FIRST = (byte/signed byte/word/signed word/dword/signed dword) 48 +(byte*) IRQ_STATUS +(const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ +(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PLAYFIELD_CHARSET +(const byte*) PLAYFIELD_CHARSET#0 PLAYFIELD_CHARSET = ((byte*))(word/signed word/dword/signed dword) 4096 +(byte*) PLAYFIELD_SCREEN +(const byte*) PLAYFIELD_SCREEN#0 PLAYFIELD_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) PLAYFIELD_SPRITES +(const byte*) PLAYFIELD_SPRITES#0 PLAYFIELD_SPRITES = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER +(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(const byte*) SPRITES_COLS#0 SPRITES_COLS = ((byte*))(word/dword/signed dword) 53287 +(byte*) SPRITES_ENABLE +(const byte*) SPRITES_ENABLE#0 SPRITES_ENABLE = ((byte*))(word/dword/signed dword) 53269 +(byte*) SPRITES_EXPAND_X +(const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 +(byte*) SPRITES_EXPAND_Y +(const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte*) SPRITES_MC +(const byte*) SPRITES_MC#0 SPRITES_MC = ((byte*))(word/dword/signed dword) 53276 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 +(byte*) SPRITES_YPOS +(const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(const word) SPRITE_PTRS#0 SPRITE_PTRS = (word/signed word/dword/signed dword) 1016 +(byte) VIC_BMM +(byte*) VIC_CONTROL +(const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW +(void()) init_irq() +(label) init_irq::@return +(void()) init_sprites() +(label) init_sprites::@1 +(label) init_sprites::@4 +(label) init_sprites::@return +(byte) init_sprites::ptr +(byte) init_sprites::ptr#1 ptr zp ZP_BYTE:3 7.333333333333333 +(byte) init_sprites::ptr#2 ptr zp ZP_BYTE:3 4.714285714285714 +(byte) init_sprites::s +(byte) init_sprites::s#1 reg byte y 16.5 +(byte) init_sprites::s#2 reg byte y 6.875 +(byte) init_sprites::s2 +(byte) init_sprites::s2#0 reg byte x 16.5 +(byte*) init_sprites::sprites_ptr +(const byte*) init_sprites::sprites_ptr#0 sprites_ptr = (const byte*) PLAYFIELD_SCREEN#0+(const word) SPRITE_PTRS#0 +(label) init_sprites::toD0181 +(word~) init_sprites::toD0181_$0 +(word~) init_sprites::toD0181_$1 +(word~) init_sprites::toD0181_$2 +(byte~) init_sprites::toD0181_$3 +(word~) init_sprites::toD0181_$4 +(byte~) init_sprites::toD0181_$5 +(byte~) init_sprites::toD0181_$6 +(byte~) init_sprites::toD0181_$7 +(byte~) init_sprites::toD0181_$8 +(byte*) init_sprites::toD0181_gfx +(byte) init_sprites::toD0181_return +(const byte) init_sprites::toD0181_return#0 toD0181_return = >((word))(const byte*) PLAYFIELD_SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) PLAYFIELD_CHARSET#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 +(byte*) init_sprites::toD0181_screen +(label) init_sprites::toSpritePtr1 +(word~) init_sprites::toSpritePtr1_$0 +(word~) init_sprites::toSpritePtr1_$1 +(byte~) init_sprites::toSpritePtr1_$2 +(byte) init_sprites::toSpritePtr1_return +(const byte) init_sprites::toSpritePtr1_return#0 toSpritePtr1_return = ((byte))((word))(const byte*) PLAYFIELD_SPRITES#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) init_sprites::toSpritePtr1_sprite +(label) init_sprites::vicSelectGfxBank1 +(byte~) init_sprites::vicSelectGfxBank1_$0 +(label) init_sprites::vicSelectGfxBank1_@1 +(byte*) init_sprites::vicSelectGfxBank1_gfx +(label) init_sprites::vicSelectGfxBank1_toDd001 +(word~) init_sprites::vicSelectGfxBank1_toDd001_$0 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$1 +(byte~) init_sprites::vicSelectGfxBank1_toDd001_$2 +(byte/word/dword~) init_sprites::vicSelectGfxBank1_toDd001_$3 +(byte*) init_sprites::vicSelectGfxBank1_toDd001_gfx +(byte) init_sprites::vicSelectGfxBank1_toDd001_return +(const byte) init_sprites::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) PLAYFIELD_SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6 +(byte) init_sprites::xpos +(byte) init_sprites::xpos#1 xpos zp ZP_BYTE:2 5.5 +(byte) init_sprites::xpos#2 xpos zp ZP_BYTE:2 5.5 +(byte) init_sprites::ypos +(const byte) init_sprites::ypos#0 ypos = (byte/signed byte/word/signed word/dword/signed dword) 50 +interrupt(KERNEL_MIN)(void()) irq() +(label) irq::@1 +(label) irq::@2 +(label) irq::@3 +(label) irq::@return +(byte) irq_cnt +(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:2 0.6666666666666666 +(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:2 4.0 +(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:2 20.0 +(byte) irq_raster_next +(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:2 0.5 +(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:2 2.0 +(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:2 2.0 +(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:2 6.0 +(byte) irq_sprite_ypos +(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:2 1.3333333333333335 +(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:2 20.0 +(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:2 20.0 +(void()) main() +(label) main::@1 +(label) main::@return + +reg byte y [ init_sprites::s#2 init_sprites::s#1 ] +zp ZP_BYTE:2 [ init_sprites::xpos#2 init_sprites::xpos#1 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 irq_cnt#0 irq_cnt#1 irq_sprite_ypos#0 irq_sprite_ypos#2 irq_cnt#2 irq_sprite_ypos#1 ] +zp ZP_BYTE:3 [ init_sprites::ptr#2 init_sprites::ptr#1 ] +reg byte x [ init_sprites::s2#0 ] diff --git a/src/test/ref/examples/tetris/tetris.asm b/src/test/ref/examples/tetris/tetris.asm index f975c8ba7..2a78869ed 100644 --- a/src/test/ref/examples/tetris/tetris.asm +++ b/src/test/ref/examples/tetris/tetris.asm @@ -3,6 +3,7 @@ .pc = $80d "Program" .label RASTER = $d012 .label BORDERCOL = $d020 + .label BGCOL = $d021 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 @@ -20,6 +21,10 @@ .const KEY_CTRL = $3a .const KEY_SPACE = $3c .const KEY_COMMODORE = $3d + .const KEY_MODIFIER_LSHIFT = 1 + .const KEY_MODIFIER_RSHIFT = 2 + .const KEY_MODIFIER_CTRL = 4 + .const KEY_MODIFIER_COMMODORE = 8 .label SID_VOICE3_FREQ = $d40e .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 @@ -641,7 +646,7 @@ keyboard_event_scan: { sta row_scan ldy row cmp keyboard_scan_values,y - bne b2 + bne b6 lda #8 clc adc keycode @@ -655,20 +660,40 @@ keyboard_event_scan: { sta keyboard_event_pressed.keycode jsr keyboard_event_pressed cmp #0 + beq b2 + ldx #0|KEY_MODIFIER_LSHIFT + jmp b9 + b2: + ldx #0 + b9: lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed cmp #0 + beq b10 + txa + ora #KEY_MODIFIER_RSHIFT + tax + b10: lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed cmp #0 + beq b11 + txa + ora #KEY_MODIFIER_CTRL + tax + b11: lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed cmp #0 + beq breturn + txa + ora #KEY_MODIFIER_COMMODORE + breturn: rts - b2: + b6: ldx #0 b4: lda row_scan @@ -755,7 +780,9 @@ render_init: { .label li = 5 .label line = 5 .label l = 2 - ldx #$a0 + lda #BLACK + sta BGCOL + ldx #$d0 lda #SCREEN diff --git a/src/test/ref/examples/tetris/tetris.cfg b/src/test/ref/examples/tetris/tetris.cfg index 744d28918..af29c112a 100644 --- a/src/test/ref/examples/tetris/tetris.cfg +++ b/src/test/ref/examples/tetris/tetris.cfg @@ -1,20 +1,20 @@ @begin: scope:[] from [0] phi() - to:@22 -@22: scope:[] from @begin + to:@23 +@23: scope:[] from @begin kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} - to:@25 -@25: scope:[] from @22 + to:@26 +@26: scope:[] from @23 [2] phi() [3] call main to:@end -@end: scope:[] from @25 +@end: scope:[] from @26 [4] phi() -main: scope:[main] from @25 +main: scope:[main] from @26 [5] phi() [6] call sid_rnd_init to:main::@21 @@ -565,7 +565,7 @@ keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan: [264] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [265] phi() + [265] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [266] call keyboard_event_pressed [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 @@ -574,10 +574,10 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan: [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [270] phi() + [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [271] phi() + [271] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) [272] call keyboard_event_pressed [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 @@ -586,10 +586,10 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan: [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [276] phi() + [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [277] phi() + [277] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) [278] call keyboard_event_pressed [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 @@ -598,7 +598,7 @@ keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan: [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [282] phi() + [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 [283] return @@ -665,7 +665,7 @@ tables_init::@return: scope:[tables_init] from tables_init::@2 [314] return to:@return render_init: scope:[render_init] from main::@21 - [315] phi() + [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [316] call fill to:render_init::@7 render_init::@7: scope:[render_init] from render_init @@ -701,7 +701,7 @@ render_init::@return: scope:[render_init] from render_init::@5 [334] return to:@return fill: scope:[fill] from render_init render_init::@7 - [335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 160 render_init::@7/(const byte) BLACK#0 ) + [335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 208 render_init::@7/(const byte) BLACK#0 ) [335] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 diff --git a/src/test/ref/examples/tetris/tetris.log b/src/test/ref/examples/tetris/tetris.log index 888602bc5..e33d85ed8 100644 --- a/src/test/ref/examples/tetris/tetris.log +++ b/src/test/ref/examples/tetris/tetris.log @@ -6,17 +6,86 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 - to:@4 + to:@5 fill: scope:[fill] from render_init render_init::@7 (byte) fill::val#3 ← phi( render_init/(byte) fill::val#0 render_init::@7/(byte) fill::val#1 ) (word) fill::size#2 ← phi( render_init/(word) fill::size#0 render_init::@7/(word) fill::size#1 ) @@ -37,19 +106,75 @@ fill::@1: scope:[fill] from fill fill::@1 fill::@return: scope:[fill] from fill::@1 return to:@return -@4: scope:[] from @begin +@5: scope:[] from @begin + (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) KEY_4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 (byte) KEY_Z#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) KEY_S#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) KEY_E#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) KEY_5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) KEY_R#0 ← (byte/signed byte/word/signed word/dword/signed dword) 17 + (byte) KEY_D#0 ← (byte/signed byte/word/signed word/dword/signed dword) 18 + (byte) KEY_6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 19 + (byte) KEY_C#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 + (byte) KEY_F#0 ← (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) KEY_T#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 (byte) KEY_X#0 ← (byte/signed byte/word/signed word/dword/signed dword) 23 + (byte) KEY_7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) KEY_Y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 25 + (byte) KEY_G#0 ← (byte/signed byte/word/signed word/dword/signed dword) 26 + (byte) KEY_8#0 ← (byte/signed byte/word/signed word/dword/signed dword) 27 + (byte) KEY_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 28 + (byte) KEY_H#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 + (byte) KEY_U#0 ← (byte/signed byte/word/signed word/dword/signed dword) 30 + (byte) KEY_V#0 ← (byte/signed byte/word/signed word/dword/signed dword) 31 + (byte) KEY_9#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) KEY_I#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 + (byte) KEY_J#0 ← (byte/signed byte/word/signed word/dword/signed dword) 34 + (byte) KEY_0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 35 + (byte) KEY_M#0 ← (byte/signed byte/word/signed word/dword/signed dword) 36 + (byte) KEY_K#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 + (byte) KEY_O#0 ← (byte/signed byte/word/signed word/dword/signed dword) 38 + (byte) KEY_N#0 ← (byte/signed byte/word/signed word/dword/signed dword) 39 + (byte) KEY_PLUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) KEY_P#0 ← (byte/signed byte/word/signed word/dword/signed dword) 41 + (byte) KEY_L#0 ← (byte/signed byte/word/signed word/dword/signed dword) 42 + (byte) KEY_MINUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 43 (byte) KEY_DOT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 44 + (byte) KEY_COLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 45 + (byte) KEY_AT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 46 (byte) KEY_COMMA#0 ← (byte/signed byte/word/signed word/dword/signed dword) 47 + (byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 (byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52 + (byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 57 (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58 + (byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 + (byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62 + (byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 63 + (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@8 + to:@9 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1 (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_event_scan::@1/(byte) keyboard_matrix_read::rowid#0 ) *((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1) @@ -62,7 +187,7 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3 return to:@return -@8: scope:[] from @4 +@9: scope:[] from @5 (byte[8]) keyboard_events#0 ← { fill( 8, 0) } (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -70,8 +195,10 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri (byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 + (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } - to:@11 + to:@12 keyboard_event_scan: scope:[keyboard_event_scan] from main::@9 (byte) keyboard_events_size#54 ← phi( main::@9/(byte) keyboard_events_size#26 ) (byte) keyboard_event_scan::keycode#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -327,14 +454,23 @@ keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get (byte) keyboard_events_size#5 ← (byte) keyboard_events_size#16 return to:@return -@11: scope:[] from @8 - (byte) keyboard_modifiers#45 ← phi( @8/(byte) keyboard_modifiers#0 ) - (byte) keyboard_events_size#57 ← phi( @8/(byte) keyboard_events_size#0 ) +@12: scope:[] from @9 + (byte) keyboard_modifiers#45 ← phi( @9/(byte) keyboard_modifiers#0 ) + (byte) keyboard_events_size#57 ← phi( @9/(byte) keyboard_events_size#0 ) (word*) SID_VOICE3_FREQ#0 ← ((word*)) (word/dword/signed dword) 54286 + (byte*) SID_VOICE3_FREQ_LOW#0 ← ((byte*)) (word/dword/signed dword) 54286 + (byte*) SID_VOICE3_FREQ_HIGH#0 ← ((byte*)) (word/dword/signed dword) 54287 (byte*) SID_VOICE3_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 54290 (byte) SID_CONTROL_NOISE#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) SID_CONTROL_PULSE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) SID_CONTROL_SAWTOOTH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) SID_CONTROL_TRIANGLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) SID_CONTROL_TEST#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) SID_CONTROL_RING#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) SID_CONTROL_SYNC#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) SID_CONTROL_GATE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) SID_VOICE3_OSC#0 ← ((byte*)) (word/dword/signed dword) 54299 - to:@13 + to:@14 sid_rnd_init: scope:[sid_rnd_init] from main *((word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 *((byte*) SID_VOICE3_CONTROL#0) ← (byte) SID_CONTROL_NOISE#0 @@ -350,9 +486,9 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (byte) sid_rnd::return#1 ← (byte) sid_rnd::return#3 return to:@return -@13: scope:[] from @11 - (byte) keyboard_modifiers#44 ← phi( @11/(byte) keyboard_modifiers#45 ) - (byte) keyboard_events_size#53 ← phi( @11/(byte) keyboard_events_size#57 ) +@14: scope:[] from @12 + (byte) keyboard_modifiers#44 ← phi( @12/(byte) keyboard_modifiers#45 ) + (byte) keyboard_events_size#53 ← phi( @12/(byte) keyboard_events_size#57 ) (byte/signed byte/word/signed word/dword/signed dword~) $1 ← (byte/signed byte/word/signed word/dword/signed dword) 4 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed word/word/dword/signed dword/signed byte~) $2 ← (byte/signed byte/word/signed word/dword/signed dword~) $1 * (byte/signed byte/word/signed word/dword/signed dword) 4 (byte[$2]) PIECE_T#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } @@ -399,18 +535,18 @@ sid_rnd::@return: scope:[sid_rnd] from sid_rnd (byte) current_movedown_slow#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 (byte) current_movedown_fast#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) current_movedown_counter#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@17 -main: scope:[main] from @25 - (byte) current_movedown_counter#46 ← phi( @25/(byte) current_movedown_counter#20 ) - (byte) keyboard_modifiers#52 ← phi( @25/(byte) keyboard_modifiers#25 ) - (byte) keyboard_events_size#70 ← phi( @25/(byte) keyboard_events_size#28 ) - (byte) current_piece_color#52 ← phi( @25/(byte) current_piece_color#26 ) - (byte) current_ypos#60 ← phi( @25/(byte) current_ypos#39 ) - (byte) current_xpos#80 ← phi( @25/(byte) current_xpos#47 ) - (byte*) current_piece_gfx#67 ← phi( @25/(byte*) current_piece_gfx#36 ) - (byte) current_orientation#62 ← phi( @25/(byte) current_orientation#40 ) - (byte*) current_piece#54 ← phi( @25/(byte*) current_piece#29 ) - (byte*) SCREEN#3 ← phi( @25/(byte*) SCREEN#4 ) + to:@18 +main: scope:[main] from @26 + (byte) current_movedown_counter#46 ← phi( @26/(byte) current_movedown_counter#20 ) + (byte) keyboard_modifiers#52 ← phi( @26/(byte) keyboard_modifiers#25 ) + (byte) keyboard_events_size#70 ← phi( @26/(byte) keyboard_events_size#28 ) + (byte) current_piece_color#52 ← phi( @26/(byte) current_piece_color#26 ) + (byte) current_ypos#60 ← phi( @26/(byte) current_ypos#39 ) + (byte) current_xpos#80 ← phi( @26/(byte) current_xpos#47 ) + (byte*) current_piece_gfx#67 ← phi( @26/(byte*) current_piece_gfx#36 ) + (byte) current_orientation#62 ← phi( @26/(byte) current_orientation#40 ) + (byte*) current_piece#54 ← phi( @26/(byte*) current_piece#29 ) + (byte*) SCREEN#3 ← phi( @26/(byte*) SCREEN#4 ) call sid_rnd_init to:main::@21 main::@21: scope:[main] from main @@ -1165,22 +1301,22 @@ play_move_rotate::@11: scope:[play_move_rotate] from play_move_rotate::@14 (byte*) current_piece_gfx#8 ← (byte*~) play_move_rotate::$9 (byte) play_move_rotate::return#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:play_move_rotate::@return -@17: scope:[] from @13 - (byte) current_movedown_counter#33 ← phi( @13/(byte) current_movedown_counter#0 ) - (byte) keyboard_modifiers#38 ← phi( @13/(byte) keyboard_modifiers#44 ) - (byte) keyboard_events_size#44 ← phi( @13/(byte) keyboard_events_size#53 ) - (byte) current_piece_color#49 ← phi( @13/(byte) current_piece_color#0 ) - (byte) current_ypos#59 ← phi( @13/(byte) current_ypos#0 ) - (byte) current_xpos#77 ← phi( @13/(byte) current_xpos#0 ) - (byte*) current_piece_gfx#63 ← phi( @13/(byte*) current_piece_gfx#0 ) - (byte) current_orientation#61 ← phi( @13/(byte) current_orientation#0 ) - (byte*) current_piece#53 ← phi( @13/(byte*) current_piece#0 ) +@18: scope:[] from @14 + (byte) current_movedown_counter#33 ← phi( @14/(byte) current_movedown_counter#0 ) + (byte) keyboard_modifiers#38 ← phi( @14/(byte) keyboard_modifiers#44 ) + (byte) keyboard_events_size#44 ← phi( @14/(byte) keyboard_events_size#53 ) + (byte) current_piece_color#49 ← phi( @14/(byte) current_piece_color#0 ) + (byte) current_ypos#59 ← phi( @14/(byte) current_ypos#0 ) + (byte) current_xpos#77 ← phi( @14/(byte) current_xpos#0 ) + (byte*) current_piece_gfx#63 ← phi( @14/(byte*) current_piece_gfx#0 ) + (byte) current_orientation#61 ← phi( @14/(byte) current_orientation#0 ) + (byte*) current_piece#53 ← phi( @14/(byte*) current_piece#0 ) (byte) COLLISION_NONE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) COLLISION_PLAYFIELD#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) COLLISION_BOTTOM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) COLLISION_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 - to:@22 + to:@23 collision: scope:[collision] from play_move_down::@12 play_move_leftright::@1 play_move_leftright::@7 play_move_rotate::@4 (byte) collision::xpos#5 ← phi( play_move_down::@12/(byte) collision::xpos#0 play_move_leftright::@1/(byte) collision::xpos#1 play_move_leftright::@7/(byte) collision::xpos#2 play_move_rotate::@4/(byte) collision::xpos#3 ) (byte) collision::ypos#4 ← phi( play_move_down::@12/(byte) collision::ypos#0 play_move_leftright::@1/(byte) collision::ypos#1 play_move_leftright::@7/(byte) collision::ypos#2 play_move_rotate::@4/(byte) collision::ypos#3 ) @@ -1562,16 +1698,16 @@ tables_init::@2: scope:[tables_init] from tables_init::@1 tables_init::@return: scope:[tables_init] from tables_init::@2 return to:@return -@22: scope:[] from @17 - (byte) current_movedown_counter#26 ← phi( @17/(byte) current_movedown_counter#33 ) - (byte) keyboard_modifiers#32 ← phi( @17/(byte) keyboard_modifiers#38 ) - (byte) keyboard_events_size#35 ← phi( @17/(byte) keyboard_events_size#44 ) - (byte) current_piece_color#37 ← phi( @17/(byte) current_piece_color#49 ) - (byte) current_ypos#50 ← phi( @17/(byte) current_ypos#59 ) - (byte) current_xpos#65 ← phi( @17/(byte) current_xpos#77 ) - (byte*) current_piece_gfx#52 ← phi( @17/(byte*) current_piece_gfx#63 ) - (byte) current_orientation#50 ← phi( @17/(byte) current_orientation#61 ) - (byte*) current_piece#41 ← phi( @17/(byte*) current_piece#53 ) +@23: scope:[] from @18 + (byte) current_movedown_counter#26 ← phi( @18/(byte) current_movedown_counter#33 ) + (byte) keyboard_modifiers#32 ← phi( @18/(byte) keyboard_modifiers#38 ) + (byte) keyboard_events_size#35 ← phi( @18/(byte) keyboard_events_size#44 ) + (byte) current_piece_color#37 ← phi( @18/(byte) current_piece_color#49 ) + (byte) current_ypos#50 ← phi( @18/(byte) current_ypos#59 ) + (byte) current_xpos#65 ← phi( @18/(byte) current_xpos#77 ) + (byte*) current_piece_gfx#52 ← phi( @18/(byte*) current_piece_gfx#63 ) + (byte) current_orientation#50 ← phi( @18/(byte) current_orientation#61 ) + (byte*) current_piece#41 ← phi( @18/(byte*) current_piece#53 ) (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 kickasm(location (byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) @@ -1581,12 +1717,13 @@ tables_init::@return: scope:[tables_init] from tables_init::@2 }} (byte/signed word/word/dword/signed dword~) $24 ← (byte) PLAYFIELD_LINES#0 + (byte/signed byte/word/signed word/dword/signed dword) 3 (byte*[$24]) screen_lines#0 ← { fill( $24, 0) } - to:@25 + to:@26 render_init: scope:[render_init] from main::@21 (byte*) SCREEN#1 ← phi( main::@21/(byte*) SCREEN#2 ) + *((byte*) BGCOL#0) ← (byte) BLACK#0 (byte*) fill::start#0 ← (byte*) SCREEN#1 (word) fill::size#0 ← (word/signed word/dword/signed dword) 1000 - (byte) fill::val#0 ← (byte/word/signed word/dword/signed dword) 160 + (byte) fill::val#0 ← (byte/word/signed word/dword/signed dword) 208 call fill to:render_init::@7 render_init::@7: scope:[render_init] from render_init @@ -1796,29 +1933,29 @@ render_current::@8: scope:[render_current] from render_current::@7 render_current::@return: scope:[render_current] from render_current::@2 return to:@return -@25: scope:[] from @22 - (byte*) SCREEN#4 ← phi( @22/(byte*) SCREEN#0 ) - (byte) current_movedown_counter#20 ← phi( @22/(byte) current_movedown_counter#26 ) - (byte) keyboard_modifiers#25 ← phi( @22/(byte) keyboard_modifiers#32 ) - (byte) keyboard_events_size#28 ← phi( @22/(byte) keyboard_events_size#35 ) - (byte) current_piece_color#26 ← phi( @22/(byte) current_piece_color#37 ) - (byte) current_ypos#39 ← phi( @22/(byte) current_ypos#50 ) - (byte) current_xpos#47 ← phi( @22/(byte) current_xpos#65 ) - (byte*) current_piece_gfx#36 ← phi( @22/(byte*) current_piece_gfx#52 ) - (byte) current_orientation#40 ← phi( @22/(byte) current_orientation#50 ) - (byte*) current_piece#29 ← phi( @22/(byte*) current_piece#41 ) +@26: scope:[] from @23 + (byte*) SCREEN#4 ← phi( @23/(byte*) SCREEN#0 ) + (byte) current_movedown_counter#20 ← phi( @23/(byte) current_movedown_counter#26 ) + (byte) keyboard_modifiers#25 ← phi( @23/(byte) keyboard_modifiers#32 ) + (byte) keyboard_events_size#28 ← phi( @23/(byte) keyboard_events_size#35 ) + (byte) current_piece_color#26 ← phi( @23/(byte) current_piece_color#37 ) + (byte) current_ypos#39 ← phi( @23/(byte) current_ypos#50 ) + (byte) current_xpos#47 ← phi( @23/(byte) current_xpos#65 ) + (byte*) current_piece_gfx#36 ← phi( @23/(byte*) current_piece_gfx#52 ) + (byte) current_orientation#40 ← phi( @23/(byte) current_orientation#50 ) + (byte*) current_piece#29 ← phi( @23/(byte*) current_piece#41 ) call main - to:@26 -@26: scope:[] from @25 - (byte) current_movedown_counter#13 ← phi( @25/(byte) current_movedown_counter#2 ) - (byte) keyboard_modifiers#17 ← phi( @25/(byte) keyboard_modifiers#8 ) - (byte) keyboard_events_size#20 ← phi( @25/(byte) keyboard_events_size#8 ) - (byte) current_piece_color#17 ← phi( @25/(byte) current_piece_color#3 ) - (byte) current_ypos#23 ← phi( @25/(byte) current_ypos#3 ) - (byte) current_xpos#29 ← phi( @25/(byte) current_xpos#4 ) - (byte*) current_piece_gfx#22 ← phi( @25/(byte*) current_piece_gfx#4 ) - (byte) current_orientation#25 ← phi( @25/(byte) current_orientation#4 ) - (byte*) current_piece#17 ← phi( @25/(byte*) current_piece#3 ) + to:@27 +@27: scope:[] from @26 + (byte) current_movedown_counter#13 ← phi( @26/(byte) current_movedown_counter#2 ) + (byte) keyboard_modifiers#17 ← phi( @26/(byte) keyboard_modifiers#8 ) + (byte) keyboard_events_size#20 ← phi( @26/(byte) keyboard_events_size#8 ) + (byte) current_piece_color#17 ← phi( @26/(byte) current_piece_color#3 ) + (byte) current_ypos#23 ← phi( @26/(byte) current_ypos#3 ) + (byte) current_xpos#29 ← phi( @26/(byte) current_xpos#4 ) + (byte*) current_piece_gfx#22 ← phi( @26/(byte*) current_piece_gfx#4 ) + (byte) current_orientation#25 ← phi( @26/(byte) current_orientation#4 ) + (byte*) current_piece#17 ← phi( @26/(byte*) current_piece#3 ) (byte*) current_piece#8 ← (byte*) current_piece#17 (byte) current_orientation#11 ← (byte) current_orientation#25 (byte*) current_piece_gfx#11 ← (byte*) current_piece_gfx#22 @@ -1829,9 +1966,10 @@ render_current::@return: scope:[render_current] from render_current::@2 (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#17 (byte) current_movedown_counter#6 ← (byte) current_movedown_counter#13 to:@end -@end: scope:[] from @26 +@end: scope:[] from @27 SYMBOL TABLE SSA +(byte~) $0 (byte/signed byte/word/signed word/dword/signed dword~) $1 (byte/signed word/word/dword/signed dword/signed byte~) $10 (byte/signed byte/word/signed word/dword/signed dword~) $11 @@ -1856,26 +1994,60 @@ SYMBOL TABLE SSA (byte/signed byte/word/signed word/dword/signed dword~) $7 (byte/signed word/word/dword/signed dword/signed byte~) $8 (byte/signed byte/word/signed word/dword/signed dword~) $9 -(label) @11 -(label) @13 -(label) @17 -(label) @22 -(label) @25 +(label) @12 +(label) @14 +(label) @18 +(label) @23 (label) @26 -(label) @4 -(label) @8 +(label) @27 +(label) @5 +(label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte) BLACK (byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 (byte*) CHARSET (byte*) CHARSET#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 (byte*) CIA1_PORT_B (byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 (byte) COLLISION_BOTTOM (byte) COLLISION_BOTTOM#0 (byte) COLLISION_LEFT @@ -1888,20 +2060,122 @@ SYMBOL TABLE SSA (byte) COLLISION_RIGHT#0 (byte*) COLS (byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 (byte) DARK_GREY (byte) DARK_GREY#0 (byte) GREEN (byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte) KEY_0 +(byte) KEY_0#0 +(byte) KEY_1 +(byte) KEY_1#0 +(byte) KEY_2 +(byte) KEY_2#0 +(byte) KEY_3 +(byte) KEY_3#0 +(byte) KEY_4 +(byte) KEY_4#0 +(byte) KEY_5 +(byte) KEY_5#0 +(byte) KEY_6 +(byte) KEY_6#0 +(byte) KEY_7 +(byte) KEY_7#0 +(byte) KEY_8 +(byte) KEY_8#0 +(byte) KEY_9 +(byte) KEY_9#0 +(byte) KEY_A +(byte) KEY_A#0 +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_LEFT#0 +(byte) KEY_ARROW_UP +(byte) KEY_ARROW_UP#0 +(byte) KEY_ASTERISK +(byte) KEY_ASTERISK#0 +(byte) KEY_AT +(byte) KEY_AT#0 +(byte) KEY_B +(byte) KEY_B#0 +(byte) KEY_C +(byte) KEY_C#0 +(byte) KEY_COLON +(byte) KEY_COLON#0 (byte) KEY_COMMA (byte) KEY_COMMA#0 (byte) KEY_COMMODORE (byte) KEY_COMMODORE#0 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_DOWN#0 +(byte) KEY_CRSR_RIGHT +(byte) KEY_CRSR_RIGHT#0 (byte) KEY_CTRL (byte) KEY_CTRL#0 +(byte) KEY_D +(byte) KEY_D#0 +(byte) KEY_DEL +(byte) KEY_DEL#0 (byte) KEY_DOT (byte) KEY_DOT#0 +(byte) KEY_E +(byte) KEY_E#0 +(byte) KEY_EQUALS +(byte) KEY_EQUALS#0 +(byte) KEY_F +(byte) KEY_F#0 +(byte) KEY_F1 +(byte) KEY_F1#0 +(byte) KEY_F3 +(byte) KEY_F3#0 +(byte) KEY_F5 +(byte) KEY_F5#0 +(byte) KEY_F7 +(byte) KEY_F7#0 +(byte) KEY_G +(byte) KEY_G#0 +(byte) KEY_H +(byte) KEY_H#0 +(byte) KEY_HOME +(byte) KEY_HOME#0 +(byte) KEY_I +(byte) KEY_I#0 +(byte) KEY_J +(byte) KEY_J#0 +(byte) KEY_K +(byte) KEY_K#0 +(byte) KEY_L +(byte) KEY_L#0 (byte) KEY_LSHIFT (byte) KEY_LSHIFT#0 +(byte) KEY_M +(byte) KEY_M#0 +(byte) KEY_MINUS +(byte) KEY_MINUS#0 (byte) KEY_MODIFIER_COMMODORE (byte) KEY_MODIFIER_COMMODORE#0 (byte) KEY_MODIFIER_CTRL @@ -1910,16 +2184,62 @@ SYMBOL TABLE SSA (byte) KEY_MODIFIER_LSHIFT#0 (byte) KEY_MODIFIER_RSHIFT (byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_MODIFIER_SHIFT#0 +(byte) KEY_N +(byte) KEY_N#0 +(byte) KEY_O +(byte) KEY_O#0 +(byte) KEY_P +(byte) KEY_P#0 +(byte) KEY_PLUS +(byte) KEY_PLUS#0 +(byte) KEY_POUND +(byte) KEY_POUND#0 +(byte) KEY_Q +(byte) KEY_Q#0 +(byte) KEY_R +(byte) KEY_R#0 +(byte) KEY_RETURN +(byte) KEY_RETURN#0 (byte) KEY_RSHIFT (byte) KEY_RSHIFT#0 +(byte) KEY_RUNSTOP +(byte) KEY_RUNSTOP#0 +(byte) KEY_S +(byte) KEY_S#0 +(byte) KEY_SEMICOLON +(byte) KEY_SEMICOLON#0 +(byte) KEY_SLASH +(byte) KEY_SLASH#0 (byte) KEY_SPACE (byte) KEY_SPACE#0 +(byte) KEY_T +(byte) KEY_T#0 +(byte) KEY_U +(byte) KEY_U#0 +(byte) KEY_V +(byte) KEY_V#0 +(byte) KEY_W +(byte) KEY_W#0 (byte) KEY_X (byte) KEY_X#0 +(byte) KEY_Y +(byte) KEY_Y#0 (byte) KEY_Z (byte) KEY_Z#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 (byte) LIGHT_GREY (byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 (word[]) PIECES (word[]) PIECES#0 (byte[]) PIECES_COLORS @@ -1938,28 +2258,114 @@ SYMBOL TABLE SSA (byte[$2]) PIECE_T#0 (byte[$6]) PIECE_Z (byte[$6]) PIECE_Z#0 +(byte) PINK +(byte) PINK#0 (byte) PLAYFIELD_COLS (byte) PLAYFIELD_COLS#0 (byte) PLAYFIELD_LINES (byte) PLAYFIELD_LINES#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 (byte*) SCREEN#2 (byte*) SCREEN#3 (byte*) SCREEN#4 +(byte) SID_CONTROL_GATE +(byte) SID_CONTROL_GATE#0 (byte) SID_CONTROL_NOISE (byte) SID_CONTROL_NOISE#0 +(byte) SID_CONTROL_PULSE +(byte) SID_CONTROL_PULSE#0 +(byte) SID_CONTROL_RING +(byte) SID_CONTROL_RING#0 +(byte) SID_CONTROL_SAWTOOTH +(byte) SID_CONTROL_SAWTOOTH#0 +(byte) SID_CONTROL_SYNC +(byte) SID_CONTROL_SYNC#0 +(byte) SID_CONTROL_TEST +(byte) SID_CONTROL_TEST#0 +(byte) SID_CONTROL_TRIANGLE +(byte) SID_CONTROL_TRIANGLE#0 (byte*) SID_VOICE3_CONTROL (byte*) SID_VOICE3_CONTROL#0 (word*) SID_VOICE3_FREQ (word*) SID_VOICE3_FREQ#0 +(byte*) SID_VOICE3_FREQ_HIGH +(byte*) SID_VOICE3_FREQ_HIGH#0 +(byte*) SID_VOICE3_FREQ_LOW +(byte*) SID_VOICE3_FREQ_LOW#0 (byte*) SID_VOICE3_OSC (byte*) SID_VOICE3_OSC#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 (byte) WHITE (byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte*~) collision::$0 (byte~) collision::$1 @@ -2661,6 +3067,8 @@ SYMBOL TABLE SSA (byte) fill::val#1 (byte) fill::val#2 (byte) fill::val#3 +(byte[]) keyboard_char_keycodes +(byte[]) keyboard_char_keycodes#0 (byte()) keyboard_event_get() (bool~) keyboard_event_get::$0 (label) keyboard_event_get::@1 @@ -3507,6 +3915,7 @@ Successful SSA optimization Pass2UnaryNotSimplification Alias (byte*) fill::end#0 = (byte*~) fill::$0 Alias (byte*) fill::addr#0 = (byte*) fill::start#2 Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 +Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#8 (byte) keyboard_event_scan::row#7 Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#12 (byte) keyboard_event_scan::keycode#3 @@ -4064,25 +4473,149 @@ Simple Condition (bool~) render_current::$5 if((byte) render_current::current_ce Simple Condition (bool~) render_current::$8 if((byte) render_current::c#1!=rangelast(0,3)) goto render_current::@3 Simple Condition (bool~) render_current::$7 if((byte) render_current::xpos#2>=(byte) PLAYFIELD_COLS#0) goto render_current::@5 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte) BLACK#0 = 0 Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte) KEY_DEL#0 = 0 +Constant (const byte) KEY_RETURN#0 = 1 +Constant (const byte) KEY_CRSR_RIGHT#0 = 2 +Constant (const byte) KEY_F7#0 = 3 +Constant (const byte) KEY_F1#0 = 4 +Constant (const byte) KEY_F3#0 = 5 +Constant (const byte) KEY_F5#0 = 6 +Constant (const byte) KEY_CRSR_DOWN#0 = 7 +Constant (const byte) KEY_3#0 = 8 +Constant (const byte) KEY_W#0 = 9 +Constant (const byte) KEY_A#0 = 10 +Constant (const byte) KEY_4#0 = 11 Constant (const byte) KEY_Z#0 = 12 +Constant (const byte) KEY_S#0 = 13 +Constant (const byte) KEY_E#0 = 14 Constant (const byte) KEY_LSHIFT#0 = 15 +Constant (const byte) KEY_5#0 = 16 +Constant (const byte) KEY_R#0 = 17 +Constant (const byte) KEY_D#0 = 18 +Constant (const byte) KEY_6#0 = 19 +Constant (const byte) KEY_C#0 = 20 +Constant (const byte) KEY_F#0 = 21 +Constant (const byte) KEY_T#0 = 22 Constant (const byte) KEY_X#0 = 23 +Constant (const byte) KEY_7#0 = 24 +Constant (const byte) KEY_Y#0 = 25 +Constant (const byte) KEY_G#0 = 26 +Constant (const byte) KEY_8#0 = 27 +Constant (const byte) KEY_B#0 = 28 +Constant (const byte) KEY_H#0 = 29 +Constant (const byte) KEY_U#0 = 30 +Constant (const byte) KEY_V#0 = 31 +Constant (const byte) KEY_9#0 = 32 +Constant (const byte) KEY_I#0 = 33 +Constant (const byte) KEY_J#0 = 34 +Constant (const byte) KEY_0#0 = 35 +Constant (const byte) KEY_M#0 = 36 +Constant (const byte) KEY_K#0 = 37 +Constant (const byte) KEY_O#0 = 38 +Constant (const byte) KEY_N#0 = 39 +Constant (const byte) KEY_PLUS#0 = 40 +Constant (const byte) KEY_P#0 = 41 +Constant (const byte) KEY_L#0 = 42 +Constant (const byte) KEY_MINUS#0 = 43 Constant (const byte) KEY_DOT#0 = 44 +Constant (const byte) KEY_COLON#0 = 45 +Constant (const byte) KEY_AT#0 = 46 Constant (const byte) KEY_COMMA#0 = 47 +Constant (const byte) KEY_POUND#0 = 48 +Constant (const byte) KEY_ASTERISK#0 = 49 +Constant (const byte) KEY_SEMICOLON#0 = 50 +Constant (const byte) KEY_HOME#0 = 51 Constant (const byte) KEY_RSHIFT#0 = 52 +Constant (const byte) KEY_EQUALS#0 = 53 +Constant (const byte) KEY_ARROW_UP#0 = 54 +Constant (const byte) KEY_SLASH#0 = 55 +Constant (const byte) KEY_1#0 = 56 +Constant (const byte) KEY_ARROW_LEFT#0 = 57 Constant (const byte) KEY_CTRL#0 = 58 +Constant (const byte) KEY_2#0 = 59 Constant (const byte) KEY_SPACE#0 = 60 Constant (const byte) KEY_COMMODORE#0 = 61 +Constant (const byte) KEY_Q#0 = 62 +Constant (const byte) KEY_RUNSTOP#0 = 63 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) } @@ -4099,8 +4632,17 @@ Constant (const byte) keyboard_event_scan::col#0 = 0 Constant (const byte) keyboard_modifiers#1 = 0 Constant (const byte) keyboard_event_get::return#0 = 255 Constant (const word*) SID_VOICE3_FREQ#0 = ((word*))54286 +Constant (const byte*) SID_VOICE3_FREQ_LOW#0 = ((byte*))54286 +Constant (const byte*) SID_VOICE3_FREQ_HIGH#0 = ((byte*))54287 Constant (const byte*) SID_VOICE3_CONTROL#0 = ((byte*))54290 Constant (const byte) SID_CONTROL_NOISE#0 = 128 +Constant (const byte) SID_CONTROL_PULSE#0 = 64 +Constant (const byte) SID_CONTROL_SAWTOOTH#0 = 32 +Constant (const byte) SID_CONTROL_TRIANGLE#0 = 16 +Constant (const byte) SID_CONTROL_TEST#0 = 8 +Constant (const byte) SID_CONTROL_RING#0 = 4 +Constant (const byte) SID_CONTROL_SYNC#0 = 2 +Constant (const byte) SID_CONTROL_GATE#0 = 1 Constant (const byte*) SID_VOICE3_OSC#0 = ((byte*))54299 Constant (const byte/signed byte/word/signed word/dword/signed dword) $1 = 4*4 Constant (const byte[$2]) PIECE_T#0 = { 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } @@ -4163,7 +4705,7 @@ Constant (const byte) tables_init::j#0 = 0 Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) CHARSET#0 = ((byte*))8192 Constant (const word) fill::size#0 = 1000 -Constant (const byte) fill::val#0 = 160 +Constant (const byte) fill::val#0 = 208 Constant (const word) fill::size#1 = 1000 Constant (const byte) render_init::i#0 = 0 Constant (const byte) render_init::l#0 = 0 @@ -4175,6 +4717,8 @@ Constant (const byte) render_current::i#0 = 0 Constant (const byte) render_current::l#0 = 0 Constant (const byte) render_current::c#0 = 0 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } +Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 Constant (const byte) keyboard_event_pressed::keycode#0 = KEY_LSHIFT#0 Constant (const byte) keyboard_event_pressed::keycode#1 = KEY_RSHIFT#0 Constant (const byte) keyboard_modifiers#2 = keyboard_modifiers#1|KEY_MODIFIER_LSHIFT#0 @@ -4241,14 +4785,6 @@ if() condition always true - replacing block destination if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars -Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte*) current_piece#16 ← ((byte*)) *((const word[]) PIECES#0 + (byte~) spawn_current::$3) Successful SSA optimization Pass2NopCastElimination Removing unused block main::@return @@ -4285,14 +4821,14 @@ Resolved ranged next value render_current::l#1 ← ++ render_current::l#3 to ++ Resolved ranged comparison value if(render_current::l#1!=rangelast(0,3)) goto render_current::@1 to (byte/signed byte/word/signed word/dword/signed dword) 4 Resolved ranged next value render_current::c#1 ← ++ render_current::c#2 to ++ Resolved ranged comparison value if(render_current::c#1!=rangelast(0,3)) goto render_current::@3 to (byte/signed byte/word/signed word/dword/signed dword) 4 -Culled Empty Block (label) @4 -Culled Empty Block (label) @8 +Culled Empty Block (label) @5 +Culled Empty Block (label) @9 Culled Empty Block (label) keyboard_event_scan::@2 Culled Empty Block (label) keyboard_event_scan::@6 Culled Empty Block (label) keyboard_event_scan::@12 Culled Empty Block (label) keyboard_event_get::@1 -Culled Empty Block (label) @11 -Culled Empty Block (label) @13 +Culled Empty Block (label) @12 +Culled Empty Block (label) @14 Culled Empty Block (label) main::@26 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@5 @@ -4307,7 +4843,7 @@ Culled Empty Block (label) play_move_leftright::@4 Culled Empty Block (label) play_move_leftright::@5 Culled Empty Block (label) play_move_rotate::@7 Culled Empty Block (label) play_move_rotate::@5 -Culled Empty Block (label) @17 +Culled Empty Block (label) @18 Culled Empty Block (label) collision::@9 Culled Empty Block (label) collision::@11 Culled Empty Block (label) collision::@13 @@ -4317,7 +4853,7 @@ Culled Empty Block (label) collision::@18 Culled Empty Block (label) render_init::@8 Culled Empty Block (label) render_init::@4 Culled Empty Block (label) render_current::@5 -Culled Empty Block (label) @26 +Culled Empty Block (label) @27 Successful SSA optimization Pass2CullEmptyBlocks Self Phi Eliminated (byte) collision::col#0 Self Phi Eliminated (byte*) collision::piece_gfx#2 @@ -4394,11 +4930,13 @@ Inlining constant with var siblings (const byte) render_current::i#0 Inlining constant with var siblings (const byte) render_current::l#0 Inlining constant with var siblings (const byte) render_current::c#0 Inlining constant with var siblings (const byte) keyboard_events_size#0 +Inlining constant with var siblings (const byte) keyboard_modifiers#1 Inlining constant with var siblings (const byte) current_movedown_counter#0 Inlining constant with var siblings (const byte) current_movedown_counter#4 Inlining constant with var siblings (const byte) current_orientation#10 Inlining constant with var siblings (const byte) current_xpos#10 Inlining constant with var siblings (const byte) current_ypos#21 +Inlining constant with var siblings (const byte) keyboard_modifiers#2 Constant inlined current_xpos#10 = (byte/signed byte/word/signed word/dword/signed dword) 3 Constant inlined play_move_rotate::return#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_rotate::return#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -4465,6 +5003,8 @@ Constant inlined play_move_down::return#1 = (byte/signed byte/word/signed word/d Constant inlined collision::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined tables_init::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined keyboard_modifiers#2 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 +Constant inlined keyboard_modifiers#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined current_ypos#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined $1 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined $2 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) 4 @@ -4485,7 +5025,7 @@ Constant inlined keyboard_event_scan::keycode#0 = (byte/signed byte/word/signed Constant inlined render_init::line#0 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 Constant inlined remove_lines::w#0 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined collision::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined fill::val#0 = (byte/word/signed word/dword/signed dword) 160 +Constant inlined fill::val#0 = (byte/word/signed word/dword/signed dword) 208 Constant inlined play_move_down::movedown#1 = ++(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined play_move_down::movedown#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined render_current::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -4539,18 +5079,20 @@ Added new block during phi lifting lock_current::@8(between lock_current::@3 and Added new block during phi lifting keyboard_event_get::@7(between keyboard_event_get and keyboard_event_get::@return) Fixing phi predecessor for keyboard_event_get::return#2 to new block ( keyboard_event_get -> keyboard_event_get::@7 ) during phi lifting. Added new block during phi lifting keyboard_event_scan::@30(between keyboard_event_scan::@3 and keyboard_event_scan::@1) -Added new block during phi lifting keyboard_event_scan::@31(between keyboard_event_scan::@5 and keyboard_event_scan::@4) -Added new block during phi lifting keyboard_event_scan::@32(between keyboard_event_scan::@25 and keyboard_event_scan::@4) -Fixing phi predecessor for keyboard_event_scan::col#2 to new block ( keyboard_event_scan::@25 -> keyboard_event_scan::@32 ) during phi lifting. -Added new block during phi lifting keyboard_event_scan::@33(between keyboard_event_scan::@4 and keyboard_event_scan::@5) -Added new block during phi lifting keyboard_event_scan::@34(between keyboard_event_scan::@15 and keyboard_event_scan::@5) +Added new block during phi lifting keyboard_event_scan::@31(between keyboard_event_scan::@27 and keyboard_event_scan::@10) +Added new block during phi lifting keyboard_event_scan::@32(between keyboard_event_scan::@28 and keyboard_event_scan::@11) +Added new block during phi lifting keyboard_event_scan::@33(between keyboard_event_scan::@5 and keyboard_event_scan::@4) +Added new block during phi lifting keyboard_event_scan::@34(between keyboard_event_scan::@25 and keyboard_event_scan::@4) +Fixing phi predecessor for keyboard_event_scan::col#2 to new block ( keyboard_event_scan::@25 -> keyboard_event_scan::@34 ) during phi lifting. +Added new block during phi lifting keyboard_event_scan::@35(between keyboard_event_scan::@4 and keyboard_event_scan::@5) +Added new block during phi lifting keyboard_event_scan::@36(between keyboard_event_scan::@15 and keyboard_event_scan::@5) Added new block during phi lifting tables_init::@3(between tables_init::@1 and tables_init::@1) Added new block during phi lifting render_init::@9(between render_init::@1 and render_init::@1) Added new block during phi lifting render_init::@10(between render_init::@5 and render_init::@2) Added new block during phi lifting render_init::@11(between render_init::@3 and render_init::@3) Added new block during phi lifting fill::@3(between fill::@1 and fill::@1) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @25 +Adding NOP phi() at start of @26 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 @@ -4569,14 +5111,7 @@ Adding NOP phi() at start of remove_lines Adding NOP phi() at start of remove_lines::@8 Adding NOP phi() at start of keyboard_event_scan::@20 Adding NOP phi() at start of keyboard_event_scan::@21 -Adding NOP phi() at start of keyboard_event_scan::@9 -Adding NOP phi() at start of keyboard_event_scan::@22 -Adding NOP phi() at start of keyboard_event_scan::@10 -Adding NOP phi() at start of keyboard_event_scan::@23 -Adding NOP phi() at start of keyboard_event_scan::@11 -Adding NOP phi() at start of keyboard_event_scan::@24 Adding NOP phi() at start of tables_init -Adding NOP phi() at start of render_init Adding NOP phi() at start of render_init::@7 CALL GRAPH Calls in [] to main:3 @@ -4585,10 +5120,10 @@ Calls in [play_move_rotate] to collision:130 Calls in [play_move_leftright] to collision:182 collision:199 Calls in [play_move_down] to keyboard_event_pressed:210 collision:230 lock_current:235 remove_lines:237 spawn_current:239 Calls in [spawn_current] to sid_rnd:277 -Calls in [keyboard_event_scan] to keyboard_matrix_read:361 keyboard_event_pressed:372 keyboard_event_pressed:378 keyboard_event_pressed:384 keyboard_event_pressed:390 -Calls in [render_init] to fill:445 fill:447 +Calls in [keyboard_event_scan] to keyboard_matrix_read:361 keyboard_event_pressed:372 keyboard_event_pressed:378 keyboard_event_pressed:385 keyboard_event_pressed:392 +Calls in [render_init] to fill:449 fill:451 -Created 98 initial phi equivalence classes +Created 101 initial phi equivalence classes Not coalescing [15] current_piece_gfx#87 ← current_piece_gfx#10 Not coalescing [16] current_piece_color#75 ← current_piece_color#15 Coalesced [19] current_piece_gfx#86 ← current_piece_gfx#10 @@ -4717,31 +5252,35 @@ Coalesced [357] keyboard_events_size#73 ← keyboard_events_size#13 Coalesced [358] keyboard_events_size#75 ← keyboard_events_size#19 Coalesced [366] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#1 Coalesced (already) [367] keyboard_events_size#77 ← keyboard_events_size#29 -Coalesced [396] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 -Coalesced [397] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 -Coalesced (already) [398] keyboard_events_size#76 ← keyboard_events_size#13 -Coalesced [399] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 -Coalesced [400] keyboard_events_size#79 ← keyboard_events_size#29 -Coalesced [410] keyboard_events_size#81 ← keyboard_events_size#2 -Coalesced [416] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 -Coalesced [417] keyboard_events_size#78 ← keyboard_events_size#30 -Coalesced [418] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 -Coalesced (already) [419] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 -Coalesced (already) [420] keyboard_events_size#80 ← keyboard_events_size#30 -Coalesced [424] keyboard_events_size#84 ← keyboard_events_size#1 -Coalesced (already) [425] keyboard_events_size#83 ← keyboard_events_size#10 -Coalesced (already) [426] keyboard_events_size#82 ← keyboard_events_size#10 -Coalesced [441] tables_init::j#3 ← tables_init::j#1 -Coalesced [442] tables_init::pli#3 ← tables_init::pli#1 -Coalesced [443] tables_init::idx#3 ← tables_init::idx#1 -Coalesced [464] render_init::line#5 ← render_init::line#1 -Coalesced [465] render_init::l#5 ← render_init::l#1 -Coalesced [466] render_init::c#3 ← render_init::c#1 -Coalesced [467] render_init::i#3 ← render_init::i#1 -Coalesced [468] render_init::li#3 ← render_init::li#1 -Coalesced [471] fill::addr#3 ← fill::addr#0 -Coalesced [477] fill::addr#4 ← fill::addr#1 -Coalesced down to 64 phi equivalence classes +Coalesced [383] keyboard_modifiers#53 ← keyboard_modifiers#3 +Coalesced [390] keyboard_modifiers#55 ← keyboard_modifiers#4 +Coalesced [398] keyboard_modifiers#56 ← keyboard_modifiers#12 +Coalesced [399] keyboard_modifiers#54 ← keyboard_modifiers#11 +Coalesced [400] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1 +Coalesced [401] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14 +Coalesced (already) [402] keyboard_events_size#76 ← keyboard_events_size#13 +Coalesced [403] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#11 +Coalesced [404] keyboard_events_size#79 ← keyboard_events_size#29 +Coalesced [414] keyboard_events_size#81 ← keyboard_events_size#2 +Coalesced [420] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15 +Coalesced [421] keyboard_events_size#78 ← keyboard_events_size#30 +Coalesced [422] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1 +Coalesced (already) [423] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#15 +Coalesced (already) [424] keyboard_events_size#80 ← keyboard_events_size#30 +Coalesced [428] keyboard_events_size#84 ← keyboard_events_size#1 +Coalesced (already) [429] keyboard_events_size#83 ← keyboard_events_size#10 +Coalesced (already) [430] keyboard_events_size#82 ← keyboard_events_size#10 +Coalesced [445] tables_init::j#3 ← tables_init::j#1 +Coalesced [446] tables_init::pli#3 ← tables_init::pli#1 +Coalesced [447] tables_init::idx#3 ← tables_init::idx#1 +Coalesced [468] render_init::line#5 ← render_init::line#1 +Coalesced [469] render_init::l#5 ← render_init::l#1 +Coalesced [470] render_init::c#3 ← render_init::c#1 +Coalesced [471] render_init::i#3 ← render_init::i#1 +Coalesced [472] render_init::li#3 ← render_init::li#1 +Coalesced [475] fill::addr#3 ← fill::addr#0 +Coalesced [481] fill::addr#4 ← fill::addr#1 +Coalesced down to 65 phi equivalence classes Culled Empty Block (label) render_current::@14 Culled Empty Block (label) render_current::@11 Culled Empty Block (label) render_current::@12 @@ -4763,18 +5302,20 @@ Culled Empty Block (label) remove_lines::@15 Culled Empty Block (label) remove_lines::@18 Culled Empty Block (label) remove_lines::@16 Culled Empty Block (label) keyboard_event_get::@7 -Culled Empty Block (label) keyboard_event_scan::@30 Culled Empty Block (label) keyboard_event_scan::@32 Culled Empty Block (label) keyboard_event_scan::@31 +Culled Empty Block (label) keyboard_event_scan::@30 Culled Empty Block (label) keyboard_event_scan::@34 Culled Empty Block (label) keyboard_event_scan::@33 +Culled Empty Block (label) keyboard_event_scan::@36 +Culled Empty Block (label) keyboard_event_scan::@35 Culled Empty Block (label) tables_init::@3 Culled Empty Block (label) render_init::@10 Culled Empty Block (label) render_init::@11 Culled Empty Block (label) render_init::@9 Culled Empty Block (label) fill::@3 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @25 +Adding NOP phi() at start of @26 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@22 @@ -4794,34 +5335,27 @@ Adding NOP phi() at start of remove_lines::@17 Adding NOP phi() at start of keyboard_event_scan Adding NOP phi() at start of keyboard_event_scan::@20 Adding NOP phi() at start of keyboard_event_scan::@21 -Adding NOP phi() at start of keyboard_event_scan::@9 -Adding NOP phi() at start of keyboard_event_scan::@22 -Adding NOP phi() at start of keyboard_event_scan::@10 -Adding NOP phi() at start of keyboard_event_scan::@23 -Adding NOP phi() at start of keyboard_event_scan::@11 -Adding NOP phi() at start of keyboard_event_scan::@24 Adding NOP phi() at start of tables_init -Adding NOP phi() at start of render_init Adding NOP phi() at start of render_init::@7 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@22 -@22: scope:[] from @begin + to:@23 +@23: scope:[] from @begin kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} - to:@25 -@25: scope:[] from @22 + to:@26 +@26: scope:[] from @23 [2] phi() [3] call main to:@end -@end: scope:[] from @25 +@end: scope:[] from @26 [4] phi() -main: scope:[main] from @25 +main: scope:[main] from @26 [5] phi() [6] call sid_rnd_init to:main::@21 @@ -5372,7 +5906,7 @@ keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan: [264] phi() to:keyboard_event_scan::@9 keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26 - [265] phi() + [265] (byte) keyboard_modifiers#11 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [266] call keyboard_event_pressed [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@27 @@ -5381,10 +5915,10 @@ keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan: [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 to:keyboard_event_scan::@22 keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27 - [270] phi() + [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 to:keyboard_event_scan::@10 keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27 - [271] phi() + [271] (byte) keyboard_modifiers#12 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#11 ) [272] call keyboard_event_pressed [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@28 @@ -5393,10 +5927,10 @@ keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan: [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 to:keyboard_event_scan::@23 keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28 - [276] phi() + [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 to:keyboard_event_scan::@11 keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28 - [277] phi() + [277] (byte) keyboard_modifiers#13 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#12 ) [278] call keyboard_event_pressed [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 to:keyboard_event_scan::@29 @@ -5405,7 +5939,7 @@ keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan: [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return to:keyboard_event_scan::@24 keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29 - [282] phi() + [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 to:keyboard_event_scan::@return keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29 [283] return @@ -5472,7 +6006,7 @@ tables_init::@return: scope:[tables_init] from tables_init::@2 [314] return to:@return render_init: scope:[render_init] from main::@21 - [315] phi() + [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [316] call fill to:render_init::@7 render_init::@7: scope:[render_init] from render_init @@ -5508,7 +6042,7 @@ render_init::@return: scope:[render_init] from render_init::@5 [334] return to:@return fill: scope:[fill] from render_init render_init::@7 - [335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 160 render_init::@7/(const byte) BLACK#0 ) + [335] (byte) fill::val#3 ← phi( render_init/(byte/word/signed word/dword/signed dword) 208 render_init::@7/(const byte) BLACK#0 ) [335] (byte*) fill::addr#0 ← phi( render_init/(const byte*) SCREEN#0 render_init::@7/(const byte*) COLS#0 ) [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 to:fill::@1 @@ -5531,33 +6065,124 @@ sid_rnd_init::@return: scope:[sid_rnd_init] from sid_rnd_init VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN (byte*) CHARSET +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte) COLLISION_BOTTOM (byte) COLLISION_LEFT (byte) COLLISION_NONE (byte) COLLISION_PLAYFIELD (byte) COLLISION_RIGHT (byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 (byte) DARK_GREY (byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON (byte) KEY_COMMA (byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT (byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL (byte) KEY_DOT +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L (byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS (byte) KEY_MODIFIER_COMMODORE (byte) KEY_MODIFIER_CTRL (byte) KEY_MODIFIER_LSHIFT (byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN (byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W (byte) KEY_X +(byte) KEY_Y (byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN (byte) LIGHT_GREY +(byte) ORANGE (word[]) PIECES (byte[]) PIECES_COLORS (byte[4*4*4]) PIECE_I @@ -5567,15 +6192,58 @@ VARIABLE REGISTER WEIGHTS (byte[4*4*4]) PIECE_S (byte[4*4*4]) PIECE_T (byte[4*4*4]) PIECE_Z +(byte) PINK (byte) PLAYFIELD_COLS (byte) PLAYFIELD_LINES +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN +(byte) SID_CONTROL_GATE (byte) SID_CONTROL_NOISE +(byte) SID_CONTROL_PULSE +(byte) SID_CONTROL_RING +(byte) SID_CONTROL_SAWTOOTH +(byte) SID_CONTROL_SYNC +(byte) SID_CONTROL_TEST +(byte) SID_CONTROL_TRIANGLE (byte*) SID_VOICE3_CONTROL (word*) SID_VOICE3_FREQ +(byte*) SID_VOICE3_FREQ_HIGH +(byte*) SID_VOICE3_FREQ_LOW (byte*) SID_VOICE3_OSC +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE +(byte) YELLOW (byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte~) collision::$7 2002.0 (byte) collision::c @@ -5694,6 +6362,7 @@ VARIABLE REGISTER WEIGHTS (byte*) fill::start (byte) fill::val (byte) fill::val#3 1.8333333333333333 +(byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (byte) keyboard_event_get::return (byte) keyboard_event_get::return#1 4.0 @@ -5758,6 +6427,12 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_matrix_read::rowid#0 103.0 (byte[8]) keyboard_matrix_row_bitmask (byte) keyboard_modifiers +(byte) keyboard_modifiers#11 0.8 +(byte) keyboard_modifiers#12 1.6 +(byte) keyboard_modifiers#13 1.2000000000000002 +(byte) keyboard_modifiers#3 4.0 +(byte) keyboard_modifiers#4 4.0 +(byte) keyboard_modifiers#5 20.0 (byte[8]) keyboard_scan_values (void()) lock_current() (byte) lock_current::c @@ -5986,6 +6661,7 @@ Initial phi equivalence classes [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +[ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] @@ -6054,6 +6730,7 @@ Added variable keyboard_event_pressed::return#2 to zero page equivalence class [ Added variable keyboard_event_scan::$22 to zero page equivalence class [ keyboard_event_scan::$22 ] Added variable keyboard_event_pressed::return#10 to zero page equivalence class [ keyboard_event_pressed::return#10 ] Added variable keyboard_event_scan::$26 to zero page equivalence class [ keyboard_event_scan::$26 ] +Added variable keyboard_modifiers#5 to zero page equivalence class [ keyboard_modifiers#5 ] Added variable keyboard_event_scan::$3 to zero page equivalence class [ keyboard_event_scan::$3 ] Added variable keyboard_event_scan::$4 to zero page equivalence class [ keyboard_event_scan::$4 ] Added variable keyboard_event_scan::event_type#0 to zero page equivalence class [ keyboard_event_scan::event_type#0 ] @@ -6113,6 +6790,7 @@ Complete equivalence classes [ keyboard_event_pressed::keycode#5 ] [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +[ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] @@ -6181,6 +6859,7 @@ Complete equivalence classes [ keyboard_event_scan::$22 ] [ keyboard_event_pressed::return#10 ] [ keyboard_event_scan::$26 ] +[ keyboard_modifiers#5 ] [ keyboard_event_scan::$3 ] [ keyboard_event_scan::$4 ] [ keyboard_event_scan::event_type#0 ] @@ -6239,83 +6918,85 @@ Allocated zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] Allocated zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Allocated zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] Allocated zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Allocated zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Allocated zp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Allocated zp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Allocated zp ZP_BYTE:59 [ tables_init::j#2 tables_init::j#1 ] -Allocated zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] -Allocated zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] -Allocated zp ZP_BYTE:63 [ render_init::i#2 render_init::i#1 ] -Allocated zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] -Allocated zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] -Allocated zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] -Allocated zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] -Allocated zp ZP_BYTE:70 [ fill::val#3 ] -Allocated zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] -Allocated zp ZP_BYTE:73 [ keyboard_event_get::return#3 ] -Allocated zp ZP_BYTE:74 [ main::key_event#0 ] -Allocated zp ZP_BYTE:75 [ play_move_down::key_event#0 ] -Allocated zp ZP_BYTE:76 [ play_move_down::return#0 ] -Allocated zp ZP_BYTE:77 [ main::$10 ] -Allocated zp ZP_BYTE:78 [ main::render#1 ] -Allocated zp ZP_BYTE:79 [ play_move_leftright::key_event#0 ] -Allocated zp ZP_BYTE:80 [ play_move_leftright::return#0 ] -Allocated zp ZP_BYTE:81 [ main::$11 ] -Allocated zp ZP_BYTE:82 [ main::render#2 ] -Allocated zp ZP_BYTE:83 [ play_move_rotate::key_event#0 ] -Allocated zp ZP_BYTE:84 [ play_move_rotate::return#0 ] -Allocated zp ZP_BYTE:85 [ main::$12 ] -Allocated zp ZP_BYTE:86 [ main::render#3 ] -Allocated zp ZP_WORD:87 [ render_current::screen_line#0 ] -Allocated zp ZP_BYTE:89 [ render_current::current_cell#0 ] -Allocated zp ZP_BYTE:90 [ render_playfield::$1 ] -Allocated zp ZP_BYTE:91 [ play_move_rotate::$2 ] -Allocated zp ZP_BYTE:92 [ collision::return#13 ] -Allocated zp ZP_BYTE:93 [ play_move_rotate::$6 ] -Allocated zp ZP_BYTE:94 [ play_move_rotate::$4 ] -Allocated zp ZP_WORD:95 [ collision::piece_gfx#0 ] -Allocated zp ZP_WORD:97 [ collision::playfield_line#0 ] -Allocated zp ZP_BYTE:99 [ collision::i#1 ] -Allocated zp ZP_BYTE:100 [ collision::$7 ] -Allocated zp ZP_BYTE:101 [ collision::return#12 ] -Allocated zp ZP_BYTE:102 [ play_move_leftright::$4 ] -Allocated zp ZP_BYTE:103 [ collision::return#1 ] -Allocated zp ZP_BYTE:104 [ play_move_leftright::$8 ] -Allocated zp ZP_BYTE:105 [ keyboard_event_pressed::return#12 ] -Allocated zp ZP_BYTE:106 [ play_move_down::$2 ] -Allocated zp ZP_BYTE:107 [ collision::return#0 ] -Allocated zp ZP_BYTE:108 [ play_move_down::$12 ] -Allocated zp ZP_BYTE:109 [ spawn_current::$3 ] -Allocated zp ZP_BYTE:110 [ sid_rnd::return#2 ] -Allocated zp ZP_BYTE:111 [ spawn_current::$1 ] -Allocated zp ZP_BYTE:112 [ sid_rnd::return#0 ] -Allocated zp ZP_BYTE:113 [ remove_lines::c#0 ] -Allocated zp ZP_WORD:114 [ lock_current::playfield_line#0 ] -Allocated zp ZP_BYTE:116 [ lock_current::i#1 ] -Allocated zp ZP_BYTE:117 [ keyboard_event_pressed::$0 ] -Allocated zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] -Allocated zp ZP_BYTE:119 [ keyboard_event_pressed::$1 ] -Allocated zp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] -Allocated zp ZP_BYTE:121 [ keyboard_matrix_read::rowid#0 ] -Allocated zp ZP_BYTE:122 [ keyboard_matrix_read::return#2 ] -Allocated zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] -Allocated zp ZP_BYTE:124 [ keyboard_event_pressed::return#0 ] -Allocated zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] -Allocated zp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] -Allocated zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] -Allocated zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] -Allocated zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] -Allocated zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] -Allocated zp ZP_BYTE:131 [ keyboard_event_scan::$26 ] -Allocated zp ZP_BYTE:132 [ keyboard_event_scan::$3 ] -Allocated zp ZP_BYTE:133 [ keyboard_event_scan::$4 ] -Allocated zp ZP_BYTE:134 [ keyboard_event_scan::event_type#0 ] -Allocated zp ZP_BYTE:135 [ keyboard_event_scan::$11 ] -Allocated zp ZP_BYTE:136 [ keyboard_matrix_read::return#0 ] -Allocated zp ZP_BYTE:137 [ tables_init::$1 ] -Allocated zp ZP_BYTE:138 [ render_init::$5 ] -Allocated zp ZP_WORD:139 [ render_init::$10 ] -Allocated zp ZP_WORD:141 [ fill::end#0 ] +Allocated zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Allocated zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Allocated zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Allocated zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated zp ZP_BYTE:60 [ tables_init::j#2 tables_init::j#1 ] +Allocated zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] +Allocated zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] +Allocated zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] +Allocated zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] +Allocated zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] +Allocated zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] +Allocated zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] +Allocated zp ZP_BYTE:71 [ fill::val#3 ] +Allocated zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] +Allocated zp ZP_BYTE:74 [ keyboard_event_get::return#3 ] +Allocated zp ZP_BYTE:75 [ main::key_event#0 ] +Allocated zp ZP_BYTE:76 [ play_move_down::key_event#0 ] +Allocated zp ZP_BYTE:77 [ play_move_down::return#0 ] +Allocated zp ZP_BYTE:78 [ main::$10 ] +Allocated zp ZP_BYTE:79 [ main::render#1 ] +Allocated zp ZP_BYTE:80 [ play_move_leftright::key_event#0 ] +Allocated zp ZP_BYTE:81 [ play_move_leftright::return#0 ] +Allocated zp ZP_BYTE:82 [ main::$11 ] +Allocated zp ZP_BYTE:83 [ main::render#2 ] +Allocated zp ZP_BYTE:84 [ play_move_rotate::key_event#0 ] +Allocated zp ZP_BYTE:85 [ play_move_rotate::return#0 ] +Allocated zp ZP_BYTE:86 [ main::$12 ] +Allocated zp ZP_BYTE:87 [ main::render#3 ] +Allocated zp ZP_WORD:88 [ render_current::screen_line#0 ] +Allocated zp ZP_BYTE:90 [ render_current::current_cell#0 ] +Allocated zp ZP_BYTE:91 [ render_playfield::$1 ] +Allocated zp ZP_BYTE:92 [ play_move_rotate::$2 ] +Allocated zp ZP_BYTE:93 [ collision::return#13 ] +Allocated zp ZP_BYTE:94 [ play_move_rotate::$6 ] +Allocated zp ZP_BYTE:95 [ play_move_rotate::$4 ] +Allocated zp ZP_WORD:96 [ collision::piece_gfx#0 ] +Allocated zp ZP_WORD:98 [ collision::playfield_line#0 ] +Allocated zp ZP_BYTE:100 [ collision::i#1 ] +Allocated zp ZP_BYTE:101 [ collision::$7 ] +Allocated zp ZP_BYTE:102 [ collision::return#12 ] +Allocated zp ZP_BYTE:103 [ play_move_leftright::$4 ] +Allocated zp ZP_BYTE:104 [ collision::return#1 ] +Allocated zp ZP_BYTE:105 [ play_move_leftright::$8 ] +Allocated zp ZP_BYTE:106 [ keyboard_event_pressed::return#12 ] +Allocated zp ZP_BYTE:107 [ play_move_down::$2 ] +Allocated zp ZP_BYTE:108 [ collision::return#0 ] +Allocated zp ZP_BYTE:109 [ play_move_down::$12 ] +Allocated zp ZP_BYTE:110 [ spawn_current::$3 ] +Allocated zp ZP_BYTE:111 [ sid_rnd::return#2 ] +Allocated zp ZP_BYTE:112 [ spawn_current::$1 ] +Allocated zp ZP_BYTE:113 [ sid_rnd::return#0 ] +Allocated zp ZP_BYTE:114 [ remove_lines::c#0 ] +Allocated zp ZP_WORD:115 [ lock_current::playfield_line#0 ] +Allocated zp ZP_BYTE:117 [ lock_current::i#1 ] +Allocated zp ZP_BYTE:118 [ keyboard_event_pressed::$0 ] +Allocated zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] +Allocated zp ZP_BYTE:120 [ keyboard_event_pressed::$1 ] +Allocated zp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] +Allocated zp ZP_BYTE:122 [ keyboard_matrix_read::rowid#0 ] +Allocated zp ZP_BYTE:123 [ keyboard_matrix_read::return#2 ] +Allocated zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] +Allocated zp ZP_BYTE:125 [ keyboard_event_pressed::return#0 ] +Allocated zp ZP_BYTE:126 [ keyboard_event_scan::$14 ] +Allocated zp ZP_BYTE:127 [ keyboard_event_pressed::return#1 ] +Allocated zp ZP_BYTE:128 [ keyboard_event_scan::$18 ] +Allocated zp ZP_BYTE:129 [ keyboard_event_pressed::return#2 ] +Allocated zp ZP_BYTE:130 [ keyboard_event_scan::$22 ] +Allocated zp ZP_BYTE:131 [ keyboard_event_pressed::return#10 ] +Allocated zp ZP_BYTE:132 [ keyboard_event_scan::$26 ] +Allocated zp ZP_BYTE:133 [ keyboard_modifiers#5 ] +Allocated zp ZP_BYTE:134 [ keyboard_event_scan::$3 ] +Allocated zp ZP_BYTE:135 [ keyboard_event_scan::$4 ] +Allocated zp ZP_BYTE:136 [ keyboard_event_scan::event_type#0 ] +Allocated zp ZP_BYTE:137 [ keyboard_event_scan::$11 ] +Allocated zp ZP_BYTE:138 [ keyboard_matrix_read::return#0 ] +Allocated zp ZP_BYTE:139 [ tables_init::$1 ] +Allocated zp ZP_BYTE:140 [ render_init::$5 ] +Allocated zp ZP_WORD:141 [ render_init::$10 ] +Allocated zp ZP_WORD:143 [ fill::end#0 ] INITIAL ASM //SEG0 Basic Upstart @@ -6325,6 +7006,7 @@ INITIAL ASM //SEG1 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 + .label BGCOL = $d021 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 @@ -6342,6 +7024,10 @@ INITIAL ASM .const KEY_CTRL = $3a .const KEY_SPACE = $3c .const KEY_COMMODORE = $3d + .const KEY_MODIFIER_LSHIFT = 1 + .const KEY_MODIFIER_RSHIFT = 2 + .const KEY_MODIFIER_CTRL = 4 + .const KEY_MODIFIER_COMMODORE = 8 .label SID_VOICE3_FREQ = $d40e .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 @@ -6357,7 +7043,9 @@ INITIAL ASM .const COLLISION_RIGHT = 8 .label SCREEN = $400 .label CHARSET = $2000 - .label keyboard_events_size = $3a + .label keyboard_events_size = $3b + .label keyboard_modifiers = $38 + .label keyboard_modifiers_5 = $85 .label current_ypos = 2 .label current_xpos = $27 .label current_orientation = $24 @@ -6382,33 +7070,33 @@ INITIAL ASM .label current_piece_75 = $15 //SEG2 @begin bbegin: - jmp b22 -//SEG3 @22 -b22: + jmp b23 +//SEG3 @23 +b23: //SEG4 kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} -//SEG5 [2] phi from @22 to @25 [phi:@22->@25] -b25_from_b22: - jmp b25 -//SEG6 @25 -b25: +//SEG5 [2] phi from @23 to @26 [phi:@23->@26] +b26_from_b23: + jmp b26 +//SEG6 @26 +b26: //SEG7 [3] call main -//SEG8 [5] phi from @25 to main [phi:@25->main] -main_from_b25: +//SEG8 [5] phi from @26 to main [phi:@26->main] +main_from_b26: jsr main -//SEG9 [4] phi from @25 to @end [phi:@25->@end] -bend_from_b25: +//SEG9 [4] phi from @26 to @end [phi:@26->@end] +bend_from_b26: jmp bend //SEG10 @end bend: //SEG11 main main: { - .label _10 = $4d - .label _11 = $51 - .label _12 = $55 - .label key_event = $4a - .label render = $4e - .label render_2 = $52 - .label render_3 = $56 + .label _10 = $4e + .label _11 = $52 + .label _12 = $56 + .label key_event = $4b + .label render = $4f + .label render_2 = $53 + .label render_3 = $57 //SEG12 [6] call sid_rnd_init jsr sid_rnd_init jmp b21 @@ -6417,536 +7105,534 @@ main: { //SEG14 asm { sei } sei //SEG15 [8] call render_init - //SEG16 [315] phi from main::@21 to render_init [phi:main::@21->render_init] - render_init_from_b21: jsr render_init - //SEG17 [9] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG16 [9] phi from main::@21 to main::@22 [phi:main::@21->main::@22] b22_from_b21: jmp b22 - //SEG18 main::@22 + //SEG17 main::@22 b22: - //SEG19 [10] call tables_init - //SEG20 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] + //SEG18 [10] call tables_init + //SEG19 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] tables_init_from_b22: jsr tables_init - //SEG21 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG20 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG22 main::@23 + //SEG21 main::@23 b23: - //SEG23 [12] call spawn_current - //SEG24 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] + //SEG22 [12] call spawn_current + //SEG23 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] spawn_current_from_b23: jsr spawn_current - //SEG25 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG24 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG26 main::@24 + //SEG25 main::@24 b24: - //SEG27 [14] call render_playfield - //SEG28 [72] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] + //SEG26 [14] call render_playfield + //SEG27 [72] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] render_playfield_from_b24: jsr render_playfield jmp b25 - //SEG29 main::@25 + //SEG28 main::@25 b25: - //SEG30 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_87 lda current_piece_gfx+1 sta current_piece_gfx_87+1 - //SEG31 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_75 - //SEG32 [17] call render_current - //SEG33 [52] phi from main::@25 to render_current [phi:main::@25->render_current] + //SEG31 [17] call render_current + //SEG32 [52] phi from main::@25 to render_current [phi:main::@25->render_current] render_current_from_b25: - //SEG34 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy - //SEG35 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG36 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + //SEG33 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG34 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy + //SEG35 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_63 - //SEG37 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuz1=vbuc1 + //SEG36 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuz1=vbuc1 lda #0 sta current_ypos_22 jsr render_current - //SEG38 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG37 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG39 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] + //SEG38 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] b1_from_b25: - //SEG40 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG39 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG41 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 + //SEG40 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG42 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy - //SEG43 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG41 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy + //SEG42 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG44 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG43 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG45 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy - //SEG46 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG44 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy + //SEG45 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG47 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy + //SEG46 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy jmp b1 - //SEG48 main::@1 + //SEG47 main::@1 b1: jmp b4 - //SEG49 main::@4 + //SEG48 main::@4 b4: - //SEG50 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG49 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG51 main::@7 + //SEG50 main::@7 b7: - //SEG52 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG51 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b9 - //SEG53 main::@9 + //SEG52 main::@9 b9: - //SEG54 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG53 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG55 [23] call keyboard_event_scan - //SEG56 [248] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG54 [23] call keyboard_event_scan + //SEG55 [248] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan - //SEG57 [24] phi from main::@9 to main::@27 [phi:main::@9->main::@27] + //SEG56 [24] phi from main::@9 to main::@27 [phi:main::@9->main::@27] b27_from_b9: jmp b27 - //SEG58 main::@27 + //SEG57 main::@27 b27: - //SEG59 [25] call keyboard_event_get + //SEG58 [25] call keyboard_event_get jsr keyboard_event_get - //SEG60 [26] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 + //SEG59 [26] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 -- vbuz1=vbuz2 lda keyboard_event_get.return sta keyboard_event_get.return_3 jmp b28 - //SEG61 main::@28 + //SEG60 main::@28 b28: - //SEG62 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 + //SEG61 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuz2 lda keyboard_event_get.return_3 sta key_event - //SEG63 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG62 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_down.key_event - //SEG64 [29] call play_move_down + //SEG63 [29] call play_move_down jsr play_move_down - //SEG65 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 + //SEG64 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuz1=vbuz2 lda play_move_down.return_3 sta play_move_down.return jmp b29 - //SEG66 main::@29 + //SEG65 main::@29 b29: - //SEG67 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 + //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 -- vbuz1=vbuz2 lda play_move_down.return sta _10 - //SEG68 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuz2 + //SEG67 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuz2 lda #0 clc adc _10 sta render - //SEG69 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG68 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_leftright.key_event - //SEG70 [34] call play_move_leftright + //SEG69 [34] call play_move_leftright jsr play_move_leftright - //SEG71 [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 + //SEG70 [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 -- vbuz1=vbuz2 lda play_move_leftright.return_2 sta play_move_leftright.return jmp b30 - //SEG72 main::@30 + //SEG71 main::@30 b30: - //SEG73 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 + //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 -- vbuz1=vbuz2 lda play_move_leftright.return sta _11 - //SEG74 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz2_plus_vbuz3 + //SEG73 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz2_plus_vbuz3 lda render clc adc _11 sta render_2 - //SEG75 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 + //SEG74 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuz1=vbuz2 lda key_event sta play_move_rotate.key_event - //SEG76 [39] call play_move_rotate + //SEG75 [39] call play_move_rotate jsr play_move_rotate - //SEG77 [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 + //SEG76 [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 -- vbuz1=vbuz2 lda play_move_rotate.return_2 sta play_move_rotate.return jmp b31 - //SEG78 main::@31 + //SEG77 main::@31 b31: - //SEG79 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 + //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 -- vbuz1=vbuz2 lda play_move_rotate.return sta _12 - //SEG80 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuz1=vbuz2_plus_vbuz3 + //SEG79 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuz1=vbuz2_plus_vbuz3 lda render_2 clc adc _12 sta render_3 - //SEG81 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 + //SEG80 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuz1_eq_0_then_la1 lda render_3 cmp #0 beq b10 - //SEG82 [44] phi from main::@31 to main::@19 [phi:main::@31->main::@19] + //SEG81 [44] phi from main::@31 to main::@19 [phi:main::@31->main::@19] b19_from_b31: jmp b19 - //SEG83 main::@19 + //SEG82 main::@19 b19: - //SEG84 [45] call render_playfield - //SEG85 [72] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG83 [45] call render_playfield + //SEG84 [72] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield jmp b32 - //SEG86 main::@32 + //SEG85 main::@32 b32: - //SEG87 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos sta current_ypos_71 - //SEG88 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_96 - //SEG89 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_88 lda current_piece_gfx+1 sta current_piece_gfx_88+1 - //SEG90 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_76 - //SEG91 [50] call render_current - //SEG92 [52] phi from main::@32 to render_current [phi:main::@32->render_current] + //SEG90 [50] call render_current + //SEG91 [52] phi from main::@32 to render_current [phi:main::@32->render_current] render_current_from_b32: - //SEG93 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy - //SEG94 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG95 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG96 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + //SEG92 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG93 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG94 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG95 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current jmp b10 - //SEG97 main::@10 + //SEG96 main::@10 b10: - //SEG98 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG97 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG99 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG98 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG100 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG101 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG102 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy - //SEG103 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy - //SEG104 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy - //SEG105 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG106 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG107 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG99 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG100 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG101 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy + //SEG102 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy + //SEG103 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy + //SEG104 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG105 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG106 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG108 render_current +//SEG107 render_current render_current: { .label ypos2 = 9 .label l = $a - .label screen_line = $57 + .label screen_line = $58 .label xpos = $c - .label current_cell = $59 + .label current_cell = $5a .label i = $b .label c = $d - //SEG109 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos_22 asl sta ypos2 - //SEG110 [54] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG109 [54] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG111 [54] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG110 [54] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG112 [54] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG111 [54] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l - //SEG113 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG112 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG114 [54] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG113 [54] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] b1_from_b2: - //SEG115 [54] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG116 [54] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG117 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG114 [54] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG115 [54] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG116 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy jmp b1 - //SEG118 render_current::@1 + //SEG117 render_current::@1 b1: - //SEG119 [55] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG118 [55] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcs b2_from_b1 jmp b6 - //SEG120 render_current::@6 + //SEG119 render_current::@6 b6: - //SEG121 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG120 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG122 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 + //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 lda current_xpos_63 sta xpos - //SEG123 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG122 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: - //SEG124 [58] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuz1=vbuc1 + //SEG123 [58] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG125 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG126 [58] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy + //SEG124 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG125 [58] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy jmp b3 - //SEG127 [58] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG126 [58] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] b3_from_b4: - //SEG128 [58] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG129 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG130 [58] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy + //SEG127 [58] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG128 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG129 [58] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy jmp b3 - //SEG131 render_current::@3 + //SEG130 render_current::@3 b3: - //SEG132 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuz1=pbuz2_derefidx_vbuz3 ldy i lda (current_piece_gfx_64),y sta current_cell - //SEG133 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG132 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG134 [61] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuz1_eq_0_then_la1 + //SEG133 [61] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuz1_eq_0_then_la1 lda current_cell cmp #0 beq b4 jmp b7 - //SEG135 render_current::@7 + //SEG134 render_current::@7 b7: - //SEG136 [62] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + //SEG135 [62] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b4 jmp b8 - //SEG137 render_current::@8 + //SEG136 render_current::@8 b8: - //SEG138 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color_67 ldy xpos sta (screen_line),y jmp b4 - //SEG139 render_current::@4 + //SEG138 render_current::@4 b4: - //SEG140 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG139 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG141 [65] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG140 [65] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG142 [66] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG141 [66] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b3_from_b4 - //SEG143 [67] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG142 [67] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] b2_from_b1: b2_from_b4: - //SEG144 [67] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG143 [67] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy jmp b2 - //SEG145 render_current::@2 + //SEG144 render_current::@2 b2: - //SEG146 [68] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG145 [68] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG147 [69] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 + //SEG146 [69] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG148 [70] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG147 [70] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b2 jmp breturn - //SEG149 render_current::@return + //SEG148 render_current::@return breturn: - //SEG150 [71] return + //SEG149 [71] return rts } -//SEG151 render_playfield +//SEG150 render_playfield render_playfield: { - .label _1 = $5a + .label _1 = $5b .label line = $10 .label i = $f .label c = $12 .label l = $e - //SEG152 [73] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG151 [73] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG153 [73] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG152 [73] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG154 [73] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG153 [73] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG155 [73] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG154 [73] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG156 [73] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG157 [73] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG155 [73] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG156 [73] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG158 render_playfield::@1 + //SEG157 render_playfield::@1 b1: - //SEG159 [74] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG158 [74] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda l asl sta _1 - //SEG160 [75] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG159 [75] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuz2 ldy _1 lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG161 [76] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG160 [76] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG162 [76] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 + //SEG161 [76] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG163 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG164 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG162 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG163 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG165 [76] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG164 [76] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG166 [76] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG167 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG168 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG165 [76] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG166 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG167 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG169 render_playfield::@2 + //SEG168 render_playfield::@2 b2: - //SEG170 [77] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG169 [77] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (line),y - //SEG171 [78] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + //SEG170 [78] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 inc line bne !+ inc line+1 !: - //SEG172 [79] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG171 [79] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG173 [80] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 + //SEG172 [80] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG174 [81] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG173 [81] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG175 render_playfield::@3 + //SEG174 render_playfield::@3 b3: - //SEG176 [82] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG175 [82] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG177 [83] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG176 [83] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG178 render_playfield::@return + //SEG177 render_playfield::@return breturn: - //SEG179 [84] return + //SEG178 [84] return rts } -//SEG180 play_move_rotate +//SEG179 play_move_rotate play_move_rotate: { - .label _2 = $5b - .label _4 = $5e - .label _6 = $5d - .label key_event = $53 - .label return = $54 + .label _2 = $5c + .label _4 = $5f + .label _6 = $5e + .label key_event = $54 + .label return = $55 .label orientation = $14 .label return_2 = $13 - //SEG181 [85] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG180 [85] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_Z beq b1 jmp b6 - //SEG182 play_move_rotate::@6 + //SEG181 play_move_rotate::@6 b6: - //SEG183 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG182 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_X beq b2 - //SEG184 [87] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG183 [87] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG185 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG186 [87] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG187 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG184 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG185 [87] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG186 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG188 play_move_rotate::@return + //SEG187 play_move_rotate::@return breturn: - //SEG189 [88] return + //SEG188 [88] return rts - //SEG190 play_move_rotate::@2 + //SEG189 play_move_rotate::@2 b2: - //SEG191 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 + //SEG190 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_plus_vbuc1 lda #$10 clc adc current_orientation sta _2 - //SEG192 [90] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG191 [90] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _2 sta orientation - //SEG193 [91] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG192 [91] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG194 [91] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG193 [91] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG195 play_move_rotate::@4 + //SEG194 play_move_rotate::@4 b4: - //SEG196 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG195 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG197 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG196 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos sta collision.ypos - //SEG198 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG197 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta collision.orientation - //SEG199 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG198 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_75 lda current_piece+1 sta current_piece_75+1 - //SEG200 [96] call collision - //SEG201 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + //SEG199 [96] call collision + //SEG200 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] collision_from_b4: - //SEG202 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG203 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG204 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG205 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG201 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG202 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG203 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG204 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision - //SEG206 [97] (byte) collision::return#13 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG205 [97] (byte) collision::return#13 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return_13 jmp b14 - //SEG207 play_move_rotate::@14 + //SEG206 play_move_rotate::@14 b14: - //SEG208 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 -- vbuz1=vbuz2 + //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 -- vbuz1=vbuz2 lda collision.return_13 sta _6 - //SEG209 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG208 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuz1_neq_vbuc1_then_la1 lda _6 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG210 play_move_rotate::@11 + //SEG209 play_move_rotate::@11 b11: - //SEG211 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG210 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG212 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + //SEG211 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -6954,50 +7640,50 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG213 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG212 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG214 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG215 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG216 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 + //SEG213 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG214 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG215 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG217 play_move_rotate::@1 + //SEG216 play_move_rotate::@1 b1: - //SEG218 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 + //SEG217 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuz1=vbuz2_minus_vbuc1 lda current_orientation sec sbc #$10 sta _4 - //SEG219 [103] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 + //SEG218 [103] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuz2_band_vbuc1 lda #$3f and _4 sta orientation jmp b4_from_b1 } -//SEG220 collision +//SEG219 collision collision: { - .label _7 = $64 + .label _7 = $65 .label xpos = $19 .label ypos = $18 .label orientation = $17 - .label return = $6b - .label return_1 = $67 - .label piece_gfx = $5f + .label return = $6c + .label return_1 = $68 + .label piece_gfx = $60 .label ypos2 = $1a - .label playfield_line = $61 - .label i = $63 + .label playfield_line = $62 + .label i = $64 .label col = $1d .label c = $1e .label l = $1b - .label return_12 = $65 - .label return_13 = $5c + .label return_12 = $66 + .label return_13 = $5d .label i_2 = $1c .label return_14 = $1f .label i_3 = $1c .label i_11 = $1c .label i_13 = $1c - //SEG221 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 + //SEG220 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz2_plus_vbuz3 lda orientation clc adc current_piece_15 @@ -7005,1280 +7691,1296 @@ collision: { lda #0 adc current_piece_15+1 sta piece_gfx+1 - //SEG222 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG221 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda ypos asl sta ypos2 - //SEG223 [107] phi from collision to collision::@1 [phi:collision->collision::@1] + //SEG222 [107] phi from collision to collision::@1 [phi:collision->collision::@1] b1_from_collision: - //SEG224 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG223 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG225 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG224 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG226 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG225 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy jmp b1 - //SEG227 collision::@1 + //SEG226 collision::@1 b1: - //SEG228 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG227 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG229 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG228 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG230 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG229 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] b2_from_b1: - //SEG231 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuz1=vbuc1 + //SEG230 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG232 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG233 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG231 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG232 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy jmp b2 - //SEG234 collision::@2 + //SEG233 collision::@2 b2: - //SEG235 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG234 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG236 [112] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG235 [112] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG237 collision::@8 + //SEG236 collision::@8 b8: - //SEG238 [113] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG237 [113] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG239 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG238 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] breturn_from_b8: - //SEG240 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuz1=vbuc1 + //SEG239 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_BOTTOM sta return_14 jmp breturn - //SEG241 collision::@return + //SEG240 collision::@return breturn: - //SEG242 [115] return + //SEG241 [115] return rts - //SEG243 collision::@4 + //SEG242 collision::@4 b4: - //SEG244 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG243 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and col sta _7 - //SEG245 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuz1_eq_0_then_la1 + //SEG244 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuz1_eq_0_then_la1 lda _7 cmp #0 beq b5 - //SEG246 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG245 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] breturn_from_b4: - //SEG247 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuz1=vbuc1 + //SEG246 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_LEFT sta return_14 jmp breturn - //SEG248 collision::@5 + //SEG247 collision::@5 b5: - //SEG249 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG248 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG250 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG249 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] breturn_from_b5: - //SEG251 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuz1=vbuc1 + //SEG250 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_RIGHT sta return_14 jmp breturn - //SEG252 collision::@6 + //SEG251 collision::@6 b6: - //SEG253 [119] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG252 [119] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG254 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG253 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] breturn_from_b6: - //SEG255 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuz1=vbuc1 + //SEG254 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_PLAYFIELD sta return_14 jmp breturn - //SEG256 collision::@3 + //SEG255 collision::@3 b3: - //SEG257 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG256 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG258 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuz1=_inc_vbuz1 + //SEG257 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG259 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuz1_neq_vbuc1_then_la1 + //SEG258 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b21 jmp b17 - //SEG260 collision::@17 + //SEG259 collision::@17 b17: - //SEG261 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG260 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG262 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG261 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG263 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG262 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG264 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG263 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] breturn_from_b17: - //SEG265 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuz1=vbuc1 + //SEG264 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuz1=vbuc1 lda #COLLISION_NONE sta return_14 jmp breturn - //SEG266 collision::@20 + //SEG265 collision::@20 b20: - //SEG267 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG266 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG268 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG267 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] b1_from_b20: - //SEG269 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG270 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG271 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG268 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG269 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG270 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG272 collision::@21 + //SEG271 collision::@21 b21: - //SEG273 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG272 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG274 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG273 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] b2_from_b21: - //SEG275 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG276 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG277 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG274 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG275 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG276 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG278 play_move_leftright +//SEG277 play_move_leftright play_move_leftright: { - .label _4 = $66 - .label _8 = $68 - .label key_event = $4f - .label return = $50 + .label _4 = $67 + .label _8 = $69 + .label key_event = $50 + .label return = $51 .label return_2 = $20 - //SEG279 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 + //SEG278 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuz1_eq_vbuc1_then_la1 lda key_event cmp #KEY_COMMA beq b1 jmp b6 - //SEG280 play_move_leftright::@6 + //SEG279 play_move_leftright::@6 b6: - //SEG281 [129] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG280 [129] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG282 play_move_leftright::@7 + //SEG281 play_move_leftright::@7 b7: - //SEG283 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG282 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty collision.xpos - //SEG284 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG283 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos sta collision.ypos - //SEG285 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuz1=vbuz2 + //SEG284 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuz1=vbuz2 lda current_orientation sta collision.orientation - //SEG286 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG285 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_74 lda current_piece+1 sta current_piece_74+1 - //SEG287 [134] call collision - //SEG288 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + //SEG286 [134] call collision + //SEG287 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] collision_from_b7: - //SEG289 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG290 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG291 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG292 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG288 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG289 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG290 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG291 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy jsr collision - //SEG293 [135] (byte) collision::return#12 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG292 [135] (byte) collision::return#12 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return_12 jmp b15 - //SEG294 play_move_leftright::@15 + //SEG293 play_move_leftright::@15 b15: - //SEG295 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 -- vbuz1=vbuz2 + //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 -- vbuz1=vbuz2 lda collision.return_12 sta _4 - //SEG296 [137] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG295 [137] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _4 cmp #COLLISION_NONE bne breturn_from_b15 jmp b8 - //SEG297 play_move_leftright::@8 + //SEG296 play_move_leftright::@8 b8: - //SEG298 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + //SEG297 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG299 [139] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG298 [139] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] breturn_from_b11: breturn_from_b8: - //SEG300 [139] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG301 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG299 [139] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG300 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #1 sta return_2 jmp breturn - //SEG302 [139] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG301 [139] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] breturn_from_b14: breturn_from_b15: breturn_from_b6: - //SEG303 [139] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG304 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 + //SEG302 [139] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG303 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG305 play_move_leftright::@return + //SEG304 play_move_leftright::@return breturn: - //SEG306 [140] return + //SEG305 [140] return rts - //SEG307 play_move_leftright::@1 + //SEG306 play_move_leftright::@1 b1: - //SEG308 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG307 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx collision.xpos - //SEG309 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 + //SEG308 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuz1=vbuz2 lda current_ypos sta collision.ypos - //SEG310 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuz1=vbuz2 + //SEG309 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuz1=vbuz2 lda current_orientation sta collision.orientation - //SEG311 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG310 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_73 lda current_piece+1 sta current_piece_73+1 - //SEG312 [145] call collision - //SEG313 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + //SEG311 [145] call collision + //SEG312 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] collision_from_b1: - //SEG314 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG315 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG316 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG317 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy + //SEG313 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG314 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG315 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG316 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy jsr collision - //SEG318 [146] (byte) collision::return#1 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG317 [146] (byte) collision::return#1 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return_1 jmp b14 - //SEG319 play_move_leftright::@14 + //SEG318 play_move_leftright::@14 b14: - //SEG320 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 -- vbuz1=vbuz2 + //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 -- vbuz1=vbuz2 lda collision.return_1 sta _8 - //SEG321 [148] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 + //SEG320 [148] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuz1_neq_vbuc1_then_la1 lda _8 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG322 play_move_leftright::@11 + //SEG321 play_move_leftright::@11 b11: - //SEG323 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + //SEG322 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG324 play_move_down +//SEG323 play_move_down play_move_down: { - .label _2 = $6a - .label _12 = $6c - .label key_event = $4b - .label return = $4c + .label _2 = $6b + .label _12 = $6d + .label key_event = $4c + .label return = $4d .label movedown = $21 .label return_3 = $29 - //SEG325 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + //SEG324 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG326 [151] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG325 [151] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuz1_neq_vbuc1_then_la1 lda key_event cmp #KEY_SPACE bne b1_from_play_move_down - //SEG327 [152] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG326 [152] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] b8_from_play_move_down: jmp b8 - //SEG328 play_move_down::@8 + //SEG327 play_move_down::@8 b8: - //SEG329 [153] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG328 [153] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG330 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG329 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuz1=vbuc1 lda #1 sta movedown jmp b1 - //SEG331 [153] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG330 [153] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG332 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 + //SEG331 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuz1=vbuc1 lda #0 sta movedown jmp b1 - //SEG333 play_move_down::@1 + //SEG332 play_move_down::@1 b1: - //SEG334 [154] call keyboard_event_pressed - //SEG335 [237] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG333 [154] call keyboard_event_pressed + //SEG334 [237] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG336 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG335 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG337 [155] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG336 [155] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_12 jmp b17 - //SEG338 play_move_down::@17 + //SEG337 play_move_down::@17 b17: - //SEG339 [156] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 + //SEG338 [156] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_12 sta _2 - //SEG340 [157] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 + //SEG339 [157] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b17 jmp b9 - //SEG341 play_move_down::@9 + //SEG340 play_move_down::@9 b9: - //SEG342 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG341 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b9 jmp b10 - //SEG343 play_move_down::@10 + //SEG342 play_move_down::@10 b10: - //SEG344 [159] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 + //SEG343 [159] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuz1=_inc_vbuz1 inc movedown - //SEG345 [160] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG344 [160] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG346 [160] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG345 [160] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG347 play_move_down::@2 + //SEG346 play_move_down::@2 b2: - //SEG348 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG347 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG349 play_move_down::@11 + //SEG348 play_move_down::@11 b11: - //SEG350 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 + //SEG349 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuz1=_inc_vbuz1 inc movedown - //SEG351 [163] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG350 [163] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG352 [163] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG351 [163] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG353 play_move_down::@4 + //SEG352 play_move_down::@4 b4: - //SEG354 [164] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 + //SEG353 [164] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuz1_eq_0_then_la1 lda movedown cmp #0 beq breturn_from_b4 jmp b12 - //SEG355 play_move_down::@12 + //SEG354 play_move_down::@12 b12: - //SEG356 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG355 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_ypos iny sty collision.ypos - //SEG357 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG356 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG358 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuz1=vbuz2 + //SEG357 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuz1=vbuz2 lda current_orientation sta collision.orientation - //SEG359 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG358 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece sta current_piece_72 lda current_piece+1 sta current_piece_72+1 - //SEG360 [169] call collision - //SEG361 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] + //SEG359 [169] call collision + //SEG360 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: - //SEG362 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG363 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG364 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG365 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG361 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG362 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG363 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG364 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG366 [170] (byte) collision::return#0 ← (byte) collision::return#14 -- vbuz1=vbuz2 + //SEG365 [170] (byte) collision::return#0 ← (byte) collision::return#14 -- vbuz1=vbuz2 lda collision.return_14 sta collision.return jmp b18 - //SEG367 play_move_down::@18 + //SEG366 play_move_down::@18 b18: - //SEG368 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 -- vbuz1=vbuz2 + //SEG367 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 -- vbuz1=vbuz2 lda collision.return sta _12 - //SEG369 [172] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 + //SEG368 [172] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuz1_eq_vbuc1_then_la1 lda _12 cmp #COLLISION_NONE beq b6 - //SEG370 [173] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG369 [173] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG371 play_move_down::@13 + //SEG370 play_move_down::@13 b13: - //SEG372 [174] call lock_current + //SEG371 [174] call lock_current jsr lock_current - //SEG373 [175] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG372 [175] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG374 play_move_down::@19 + //SEG373 play_move_down::@19 b19: - //SEG375 [176] call remove_lines - //SEG376 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] + //SEG374 [176] call remove_lines + //SEG375 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] remove_lines_from_b19: jsr remove_lines - //SEG377 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG376 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] b20_from_b19: jmp b20 - //SEG378 play_move_down::@20 + //SEG377 play_move_down::@20 b20: - //SEG379 [178] call spawn_current - //SEG380 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] + //SEG378 [178] call spawn_current + //SEG379 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] spawn_current_from_b20: jsr spawn_current - //SEG381 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG380 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG382 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG381 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG383 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG384 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG382 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG383 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG385 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG386 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG384 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG385 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG387 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG388 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG386 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG387 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG389 play_move_down::@7 + //SEG388 play_move_down::@7 b7: - //SEG390 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG389 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG391 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG392 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG393 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG394 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG395 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG396 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG397 [181] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG390 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG391 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG392 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG393 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG394 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG395 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG396 [181] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG398 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuz1=vbuc1 + //SEG397 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuz1=vbuc1 lda #1 sta return_3 jmp breturn - //SEG399 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG398 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG400 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG401 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG402 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG403 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG404 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG405 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG406 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG407 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuz1=vbuc1 + //SEG399 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG400 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG401 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG402 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG403 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG404 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG405 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG406 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuz1=vbuc1 lda #0 sta return_3 jmp breturn - //SEG408 play_move_down::@return + //SEG407 play_move_down::@return breturn: - //SEG409 [182] return + //SEG408 [182] return rts - //SEG410 play_move_down::@6 + //SEG409 play_move_down::@6 b6: - //SEG411 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG410 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG412 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG411 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG413 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG414 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG415 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG416 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG417 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG418 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG412 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG413 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG414 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG415 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG416 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG417 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG419 spawn_current +//SEG418 spawn_current spawn_current: { - .label _1 = $6f - .label _3 = $6d + .label _1 = $70 + .label _3 = $6e .label piece_idx = $2a - //SEG420 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] + //SEG419 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] b1_from_spawn_current: - //SEG421 [185] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuz1=vbuc1 + //SEG420 [185] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuz1=vbuc1 lda #7 sta piece_idx jmp b1 - //SEG422 spawn_current::@1 + //SEG421 spawn_current::@1 b1: - //SEG423 [186] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 + //SEG422 [186] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuz1_eq_vbuc1_then_la1 lda piece_idx cmp #7 beq b2_from_b1 jmp b3 - //SEG424 spawn_current::@3 + //SEG423 spawn_current::@3 b3: - //SEG425 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG424 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda piece_idx asl sta _3 - //SEG426 [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG425 [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG427 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG426 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy piece_idx lda PIECES_COLORS,y sta current_piece_color jmp breturn - //SEG428 spawn_current::@return + //SEG427 spawn_current::@return breturn: - //SEG429 [190] return + //SEG428 [190] return rts - //SEG430 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + //SEG429 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] b2_from_b1: jmp b2 - //SEG431 spawn_current::@2 + //SEG430 spawn_current::@2 b2: - //SEG432 [192] call sid_rnd + //SEG431 [192] call sid_rnd jsr sid_rnd - //SEG433 [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 + //SEG432 [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 -- vbuz1=vbuz2 lda sid_rnd.return sta sid_rnd.return_2 jmp b7 - //SEG434 spawn_current::@7 + //SEG433 spawn_current::@7 b7: - //SEG435 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 + //SEG434 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 -- vbuz1=vbuz2 lda sid_rnd.return_2 sta _1 - //SEG436 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG435 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and _1 sta piece_idx - //SEG437 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + //SEG436 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] b1_from_b7: - //SEG438 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + //SEG437 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy jmp b1 } -//SEG439 sid_rnd +//SEG438 sid_rnd sid_rnd: { - .label return = $70 - .label return_2 = $6e - //SEG440 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 + .label return = $71 + .label return_2 = $6f + //SEG439 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuz1=_deref_pbuc1 lda SID_VOICE3_OSC sta return jmp breturn - //SEG441 sid_rnd::@return + //SEG440 sid_rnd::@return breturn: - //SEG442 [197] return + //SEG441 [197] return rts } -//SEG443 remove_lines +//SEG442 remove_lines remove_lines: { - .label c = $71 + .label c = $72 .label r = $2c .label w = $2f .label x = $2d .label y = $2b .label full = $2e - //SEG444 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] + //SEG443 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] b1_from_remove_lines: - //SEG445 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG444 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG446 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuz1=vbuc1 + //SEG445 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta w - //SEG447 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuz1=vbuc1 + //SEG446 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuz1=vbuc1 lda #PLAYFIELD_LINES*PLAYFIELD_COLS-1 sta r jmp b1 - //SEG448 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + //SEG447 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] b1_from_b4: - //SEG449 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy - //SEG450 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy - //SEG451 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + //SEG448 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy + //SEG449 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy + //SEG450 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy jmp b1 - //SEG452 remove_lines::@1 + //SEG451 remove_lines::@1 b1: - //SEG453 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] + //SEG452 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] b2_from_b1: - //SEG454 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG453 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG455 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG454 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG456 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy - //SEG457 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy + //SEG455 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy + //SEG456 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy jmp b2 - //SEG458 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + //SEG457 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] b2_from_b3: - //SEG459 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy - //SEG460 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy - //SEG461 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy - //SEG462 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + //SEG458 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy + //SEG459 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy + //SEG460 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy + //SEG461 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy jmp b2 - //SEG463 remove_lines::@2 + //SEG462 remove_lines::@2 b2: - //SEG464 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG463 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy r lda playfield,y sta c - //SEG465 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuz1=_dec_vbuz1 + //SEG464 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuz1=_dec_vbuz1 dec r - //SEG466 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG465 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b17_from_b2 - //SEG467 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] + //SEG466 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] b3_from_b2: - //SEG468 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG469 remove_lines::@3 + //SEG468 remove_lines::@3 b3: - //SEG470 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda c ldy w sta playfield,y - //SEG471 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuz1=_dec_vbuz1 + //SEG470 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuz1=_dec_vbuz1 dec w - //SEG472 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG471 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG473 [208] if((byte) remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [208] if((byte) remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG474 remove_lines::@9 + //SEG473 remove_lines::@9 b9: - //SEG475 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG474 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG476 remove_lines::@10 + //SEG475 remove_lines::@10 b10: - //SEG477 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG476 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc w sta w - //SEG478 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + //SEG477 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG479 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy + //SEG478 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy jmp b4 - //SEG480 remove_lines::@4 + //SEG479 remove_lines::@4 b4: - //SEG481 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG480 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG482 [213] if((byte) remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG481 [213] if((byte) remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG483 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + //SEG482 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG484 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy + //SEG483 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy jmp b5 - //SEG485 remove_lines::@5 + //SEG484 remove_lines::@5 b5: - //SEG486 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 + //SEG485 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuz1_neq_vbuc1_then_la1 lda w cmp #$ff bne b6 jmp breturn - //SEG487 remove_lines::@return + //SEG486 remove_lines::@return breturn: - //SEG488 [216] return + //SEG487 [216] return rts - //SEG489 remove_lines::@6 + //SEG488 remove_lines::@6 b6: - //SEG490 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy w lda #0 sta playfield,y - //SEG491 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuz1=_dec_vbuz1 + //SEG490 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuz1=_dec_vbuz1 dec w jmp b5_from_b6 - //SEG492 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + //SEG491 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] b17_from_b2: jmp b17 - //SEG493 remove_lines::@17 + //SEG492 remove_lines::@17 b17: - //SEG494 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + //SEG493 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] b3_from_b17: - //SEG495 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy + //SEG494 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy jmp b3 } -//SEG496 lock_current +//SEG495 lock_current lock_current: { .label ypos2 = $30 - .label playfield_line = $72 + .label playfield_line = $73 .label col = $33 - .label i = $74 + .label i = $75 .label c = $34 .label l = $31 .label i_2 = $32 .label i_3 = $32 .label i_7 = $32 .label i_9 = $32 - //SEG497 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG496 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda current_ypos asl sta ypos2 - //SEG498 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG497 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG499 [221] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 + //SEG498 [221] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG500 [221] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG499 [221] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG501 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG500 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy jmp b1 - //SEG502 lock_current::@1 + //SEG501 lock_current::@1 b1: - //SEG503 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG502 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG504 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG503 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG505 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG504 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG506 [224] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuz1=vbuc1 + //SEG505 [224] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG507 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG508 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG506 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG507 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy jmp b2 - //SEG509 lock_current::@2 + //SEG508 lock_current::@2 b2: - //SEG510 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG509 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG511 [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG510 [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG512 lock_current::@4 + //SEG511 lock_current::@4 b4: - //SEG513 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG512 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG514 lock_current::@3 + //SEG513 lock_current::@3 b3: - //SEG515 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG514 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG516 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 + //SEG515 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG517 [230] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 + //SEG516 [230] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #4 bne b8 jmp b5 - //SEG518 lock_current::@5 + //SEG517 lock_current::@5 b5: - //SEG519 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG518 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG520 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG519 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG521 [233] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG520 [233] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG522 lock_current::@return + //SEG521 lock_current::@return breturn: - //SEG523 [234] return + //SEG522 [234] return rts - //SEG524 lock_current::@7 + //SEG523 lock_current::@7 b7: - //SEG525 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG524 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG526 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG525 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] b1_from_b7: - //SEG527 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG528 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG529 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG526 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG527 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG528 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy jmp b1 - //SEG530 lock_current::@8 + //SEG529 lock_current::@8 b8: - //SEG531 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG530 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG532 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG531 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] b2_from_b8: - //SEG533 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG534 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG535 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG532 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG533 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG534 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy jmp b2 } -//SEG536 keyboard_event_pressed +//SEG535 keyboard_event_pressed keyboard_event_pressed: { - .label _0 = $75 - .label _1 = $77 - .label return = $7c - .label return_1 = $7e - .label return_2 = $80 - .label row_bits = $76 - .label return_10 = $82 + .label _0 = $76 + .label _1 = $78 + .label return = $7d + .label return_1 = $7f + .label return_2 = $81 + .label row_bits = $77 + .label return_10 = $83 .label keycode = $35 - .label return_11 = $78 - .label return_12 = $69 - //SEG537 [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 + .label return_11 = $79 + .label return_12 = $6a + //SEG536 [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuz1=vbuz2_ror_3 lda keycode lsr lsr lsr sta _0 - //SEG538 [239] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG537 [239] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda keyboard_scan_values,y sta row_bits - //SEG539 [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG538 [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and keycode sta _1 - //SEG540 [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG539 [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_bits ldy _1 and keyboard_matrix_col_bitmask,y sta return_11 jmp breturn - //SEG541 keyboard_event_pressed::@return + //SEG540 keyboard_event_pressed::@return breturn: - //SEG542 [242] return + //SEG541 [242] return rts } -//SEG543 keyboard_event_get +//SEG542 keyboard_event_get keyboard_event_get: { .label return = $36 - .label return_3 = $49 - //SEG544 [243] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + .label return_3 = $4a + //SEG543 [243] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG545 keyboard_event_get::@3 + //SEG544 keyboard_event_get::@3 b3: - //SEG546 [244] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG545 [244] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG547 [245] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG546 [245] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuz1=pbuc1_derefidx_vbuz2 ldy keyboard_events_size lda keyboard_events,y sta return - //SEG548 [246] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG547 [246] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG549 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG550 [246] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG548 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG549 [246] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG551 [246] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG550 [246] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG552 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG553 [246] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 + //SEG551 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG552 [246] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1 lda #$ff sta return jmp breturn - //SEG554 keyboard_event_get::@return + //SEG553 keyboard_event_get::@return breturn: - //SEG555 [247] return + //SEG554 [247] return rts } -//SEG556 keyboard_event_scan +//SEG555 keyboard_event_scan keyboard_event_scan: { - .label _3 = $84 - .label _4 = $85 - .label _11 = $87 - .label _14 = $7d - .label _18 = $7f - .label _22 = $81 - .label _26 = $83 - .label row_scan = $7b - .label keycode = $39 + .label _3 = $86 + .label _4 = $87 + .label _11 = $89 + .label _14 = $7e + .label _18 = $80 + .label _22 = $82 + .label _26 = $84 + .label row_scan = $7c + .label keycode = $3a .label row = $37 - .label col = $38 - .label event_type = $86 - //SEG557 [249] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + .label col = $39 + .label event_type = $88 + //SEG556 [249] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG558 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG559 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG557 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG558 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG560 [249] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG559 [249] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG561 [249] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG560 [249] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG562 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG563 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG564 [249] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG561 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG562 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG563 [249] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG565 keyboard_event_scan::@1 + //SEG564 keyboard_event_scan::@1 b1: - //SEG566 [250] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 + //SEG565 [250] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuz1=vbuz2 lda row sta keyboard_matrix_read.rowid - //SEG567 [251] call keyboard_matrix_read + //SEG566 [251] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG568 [252] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 + //SEG567 [252] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 -- vbuz1=vbuz2 lda keyboard_matrix_read.return sta keyboard_matrix_read.return_2 jmp b25 - //SEG569 keyboard_event_scan::@25 + //SEG568 keyboard_event_scan::@25 b25: - //SEG570 [253] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 + //SEG569 [253] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuz2 lda keyboard_matrix_read.return_2 sta row_scan - //SEG571 [254] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG570 [254] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG572 keyboard_event_scan::@13 + //SEG571 keyboard_event_scan::@13 b13: - //SEG573 [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG572 [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG574 [256] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG573 [256] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG575 [256] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG576 [256] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG574 [256] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG575 [256] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG577 keyboard_event_scan::@3 + //SEG576 keyboard_event_scan::@3 b3: - //SEG578 [257] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG577 [257] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG579 [258] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG578 [258] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG580 [259] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG579 [259] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG581 keyboard_event_scan::@20 + //SEG580 keyboard_event_scan::@20 b20: - //SEG582 [260] call keyboard_event_pressed - //SEG583 [237] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG581 [260] call keyboard_event_pressed + //SEG582 [237] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG584 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG583 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG585 [261] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG584 [261] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return jmp b26 - //SEG586 keyboard_event_scan::@26 + //SEG585 keyboard_event_scan::@26 b26: - //SEG587 [262] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 + //SEG586 [262] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 -- vbuz1=vbuz2 lda keyboard_event_pressed.return sta _14 - //SEG588 [263] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 + //SEG587 [263] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuz1_eq_0_then_la1 lda _14 cmp #0 beq b9_from_b26 - //SEG589 [264] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG588 [264] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG590 keyboard_event_scan::@21 + //SEG589 keyboard_event_scan::@21 b21: - //SEG591 [265] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG590 [265] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - b9_from_b26: + //SEG591 [265] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + lda #0|KEY_MODIFIER_LSHIFT + sta keyboard_modifiers jmp b9 - //SEG592 keyboard_event_scan::@9 + //SEG592 [265] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + b9_from_b26: + //SEG593 [265] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1 + lda #0 + sta keyboard_modifiers + jmp b9 + //SEG594 keyboard_event_scan::@9 b9: - //SEG593 [266] call keyboard_event_pressed - //SEG594 [237] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG595 [266] call keyboard_event_pressed + //SEG596 [237] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG595 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG597 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG596 [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG598 [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_1 jmp b27 - //SEG597 keyboard_event_scan::@27 + //SEG599 keyboard_event_scan::@27 b27: - //SEG598 [268] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 + //SEG600 [268] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_1 sta _18 - //SEG599 [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 + //SEG601 [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuz1_eq_0_then_la1 lda _18 cmp #0 beq b10_from_b27 - //SEG600 [270] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] - b22_from_b27: jmp b22 - //SEG601 keyboard_event_scan::@22 + //SEG602 keyboard_event_scan::@22 b22: - //SEG602 [271] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG603 [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuz1=vbuz1_bor_vbuc1 + lda #KEY_MODIFIER_RSHIFT + ora keyboard_modifiers + sta keyboard_modifiers + //SEG604 [271] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: + //SEG605 [271] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG603 keyboard_event_scan::@10 + //SEG606 keyboard_event_scan::@10 b10: - //SEG604 [272] call keyboard_event_pressed - //SEG605 [237] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG607 [272] call keyboard_event_pressed + //SEG608 [237] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG606 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG609 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG607 [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG610 [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_2 jmp b28 - //SEG608 keyboard_event_scan::@28 + //SEG611 keyboard_event_scan::@28 b28: - //SEG609 [274] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 + //SEG612 [274] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_2 sta _22 - //SEG610 [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 + //SEG613 [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuz1_eq_0_then_la1 lda _22 cmp #0 beq b11_from_b28 - //SEG611 [276] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] - b23_from_b28: jmp b23 - //SEG612 keyboard_event_scan::@23 + //SEG614 keyboard_event_scan::@23 b23: - //SEG613 [277] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG615 [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuz1=vbuz1_bor_vbuc1 + lda #KEY_MODIFIER_CTRL + ora keyboard_modifiers + sta keyboard_modifiers + //SEG616 [277] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: + //SEG617 [277] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG614 keyboard_event_scan::@11 + //SEG618 keyboard_event_scan::@11 b11: - //SEG615 [278] call keyboard_event_pressed - //SEG616 [237] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG619 [278] call keyboard_event_pressed + //SEG620 [237] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG617 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG621 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG618 [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 + //SEG622 [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_11 sta keyboard_event_pressed.return_10 jmp b29 - //SEG619 keyboard_event_scan::@29 + //SEG623 keyboard_event_scan::@29 b29: - //SEG620 [280] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 + //SEG624 [280] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 -- vbuz1=vbuz2 lda keyboard_event_pressed.return_10 sta _26 - //SEG621 [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 + //SEG625 [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuz1_eq_0_then_la1 lda _26 cmp #0 beq breturn - //SEG622 [282] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] - b24_from_b29: jmp b24 - //SEG623 keyboard_event_scan::@24 + //SEG626 keyboard_event_scan::@24 b24: + //SEG627 [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuz1=vbuz2_bor_vbuc1 + lda #KEY_MODIFIER_COMMODORE + ora keyboard_modifiers + sta keyboard_modifiers_5 jmp breturn - //SEG624 keyboard_event_scan::@return + //SEG628 keyboard_event_scan::@return breturn: - //SEG625 [283] return + //SEG629 [283] return rts - //SEG626 [284] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG630 [284] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG627 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG628 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG629 [284] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 + //SEG631 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG632 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG633 [284] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuz1=vbuc1 lda #0 sta col jmp b4 - //SEG630 [284] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG634 [284] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG631 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG632 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG633 [284] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG635 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG636 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG637 [284] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG634 keyboard_event_scan::@4 + //SEG638 keyboard_event_scan::@4 b4: - //SEG635 [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 + //SEG639 [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3 lda row_scan ldy row eor keyboard_scan_values,y sta _3 - //SEG636 [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG640 [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda _3 ldy col and keyboard_matrix_col_bitmask,y sta _4 - //SEG637 [287] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 + //SEG641 [287] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuz1_eq_0_then_la1 lda _4 cmp #0 beq b5_from_b4 jmp b15 - //SEG638 keyboard_event_scan::@15 + //SEG642 keyboard_event_scan::@15 b15: - //SEG639 [288] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG643 [288] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG640 keyboard_event_scan::@16 + //SEG644 keyboard_event_scan::@16 b16: - //SEG641 [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 + //SEG645 [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3 lda row_scan ldy col and keyboard_matrix_col_bitmask,y sta event_type - //SEG642 [290] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 + //SEG646 [290] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuz1_eq_0_then_la1 lda event_type cmp #0 beq b7 jmp b17 - //SEG643 keyboard_event_scan::@17 + //SEG647 keyboard_event_scan::@17 b17: - //SEG644 [291] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG648 [291] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG645 [292] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG649 [292] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG646 [293] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG650 [293] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG647 [293] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG651 [293] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG648 keyboard_event_scan::@5 + //SEG652 keyboard_event_scan::@5 b5: - //SEG649 [294] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG653 [294] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG650 [295] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 + //SEG654 [295] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG651 [296] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG655 [296] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuz1_neq_vbuc1_then_la1 lda col cmp #8 bne b4_from_b5 jmp b19 - //SEG652 keyboard_event_scan::@19 + //SEG656 keyboard_event_scan::@19 b19: - //SEG653 [297] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG657 [297] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG654 keyboard_event_scan::@7 + //SEG658 keyboard_event_scan::@7 b7: - //SEG655 [298] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 + //SEG659 [298] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuz1=vbuz2_bor_vbuc1 lda #$40 ora keycode sta _11 - //SEG656 [299] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG660 [299] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuz2 lda _11 ldy keyboard_events_size sta keyboard_events,y - //SEG657 [300] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG661 [300] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG658 keyboard_matrix_read +//SEG662 keyboard_matrix_read keyboard_matrix_read: { - .label return = $88 - .label rowid = $79 - .label return_2 = $7a - //SEG659 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 + .label return = $8a + .label rowid = $7a + .label return_2 = $7b + //SEG663 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuz1 ldy rowid lda keyboard_matrix_row_bitmask,y sta CIA1_PORT_A - //SEG660 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 + //SEG664 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuz1=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff sta return jmp breturn - //SEG661 keyboard_matrix_read::@return + //SEG665 keyboard_matrix_read::@return breturn: - //SEG662 [303] return + //SEG666 [303] return rts } -//SEG663 tables_init +//SEG667 tables_init tables_init: { - .label _1 = $89 - .label pli = $3c - .label idx = $3e - .label j = $3b - //SEG664 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] + .label _1 = $8b + .label pli = $3d + .label idx = $3f + .label j = $3c + //SEG668 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] b1_from_tables_init: - //SEG665 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 + //SEG669 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG666 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG667 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuz1=vbuc1 + //SEG671 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuz1=vbuc1 lda #0 sta j jmp b1 - //SEG668 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG672 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] b1_from_b1: - //SEG669 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG670 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG671 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG673 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy + //SEG674 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy + //SEG675 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy jmp b1 - //SEG672 tables_init::@1 + //SEG676 tables_init::@1 b1: - //SEG673 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG677 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda j asl sta _1 - //SEG674 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _1 lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG675 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuz1=vbuz2 lda idx ldy j sta playfield_lines_idx,y - //SEG676 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG680 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -8286,96 +8988,99 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG677 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG681 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG678 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuz1=_inc_vbuz1 + //SEG682 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuz1=_inc_vbuz1 inc j - //SEG679 [312] if((byte) tables_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto tables_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG683 [312] if((byte) tables_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto tables_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG680 tables_init::@2 + //SEG684 tables_init::@2 b2: - //SEG681 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG685 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES jmp breturn - //SEG682 tables_init::@return + //SEG686 tables_init::@return breturn: - //SEG683 [314] return + //SEG687 [314] return rts } -//SEG684 render_init +//SEG688 render_init render_init: { - .label _5 = $8a - .label _10 = $8b - .label li = $40 - .label i = $3f - .label c = $45 - .label line = $42 - .label l = $44 - //SEG685 [316] call fill - //SEG686 [335] phi from render_init to fill [phi:render_init->fill] + .label _5 = $8c + .label _10 = $8d + .label li = $41 + .label i = $40 + .label c = $46 + .label line = $43 + .label l = $45 + //SEG689 [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BGCOL + //SEG690 [316] call fill + //SEG691 [335] phi from render_init to fill [phi:render_init->fill] fill_from_render_init: - //SEG687 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuz1=vbuc1 - lda #$a0 + //SEG692 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 208 [phi:render_init->fill#0] -- vbuz1=vbuc1 + lda #$d0 sta fill.val - //SEG688 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 + //SEG693 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG689 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] + //SEG694 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] b7_from_render_init: jmp b7 - //SEG690 render_init::@7 + //SEG695 render_init::@7 b7: - //SEG691 [318] call fill - //SEG692 [335] phi from render_init::@7 to fill [phi:render_init::@7->fill] + //SEG696 [318] call fill + //SEG697 [335] phi from render_init::@7 to fill [phi:render_init::@7->fill] fill_from_b7: - //SEG693 [335] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuz1=vbuc1 + //SEG698 [335] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuz1=vbuc1 lda #BLACK sta fill.val - //SEG694 [335] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 + //SEG699 [335] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG695 [319] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] + //SEG700 [319] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] b1_from_b7: - //SEG696 [319] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 + //SEG701 [319] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG697 [319] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuz1=vbuc1 + //SEG702 [319] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG698 [319] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG703 [319] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG699 [319] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG700 [319] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG704 [319] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG705 [319] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy jmp b1 - //SEG701 render_init::@1 + //SEG706 render_init::@1 b1: - //SEG702 [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 + //SEG707 [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1 lda i asl sta _5 - //SEG703 [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 + //SEG708 [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuz1=pbuz2 ldy _5 lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG704 [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG709 [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -8383,43 +9088,43 @@ render_init: { bcc !+ inc li+1 !: - //SEG705 [323] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 + //SEG710 [323] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG706 [324] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG711 [324] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG707 [325] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG712 [325] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG708 [325] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + //SEG713 [325] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG709 [325] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 + //SEG714 [325] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b2 - //SEG710 [325] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG715 [325] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] b2_from_b5: - //SEG711 [325] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG712 [325] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG716 [325] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG717 [325] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy jmp b2 - //SEG713 render_init::@2 + //SEG718 render_init::@2 b2: - //SEG714 [326] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG719 [326] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: - //SEG715 [326] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuz1=vbuc1 + //SEG720 [326] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuz1=vbuc1 lda #0 sta c jmp b3 - //SEG716 [326] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG721 [326] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG717 [326] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG722 [326] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy jmp b3 - //SEG718 render_init::@3 + //SEG723 render_init::@3 b3: - //SEG719 [327] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 + //SEG724 [327] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuz3 lda c clc adc line @@ -8427,20 +9132,20 @@ render_init: { lda #0 adc line+1 sta _10+1 - //SEG720 [328] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG725 [328] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_10),y - //SEG721 [329] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG726 [329] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG722 [330] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuz1_neq_vbuc1_then_la1 + //SEG727 [330] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuz1_neq_vbuc1_then_la1 lda c cmp #PLAYFIELD_COLS+1+1 bne b3_from_b3 jmp b5 - //SEG723 render_init::@5 + //SEG728 render_init::@5 b5: - //SEG724 [331] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG729 [331] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -8448,24 +9153,24 @@ render_init: { bcc !+ inc line+1 !: - //SEG725 [332] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG730 [332] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG726 [333] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG731 [333] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b2_from_b5 jmp breturn - //SEG727 render_init::@return + //SEG732 render_init::@return breturn: - //SEG728 [334] return + //SEG733 [334] return rts } -//SEG729 fill +//SEG734 fill fill: { - .label end = $8d - .label addr = $47 - .label val = $46 - //SEG730 [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + .label end = $8f + .label addr = $48 + .label val = $47 + //SEG735 [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -8473,23 +9178,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG731 [337] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG736 [337] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG732 [337] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG737 [337] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG733 fill::@1 + //SEG738 fill::@1 b1: - //SEG734 [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 + //SEG739 [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuz2 lda val ldy #0 sta (addr),y - //SEG735 [339] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG740 [339] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG736 [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG741 [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -8497,25 +9202,25 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG737 fill::@return + //SEG742 fill::@return breturn: - //SEG738 [341] return + //SEG743 [341] return rts } -//SEG739 sid_rnd_init +//SEG744 sid_rnd_init sid_rnd_init: { - //SEG740 [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG745 [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG741 [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG746 [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG742 sid_rnd_init::@return + //SEG747 sid_rnd_init::@return breturn: - //SEG743 [344] return + //SEG748 [344] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -8552,17 +9257,17 @@ sid_rnd_init: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 [ current_piece_gfx#87 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ( main:3 [ current_piece_gfx#87 current_piece_gfx#10 current_piece_color#15 spawn_current::$3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ spawn_current::$3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:110 [ spawn_current::$3 ] Statement [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ( main:3 [ current_piece_gfx#10 current_piece_color#15 current_piece#71 ] ) always clobbers reg byte a Statement [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:3 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] Statement [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ( main:3 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 keyboard_events_size#19 current_movedown_counter#15 ] ) always clobbers reg byte a Statement [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ( main:3 [ current_piece#13 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_orientation#18 current_piece_gfx#17 current_xpos#19 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ main::key_event#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ main::key_event#0 ] Statement [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ( main:3 [ current_piece#13 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#2 current_orientation#18 current_piece_gfx#17 ] ) always clobbers reg byte a Statement [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ( main:3 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#3 ] ) always clobbers reg byte a Statement [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ( main:3 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 current_ypos#71 current_xpos#96 current_piece_gfx#88 ] ) always clobbers reg byte a @@ -8584,7 +9289,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ r Statement [75] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) [ render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ( main:3::render_playfield:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] main:3::render_playfield:45 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#3 render_playfield::line#0 ] ) always clobbers reg byte a Statement [77] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) [ render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ( main:3::render_playfield:14 [ current_piece_gfx#10 current_piece_color#15 spawn_current::$3 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] main:3::render_playfield:45 [ current_piece#13 current_orientation#23 current_piece_gfx#18 current_xpos#23 current_ypos#16 current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 render_playfield::l#2 render_playfield::i#2 render_playfield::line#2 render_playfield::c#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:109 [ spawn_current::$3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:110 [ spawn_current::$3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] @@ -8592,10 +9297,10 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ r Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] Statement [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ( main:3::play_move_rotate:39 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ main::render#2 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:83 [ main::render#2 ] Statement [90] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ( main:3::play_move_rotate:39 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#2 ] ) always clobbers reg byte a Statement [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#75 ] ( main:3::play_move_rotate:39 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#3 collision::ypos#3 collision::orientation#3 current_piece#75 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] @@ -8606,7 +9311,7 @@ Statement [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte Statement [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ( main:3::play_move_rotate:39 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::$4 ] ) always clobbers reg byte a Statement [103] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 [ current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ( main:3::play_move_rotate:39 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#1 ] ) always clobbers reg byte a Statement [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 [ collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ( main:3::play_move_rotate:39::collision:96 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:3::play_move_leftright:34::collision:134 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:3::play_move_leftright:34::collision:145 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] main:3::play_move_down:29::collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::ypos#4 collision::xpos#5 collision::piece_gfx#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:78 [ main::render#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ main::render#1 ] Statement [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ( main:3::play_move_rotate:39::collision:96 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:3::play_move_leftright:34::collision:134 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:3::play_move_leftright:34::collision:145 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] main:3::play_move_down:29::collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#0 ] ) always clobbers reg byte a Statement [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ( main:3::play_move_rotate:39::collision:96 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:3::play_move_leftright:34::collision:134 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:3::play_move_leftright:34::collision:145 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] main:3::play_move_down:29::collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::i#3 collision::l#6 collision::playfield_line#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] @@ -8615,7 +9320,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ c Statement [112] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:3::play_move_rotate:39::collision:96 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:3::play_move_leftright:34::collision:134 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:3::play_move_leftright:34::collision:145 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:3::play_move_down:29::collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:99 [ collision::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:100 [ collision::i#1 ] Statement [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ( main:3::play_move_rotate:39::collision:96 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:3::play_move_leftright:34::collision:134 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:3::play_move_leftright:34::collision:145 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] main:3::play_move_down:29::collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 collision::$7 ] ) always clobbers reg byte a Statement [119] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 [ collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ( main:3::play_move_rotate:39::collision:96 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::render#2 current_piece#13 current_xpos#23 current_ypos#16 current_orientation#18 current_piece_gfx#17 play_move_rotate::orientation#3 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:3::play_move_leftright:34::collision:134 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:3::play_move_leftright:34::collision:145 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_xpos#19 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] main:3::play_move_down:29::collision:169 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 collision::xpos#5 collision::piece_gfx#0 collision::ypos2#2 collision::l#6 collision::playfield_line#0 collision::col#2 collision::c#2 collision::i#1 ] ) always clobbers reg byte a Statement [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 [ current_piece#13 current_ypos#16 current_orientation#18 current_piece#74 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ( main:3::play_move_leftright:34 [ current_piece_color#13 keyboard_events_size#16 current_movedown_counter#12 main::key_event#0 main::render#1 current_piece_gfx#17 current_piece#13 current_ypos#16 current_orientation#18 current_piece#74 collision::orientation#2 collision::ypos#2 collision::xpos#2 current_xpos#19 ] ) always clobbers reg byte a @@ -8640,20 +9345,24 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ l Statement [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:3::play_move_down:29::lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:116 [ lock_current::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:117 [ lock_current::i#1 ] Statement [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:3::play_move_down:29::lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a -Statement [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Statement [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] -Statement [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Statement [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] +Statement [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a Statement [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Statement [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 ] ) always clobbers reg byte a Statement [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] Statement [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a Statement [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a Statement [291] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 ] ) always clobbers reg byte a @@ -8662,28 +9371,29 @@ Statement [298] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_ Statement [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 ] ) always clobbers reg byte a Statement [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:3::keyboard_event_scan:23::keyboard_matrix_read:251 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a Statement [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 tables_init::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:59 [ tables_init::j#2 tables_init::j#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ tables_init::j#2 tables_init::j#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] Statement [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a Statement [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#2 tables_init::idx#2 ] ) always clobbers reg byte a Statement [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a Statement [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a Statement [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:3::tables_init:10 [ ] ) always clobbers reg byte a +Statement [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:3::render_init:8 [ ] ) always clobbers reg byte a Statement [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$5 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#2 render_init::$5 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:63 [ render_init::i#2 render_init::i#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] Statement [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 [ render_init::i#2 render_init::li#2 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a Statement [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a Statement [327] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ( main:3::render_init:8 [ render_init::line#4 render_init::l#4 render_init::c#2 render_init::$10 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] Statement [328] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ( main:3::render_init:8 [ render_init::line#4 render_init::l#4 render_init::c#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] Statement [331] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::l#4 render_init::line#1 ] ( main:3::render_init:8 [ render_init::l#4 render_init::line#1 ] ) always clobbers reg byte a Statement [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:3::render_init:8::fill:316 [ fill::addr#0 fill::val#3 fill::end#0 ] main:3::render_init:8::fill:318 [ fill::addr#0 fill::val#3 fill::end#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:70 [ fill::val#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:71 [ fill::val#3 ] Statement [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:3::render_init:8::fill:316 [ fill::val#3 fill::end#0 fill::addr#2 ] main:3::render_init:8::fill:318 [ fill::val#3 fill::end#0 fill::addr#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:70 [ fill::val#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:71 [ fill::val#3 ] Statement [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:3::render_init:8::fill:316 [ fill::val#3 fill::end#0 fill::addr#1 ] main:3::render_init:8::fill:318 [ fill::val#3 fill::end#0 fill::addr#1 ] ) always clobbers reg byte a Statement [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 [ ] ( main:3::sid_rnd_init:6 [ ] ) always clobbers reg byte a Statement [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 [ ] ( main:3::sid_rnd_init:6 [ ] ) always clobbers reg byte a @@ -8728,11 +9438,14 @@ Statement [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte Statement [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ( main:3::play_move_down:29::lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::i#3 lock_current::l#6 lock_current::playfield_line#0 ] ) always clobbers reg byte a Statement [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:3::play_move_down:29::lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a Statement [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 [ current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ( main:3::play_move_down:29::lock_current:174 [ keyboard_events_size#16 main::key_event#0 current_piece_gfx#15 current_xpos#16 current_piece_color#11 lock_current::ypos2#2 lock_current::l#6 lock_current::playfield_line#0 lock_current::col#2 lock_current::c#2 lock_current::i#1 ] ) always clobbers reg byte a -Statement [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a -Statement [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a -Statement [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a +Statement [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::keycode#5 keyboard_event_pressed::$0 ] ) always clobbers reg byte a +Statement [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a +Statement [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#11 ] ( main:3::play_move_down:29::keyboard_event_pressed:154 [ keyboard_events_size#16 main::key_event#0 current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#10 play_move_down::movedown#10 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:260 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:266 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#11 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:272 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#12 keyboard_event_pressed::return#11 ] main:3::keyboard_event_scan:23::keyboard_event_pressed:278 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#13 keyboard_event_pressed::return#11 ] ) always clobbers reg byte a Statement [254] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#29 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a Statement [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_events_size#29 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a +Statement [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#13 keyboard_modifiers#3 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#3 ] ) always clobbers reg byte a +Statement [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#13 keyboard_modifiers#4 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 keyboard_modifiers#4 ] ) always clobbers reg byte a +Statement [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#13 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_events_size#13 ] ) always clobbers reg byte a Statement [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$3 ] ) always clobbers reg byte a Statement [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::$4 ] ) always clobbers reg byte a Statement [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ( main:3::keyboard_event_scan:23 [ current_piece#11 current_orientation#15 current_piece_gfx#15 current_xpos#16 current_ypos#12 current_piece_color#11 current_movedown_counter#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#10 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a @@ -8747,6 +9460,7 @@ Statement [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byt Statement [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::idx#2 tables_init::pli#1 ] ) always clobbers reg byte a Statement [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ( main:3::tables_init:10 [ tables_init::j#2 tables_init::pli#1 tables_init::idx#1 ] ) always clobbers reg byte a Statement [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 [ ] ( main:3::tables_init:10 [ ] ) always clobbers reg byte a +Statement [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 [ ] ( main:3::render_init:8 [ ] ) always clobbers reg byte a Statement [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ render_init::i#2 render_init::li#2 render_init::$5 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#2 render_init::$5 ] ) always clobbers reg byte a Statement [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 [ render_init::i#2 render_init::li#2 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#2 ] ) always clobbers reg byte a Statement [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ render_init::i#2 render_init::li#1 ] ( main:3::render_init:8 [ render_init::i#2 render_init::li#1 ] ) always clobbers reg byte a @@ -8807,270 +9521,274 @@ Potential registers zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] : zp Z Potential registers zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] : zp ZP_BYTE:53 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:55 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:56 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] : zp ZP_BYTE:57 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:58 , reg byte x , -Potential registers zp ZP_BYTE:59 [ tables_init::j#2 tables_init::j#1 ] : zp ZP_BYTE:59 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] : zp ZP_WORD:60 , -Potential registers zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] : zp ZP_BYTE:62 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:63 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:63 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] : zp ZP_WORD:64 , -Potential registers zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] : zp ZP_WORD:66 , -Potential registers zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] : zp ZP_BYTE:68 , reg byte x , -Potential registers zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] : zp ZP_BYTE:69 , reg byte x , -Potential registers zp ZP_BYTE:70 [ fill::val#3 ] : zp ZP_BYTE:70 , reg byte x , -Potential registers zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:71 , -Potential registers zp ZP_BYTE:73 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ main::key_event#0 ] : zp ZP_BYTE:74 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ play_move_down::key_event#0 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:76 [ play_move_down::return#0 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ main::$10 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ main::render#1 ] : zp ZP_BYTE:78 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ play_move_leftright::return#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:81 [ main::$11 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:82 [ main::render#2 ] : zp ZP_BYTE:82 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:83 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:83 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:84 [ play_move_rotate::return#0 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:85 [ main::$12 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:86 [ main::render#3 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:87 [ render_current::screen_line#0 ] : zp ZP_WORD:87 , -Potential registers zp ZP_BYTE:89 [ render_current::current_cell#0 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:90 [ render_playfield::$1 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:91 [ play_move_rotate::$2 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ collision::return#13 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ play_move_rotate::$6 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ play_move_rotate::$4 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:95 [ collision::piece_gfx#0 ] : zp ZP_WORD:95 , -Potential registers zp ZP_WORD:97 [ collision::playfield_line#0 ] : zp ZP_WORD:97 , -Potential registers zp ZP_BYTE:99 [ collision::i#1 ] : zp ZP_BYTE:99 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:100 [ collision::$7 ] : zp ZP_BYTE:100 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:101 [ collision::return#12 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:102 [ play_move_leftright::$4 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:103 [ collision::return#1 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:104 [ play_move_leftright::$8 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:105 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:106 [ play_move_down::$2 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:107 [ collision::return#0 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:108 [ play_move_down::$12 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ spawn_current::$3 ] : zp ZP_BYTE:109 , reg byte x , -Potential registers zp ZP_BYTE:110 [ sid_rnd::return#2 ] : zp ZP_BYTE:110 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:111 [ spawn_current::$1 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:112 [ sid_rnd::return#0 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:113 [ remove_lines::c#0 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:114 [ lock_current::playfield_line#0 ] : zp ZP_WORD:114 , -Potential registers zp ZP_BYTE:116 [ lock_current::i#1 ] : zp ZP_BYTE:116 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:117 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:117 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:118 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:119 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:119 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:121 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:122 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:123 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:124 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:124 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:131 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:132 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:133 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:134 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:135 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:136 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:137 [ tables_init::$1 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:138 [ render_init::$5 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:139 [ render_init::$10 ] : zp ZP_WORD:139 , -Potential registers zp ZP_WORD:141 [ fill::end#0 ] : zp ZP_WORD:141 , +Potential registers zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] : zp ZP_BYTE:56 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:57 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] : zp ZP_BYTE:58 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:59 , reg byte x , +Potential registers zp ZP_BYTE:60 [ tables_init::j#2 tables_init::j#1 ] : zp ZP_BYTE:60 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] : zp ZP_WORD:61 , +Potential registers zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] : zp ZP_BYTE:63 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] : zp ZP_BYTE:64 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] : zp ZP_WORD:65 , +Potential registers zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] : zp ZP_WORD:67 , +Potential registers zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] : zp ZP_BYTE:69 , reg byte x , +Potential registers zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] : zp ZP_BYTE:70 , reg byte x , +Potential registers zp ZP_BYTE:71 [ fill::val#3 ] : zp ZP_BYTE:71 , reg byte x , +Potential registers zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp ZP_WORD:72 , +Potential registers zp ZP_BYTE:74 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ main::key_event#0 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ play_move_down::key_event#0 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ play_move_down::return#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ main::$10 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ main::render#1 ] : zp ZP_BYTE:79 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:80 [ play_move_leftright::key_event#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:81 [ play_move_leftright::return#0 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:82 [ main::$11 ] : zp ZP_BYTE:82 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:83 [ main::render#2 ] : zp ZP_BYTE:83 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:84 [ play_move_rotate::key_event#0 ] : zp ZP_BYTE:84 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:85 [ play_move_rotate::return#0 ] : zp ZP_BYTE:85 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:86 [ main::$12 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:87 [ main::render#3 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:88 [ render_current::screen_line#0 ] : zp ZP_WORD:88 , +Potential registers zp ZP_BYTE:90 [ render_current::current_cell#0 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:91 [ render_playfield::$1 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ play_move_rotate::$2 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ collision::return#13 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ play_move_rotate::$6 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ play_move_rotate::$4 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:96 [ collision::piece_gfx#0 ] : zp ZP_WORD:96 , +Potential registers zp ZP_WORD:98 [ collision::playfield_line#0 ] : zp ZP_WORD:98 , +Potential registers zp ZP_BYTE:100 [ collision::i#1 ] : zp ZP_BYTE:100 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:101 [ collision::$7 ] : zp ZP_BYTE:101 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:102 [ collision::return#12 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:103 [ play_move_leftright::$4 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:104 [ collision::return#1 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ play_move_leftright::$8 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ keyboard_event_pressed::return#12 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ play_move_down::$2 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ collision::return#0 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:109 [ play_move_down::$12 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:110 [ spawn_current::$3 ] : zp ZP_BYTE:110 , reg byte x , +Potential registers zp ZP_BYTE:111 [ sid_rnd::return#2 ] : zp ZP_BYTE:111 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:112 [ spawn_current::$1 ] : zp ZP_BYTE:112 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:113 [ sid_rnd::return#0 ] : zp ZP_BYTE:113 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:114 [ remove_lines::c#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:115 [ lock_current::playfield_line#0 ] : zp ZP_WORD:115 , +Potential registers zp ZP_BYTE:117 [ lock_current::i#1 ] : zp ZP_BYTE:117 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:118 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:119 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:120 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:120 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] : zp ZP_BYTE:121 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:122 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:122 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:123 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:123 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:124 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:125 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:125 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:126 [ keyboard_event_scan::$14 ] : zp ZP_BYTE:126 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:127 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:127 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:128 [ keyboard_event_scan::$18 ] : zp ZP_BYTE:128 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:129 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:129 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:130 [ keyboard_event_scan::$22 ] : zp ZP_BYTE:130 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:131 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:131 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:132 [ keyboard_event_scan::$26 ] : zp ZP_BYTE:132 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:133 [ keyboard_modifiers#5 ] : zp ZP_BYTE:133 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:134 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:134 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:135 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:135 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:136 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:137 [ keyboard_event_scan::$11 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:138 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:139 [ tables_init::$1 ] : zp ZP_BYTE:139 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:140 [ render_init::$5 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:141 [ render_init::$10 ] : zp ZP_WORD:141 , +Potential registers zp ZP_WORD:143 [ fill::end#0 ] : zp ZP_WORD:143 , REGISTER UPLIFT SCOPES -Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:132 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:133 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:134 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:135 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 211.74: zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:131 [ keyboard_event_scan::$26 ] -Uplift Scope [collision] 3,823.33: zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] 2,002: zp ZP_BYTE:100 [ collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] 161.77: zp ZP_BYTE:99 [ collision::i#1 ] 141.57: zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] 78.71: zp ZP_WORD:97 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:95 [ collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] 10: zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] 4: zp ZP_BYTE:92 [ collision::return#13 ] 4: zp ZP_BYTE:101 [ collision::return#12 ] 4: zp ZP_BYTE:103 [ collision::return#1 ] 4: zp ZP_BYTE:107 [ collision::return#0 ] 1.33: zp ZP_BYTE:31 [ collision::return#14 ] -Uplift Scope [lock_current] 3,823.33: zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] 1,478.5: zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] 1,401.4: zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] 233.67: zp ZP_BYTE:116 [ lock_current::i#1 ] 117.83: zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] 110.2: zp ZP_WORD:114 [ lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Uplift Scope [remove_lines] 1,915.77: zp ZP_BYTE:44 [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] 1,903.43: zp ZP_BYTE:47 [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] 1,751.75: zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] 821: zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] 600.6: zp ZP_BYTE:113 [ remove_lines::c#0 ] 165.93: zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] -Uplift Scope [render_current] 2,357.5: zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] 1,001: zp ZP_BYTE:89 [ render_current::current_cell#0 ] 164.97: zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] 100.33: zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:87 [ render_current::screen_line#0 ] -Uplift Scope [] 5,895.76: zp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 79.37: zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] 66.37: zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] 32.79: zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] 27.73: zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] 26: zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] 18.5: zp ZP_BYTE:4 [ current_ypos#22 current_ypos#71 ] 15.91: zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] 14.91: zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 ] 13.23: zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] 9.04: zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] 8.96: zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] 2.35: zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] 2,002: zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] 1,522.6: zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:90 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplift Scope [render_init] 252.5: zp ZP_BYTE:69 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:139 [ render_init::$10 ] 27.83: zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] 24.75: zp ZP_BYTE:63 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:138 [ render_init::$5 ] 19.64: zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] 18.33: zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] -Uplift Scope [spawn_current] 253.5: zp ZP_BYTE:42 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:111 [ spawn_current::$1 ] 0.18: zp ZP_BYTE:109 [ spawn_current::$3 ] -Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:122 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:121 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:136 [ keyboard_matrix_read::return#0 ] -Uplift Scope [sid_rnd] 202: zp ZP_BYTE:110 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:112 [ sid_rnd::return#0 ] -Uplift Scope [main] 22: zp ZP_BYTE:77 [ main::$10 ] 22: zp ZP_BYTE:81 [ main::$11 ] 22: zp ZP_BYTE:85 [ main::$12 ] 22: zp ZP_BYTE:86 [ main::render#3 ] 4.4: zp ZP_BYTE:78 [ main::render#1 ] 4.4: zp ZP_BYTE:82 [ main::render#2 ] 4: zp ZP_BYTE:74 [ main::key_event#0 ] -Uplift Scope [tables_init] 23.83: zp ZP_BYTE:59 [ tables_init::j#2 tables_init::j#1 ] 22: zp ZP_BYTE:137 [ tables_init::$1 ] 13.93: zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] 13.75: zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] -Uplift Scope [play_move_down] 22: zp ZP_BYTE:76 [ play_move_down::return#0 ] 20: zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] 6.5: zp ZP_BYTE:75 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:106 [ play_move_down::$2 ] 4: zp ZP_BYTE:108 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] -Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:84 [ play_move_rotate::return#0 ] 8.89: zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:83 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:91 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:93 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:94 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] -Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:80 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:79 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:102 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:104 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] -Uplift Scope [fill] 36: zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:141 [ fill::end#0 ] 1.83: zp ZP_BYTE:70 [ fill::val#3 ] -Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:105 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:117 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:119 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:124 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:73 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplift Scope [keyboard_event_scan] 2,002: zp ZP_BYTE:134 [ keyboard_event_scan::$3 ] 2,002: zp ZP_BYTE:135 [ keyboard_event_scan::$4 ] 2,002: zp ZP_BYTE:136 [ keyboard_event_scan::event_type#0 ] 2,002: zp ZP_BYTE:137 [ keyboard_event_scan::$11 ] 1,787.5: zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 1,195.02: zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] 211.74: zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 128.06: zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:126 [ keyboard_event_scan::$14 ] 4: zp ZP_BYTE:128 [ keyboard_event_scan::$18 ] 4: zp ZP_BYTE:130 [ keyboard_event_scan::$22 ] 4: zp ZP_BYTE:132 [ keyboard_event_scan::$26 ] +Uplift Scope [collision] 3,823.33: zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] 2,002: zp ZP_BYTE:101 [ collision::$7 ] 1,340.75: zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] 1,223.44: zp ZP_BYTE:30 [ collision::c#2 collision::c#1 ] 161.77: zp ZP_BYTE:100 [ collision::i#1 ] 141.57: zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] 113.62: zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] 78.71: zp ZP_WORD:98 [ collision::playfield_line#0 ] 47.76: zp ZP_WORD:96 [ collision::piece_gfx#0 ] 18: zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] 10: zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] 9.29: zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] 4: zp ZP_BYTE:93 [ collision::return#13 ] 4: zp ZP_BYTE:102 [ collision::return#12 ] 4: zp ZP_BYTE:104 [ collision::return#1 ] 4: zp ZP_BYTE:108 [ collision::return#0 ] 1.33: zp ZP_BYTE:31 [ collision::return#14 ] +Uplift Scope [lock_current] 3,823.33: zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] 1,478.5: zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] 1,401.4: zp ZP_BYTE:52 [ lock_current::c#2 lock_current::c#1 ] 233.67: zp ZP_BYTE:117 [ lock_current::i#1 ] 117.83: zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] 110.2: zp ZP_WORD:115 [ lock_current::playfield_line#0 ] 82.23: zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Uplift Scope [remove_lines] 1,915.77: zp ZP_BYTE:44 [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] 1,903.43: zp ZP_BYTE:47 [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] 1,751.75: zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] 821: zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] 600.6: zp ZP_BYTE:114 [ remove_lines::c#0 ] 165.93: zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] +Uplift Scope [render_current] 2,357.5: zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] 1,787.5: zp ZP_BYTE:13 [ render_current::c#2 render_current::c#1 ] 1,553.5: zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] 1,001: zp ZP_BYTE:90 [ render_current::current_cell#0 ] 164.97: zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] 100.33: zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] 100.18: zp ZP_WORD:88 [ render_current::screen_line#0 ] +Uplift Scope [] 5,895.76: zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] 79.37: zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] 66.37: zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] 32.79: zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] 27.73: zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] 26: zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] 20: zp ZP_BYTE:133 [ keyboard_modifiers#5 ] 18.5: zp ZP_BYTE:4 [ current_ypos#22 current_ypos#71 ] 15.91: zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] 14.91: zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 ] 13.23: zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] 11.6: zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] 9.04: zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] 8.96: zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] 2.35: zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Uplift Scope [render_playfield] 2,254.5: zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] 2,002: zp ZP_BYTE:18 [ render_playfield::c#2 render_playfield::c#1 ] 1,522.6: zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] 202: zp ZP_BYTE:91 [ render_playfield::$1 ] 185.17: zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplift Scope [render_init] 252.5: zp ZP_BYTE:70 [ render_init::c#2 render_init::c#1 ] 202: zp ZP_WORD:141 [ render_init::$10 ] 27.83: zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] 24.75: zp ZP_BYTE:64 [ render_init::i#2 render_init::i#1 ] 22: zp ZP_BYTE:140 [ render_init::$5 ] 19.64: zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] 18.33: zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] +Uplift Scope [spawn_current] 253.5: zp ZP_BYTE:42 [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] 202: zp ZP_BYTE:112 [ spawn_current::$1 ] 0.18: zp ZP_BYTE:110 [ spawn_current::$3 ] +Uplift Scope [keyboard_matrix_read] 202: zp ZP_BYTE:123 [ keyboard_matrix_read::return#2 ] 103: zp ZP_BYTE:122 [ keyboard_matrix_read::rowid#0 ] 34.33: zp ZP_BYTE:138 [ keyboard_matrix_read::return#0 ] +Uplift Scope [sid_rnd] 202: zp ZP_BYTE:111 [ sid_rnd::return#2 ] 34.33: zp ZP_BYTE:113 [ sid_rnd::return#0 ] +Uplift Scope [main] 22: zp ZP_BYTE:78 [ main::$10 ] 22: zp ZP_BYTE:82 [ main::$11 ] 22: zp ZP_BYTE:86 [ main::$12 ] 22: zp ZP_BYTE:87 [ main::render#3 ] 4.4: zp ZP_BYTE:79 [ main::render#1 ] 4.4: zp ZP_BYTE:83 [ main::render#2 ] 4: zp ZP_BYTE:75 [ main::key_event#0 ] +Uplift Scope [tables_init] 23.83: zp ZP_BYTE:60 [ tables_init::j#2 tables_init::j#1 ] 22: zp ZP_BYTE:139 [ tables_init::$1 ] 13.93: zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] 13.75: zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] +Uplift Scope [play_move_down] 22: zp ZP_BYTE:77 [ play_move_down::return#0 ] 20: zp ZP_BYTE:33 [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] 6.5: zp ZP_BYTE:76 [ play_move_down::key_event#0 ] 4: zp ZP_BYTE:107 [ play_move_down::$2 ] 4: zp ZP_BYTE:109 [ play_move_down::$12 ] 3.67: zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplift Scope [play_move_rotate] 22: zp ZP_BYTE:85 [ play_move_rotate::return#0 ] 8.89: zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] 7.5: zp ZP_BYTE:84 [ play_move_rotate::key_event#0 ] 4: zp ZP_BYTE:92 [ play_move_rotate::$2 ] 4: zp ZP_BYTE:94 [ play_move_rotate::$6 ] 4: zp ZP_BYTE:95 [ play_move_rotate::$4 ] 3.67: zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplift Scope [play_move_leftright] 22: zp ZP_BYTE:81 [ play_move_leftright::return#0 ] 7.5: zp ZP_BYTE:80 [ play_move_leftright::key_event#0 ] 4: zp ZP_BYTE:103 [ play_move_leftright::$4 ] 4: zp ZP_BYTE:105 [ play_move_leftright::$8 ] 3.67: zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplift Scope [fill] 36: zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 2.6: zp ZP_WORD:143 [ fill::end#0 ] 1.83: zp ZP_BYTE:71 [ fill::val#3 ] +Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:106 [ keyboard_event_pressed::return#12 ] 4: zp ZP_BYTE:118 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:120 [ keyboard_event_pressed::$1 ] 4: zp ZP_BYTE:125 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:127 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:129 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:131 [ keyboard_event_pressed::return#10 ] 2: zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] 1.71: zp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] 1.33: zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Uplift Scope [keyboard_event_get] 22: zp ZP_BYTE:74 [ keyboard_event_get::return#3 ] 8.33: zp ZP_BYTE:54 [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] Uplift Scope [sid_rnd_init] -Uplifting [keyboard_event_scan] best 598286 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:125 [ keyboard_event_scan::$14 ] zp ZP_BYTE:127 [ keyboard_event_scan::$18 ] zp ZP_BYTE:129 [ keyboard_event_scan::$22 ] zp ZP_BYTE:131 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 598302 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$11 ] zp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:126 [ keyboard_event_scan::$14 ] zp ZP_BYTE:128 [ keyboard_event_scan::$18 ] zp ZP_BYTE:130 [ keyboard_event_scan::$22 ] zp ZP_BYTE:132 [ keyboard_event_scan::$26 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [collision] best 583286 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] reg byte a [ collision::$7 ] zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] reg byte x [ collision::c#2 collision::c#1 ] zp ZP_BYTE:99 [ collision::i#1 ] zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] zp ZP_WORD:97 [ collision::playfield_line#0 ] zp ZP_WORD:95 [ collision::piece_gfx#0 ] zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] zp ZP_BYTE:92 [ collision::return#13 ] zp ZP_BYTE:101 [ collision::return#12 ] zp ZP_BYTE:103 [ collision::return#1 ] zp ZP_BYTE:107 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] +Uplifting [collision] best 583302 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] reg byte a [ collision::$7 ] zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] reg byte x [ collision::c#2 collision::c#1 ] zp ZP_BYTE:100 [ collision::i#1 ] zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] zp ZP_WORD:98 [ collision::playfield_line#0 ] zp ZP_WORD:96 [ collision::piece_gfx#0 ] zp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] zp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] zp ZP_BYTE:93 [ collision::return#13 ] zp ZP_BYTE:102 [ collision::return#12 ] zp ZP_BYTE:104 [ collision::return#1 ] zp ZP_BYTE:108 [ collision::return#0 ] zp ZP_BYTE:31 [ collision::return#14 ] Limited combination testing to 100 combinations of 80621568 possible. -Uplifting [lock_current] best 574286 combination zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] reg byte x [ lock_current::c#2 lock_current::c#1 ] zp ZP_BYTE:116 [ lock_current::i#1 ] zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] zp ZP_WORD:114 [ lock_current::playfield_line#0 ] zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Uplifting [lock_current] best 574302 combination zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] reg byte x [ lock_current::c#2 lock_current::c#1 ] zp ZP_BYTE:117 [ lock_current::i#1 ] zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] zp ZP_WORD:115 [ lock_current::playfield_line#0 ] zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] Limited combination testing to 100 combinations of 729 possible. -Uplifting [remove_lines] best 560586 combination reg byte y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] zp ZP_BYTE:113 [ remove_lines::c#0 ] zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] +Uplifting [remove_lines] best 560602 combination reg byte y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] zp ZP_BYTE:114 [ remove_lines::c#0 ] zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] Limited combination testing to 100 combinations of 1728 possible. -Uplifting [render_current] best 545586 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] reg byte x [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:87 [ render_current::screen_line#0 ] +Uplifting [render_current] best 545602 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] reg byte x [ render_current::c#2 render_current::c#1 ] zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] reg byte a [ render_current::current_cell#0 ] zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] zp ZP_WORD:88 [ render_current::screen_line#0 ] Limited combination testing to 100 combinations of 972 possible. -Uplifting [] best 545552 combination zp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] reg byte x [ current_ypos#22 current_ypos#71 ] zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 ] zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Limited combination testing to 100 combinations of 1728 possible. -Uplifting [render_playfield] best 536152 combination zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$1 ] zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_init] best 535012 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:139 [ render_init::$10 ] zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$5 ] zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] -Uplifting [spawn_current] best 533708 combination reg byte x [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] reg byte a [ spawn_current::$1 ] zp ZP_BYTE:109 [ spawn_current::$3 ] -Uplifting [keyboard_matrix_read] best 532502 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] -Uplifting [sid_rnd] best 531599 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] -Uplifting [main] best 531359 combination reg byte a [ main::$10 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::render#3 ] zp ZP_BYTE:78 [ main::render#1 ] zp ZP_BYTE:82 [ main::render#2 ] zp ZP_BYTE:74 [ main::key_event#0 ] +Uplifting [] best 545565 combination zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] zp ZP_WORD:37 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] reg byte a [ keyboard_modifiers#5 ] reg byte x [ current_ypos#22 current_ypos#71 ] zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 ] zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] zp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Limited combination testing to 100 combinations of 20736 possible. +Uplifting [render_playfield] best 536165 combination zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] reg byte x [ render_playfield::c#2 render_playfield::c#1 ] zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] reg byte a [ render_playfield::$1 ] zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_init] best 535025 combination reg byte x [ render_init::c#2 render_init::c#1 ] zp ZP_WORD:141 [ render_init::$10 ] zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] reg byte x [ render_init::i#2 render_init::i#1 ] reg byte a [ render_init::$5 ] zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] +Uplifting [spawn_current] best 533721 combination reg byte x [ spawn_current::piece_idx#2 spawn_current::piece_idx#1 ] reg byte a [ spawn_current::$1 ] zp ZP_BYTE:110 [ spawn_current::$3 ] +Uplifting [keyboard_matrix_read] best 532515 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ] +Uplifting [sid_rnd] best 531612 combination reg byte a [ sid_rnd::return#2 ] reg byte a [ sid_rnd::return#0 ] +Uplifting [main] best 531372 combination reg byte a [ main::$10 ] reg byte a [ main::$11 ] reg byte a [ main::$12 ] reg byte a [ main::render#3 ] zp ZP_BYTE:79 [ main::render#1 ] zp ZP_BYTE:83 [ main::render#2 ] zp ZP_BYTE:75 [ main::key_event#0 ] Limited combination testing to 100 combinations of 6912 possible. -Uplifting [tables_init] best 531189 combination reg byte x [ tables_init::j#2 tables_init::j#1 ] reg byte a [ tables_init::$1 ] zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] -Uplifting [play_move_down] best 531075 combination reg byte a [ play_move_down::return#0 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::$2 ] zp ZP_BYTE:108 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] +Uplifting [tables_init] best 531202 combination reg byte x [ tables_init::j#2 tables_init::j#1 ] reg byte a [ tables_init::$1 ] zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] +Uplifting [play_move_down] best 531088 combination reg byte a [ play_move_down::return#0 ] reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ] reg byte a [ play_move_down::key_event#0 ] reg byte a [ play_move_down::$2 ] zp ZP_BYTE:109 [ play_move_down::$12 ] zp ZP_BYTE:41 [ play_move_down::return#3 ] Limited combination testing to 100 combinations of 3072 possible. -Uplifting [play_move_rotate] best 530973 combination reg byte a [ play_move_rotate::return#0 ] zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:93 [ play_move_rotate::$6 ] zp ZP_BYTE:94 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 530986 combination reg byte a [ play_move_rotate::return#0 ] zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] reg byte a [ play_move_rotate::key_event#0 ] reg byte a [ play_move_rotate::$2 ] zp ZP_BYTE:94 [ play_move_rotate::$6 ] zp ZP_BYTE:95 [ play_move_rotate::$4 ] zp ZP_BYTE:19 [ play_move_rotate::return#2 ] Limited combination testing to 100 combinations of 12288 possible. -Uplifting [play_move_leftright] best 530865 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 530878 combination reg byte a [ play_move_leftright::return#0 ] reg byte a [ play_move_leftright::key_event#0 ] reg byte a [ play_move_leftright::$4 ] reg byte a [ play_move_leftright::$8 ] zp ZP_BYTE:32 [ play_move_leftright::return#2 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [fill] best 530849 combination zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:141 [ fill::end#0 ] reg byte x [ fill::val#3 ] -Uplifting [keyboard_event_pressed] best 530829 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Uplifting [fill] best 530862 combination zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:143 [ fill::end#0 ] reg byte x [ fill::val#3 ] +Uplifting [keyboard_event_pressed] best 530842 combination reg byte a [ keyboard_event_pressed::return#12 ] reg byte a [ keyboard_event_pressed::$0 ] reg byte a [ keyboard_event_pressed::$1 ] reg byte a [ keyboard_event_pressed::return#0 ] zp ZP_BYTE:127 [ keyboard_event_pressed::return#1 ] zp ZP_BYTE:129 [ keyboard_event_pressed::return#2 ] zp ZP_BYTE:131 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] Limited combination testing to 100 combinations of 589824 possible. -Uplifting [keyboard_event_get] best 530733 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] -Uplifting [sid_rnd_init] best 530733 combination -Attempting to uplift remaining variables inzp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Uplifting [] best 530733 combination zp ZP_BYTE:58 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [keyboard_event_get] best 530746 combination reg byte a [ keyboard_event_get::return#3 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +Uplifting [sid_rnd_init] best 530746 combination +Attempting to uplift remaining variables inzp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Uplifting [] best 530746 combination zp ZP_BYTE:59 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] -Uplifting [collision] best 530733 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] +Uplifting [collision] best 530746 combination zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] -Uplifting [lock_current] best 530733 combination zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] +Uplifting [lock_current] best 530746 combination zp ZP_BYTE:50 [ lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Uplifting [render_current] best 530733 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:56 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] -Uplifting [keyboard_event_scan] best 515733 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [render_current] best 530746 combination zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:57 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] +Uplifting [keyboard_event_scan] best 515746 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] -Uplifting [remove_lines] best 515733 combination zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] +Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] -Uplifting [render_current] best 515733 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] +Uplifting [render_current] best 515746 combination zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] -Uplifting [render_playfield] best 515733 combination zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] +Uplifting [render_playfield] best 515746 combination zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] -Uplifting [lock_current] best 515733 combination zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] +Uplifting [lock_current] best 515746 combination zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] -Uplifting [collision] best 515733 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] -Uplifting [keyboard_event_scan] best 515733 combination zp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Uplifting [collision] best 515746 combination zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] +Uplifting [keyboard_event_scan] best 515746 combination zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] -Uplifting [remove_lines] best 515733 combination zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:113 [ remove_lines::c#0 ] -Uplifting [remove_lines] best 515733 combination zp ZP_BYTE:113 [ remove_lines::c#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:116 [ lock_current::i#1 ] -Uplifting [lock_current] best 515733 combination zp ZP_BYTE:116 [ lock_current::i#1 ] +Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:46 [ remove_lines::full#4 remove_lines::full#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:114 [ remove_lines::c#0 ] +Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:114 [ remove_lines::c#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:117 [ lock_current::i#1 ] +Uplifting [lock_current] best 515746 combination zp ZP_BYTE:117 [ lock_current::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] -Uplifting [keyboard_event_scan] best 515733 combination zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] +Uplifting [keyboard_event_scan] best 515746 combination zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] -Uplifting [render_playfield] best 515733 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] +Uplifting [render_playfield] best 515746 combination zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] -Uplifting [remove_lines] best 515733 combination zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] +Uplifting [remove_lines] best 515746 combination zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Uplifting [render_current] best 515733 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:99 [ collision::i#1 ] -Uplifting [collision] best 515733 combination zp ZP_BYTE:99 [ collision::i#1 ] +Uplifting [render_current] best 515746 combination zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:100 [ collision::i#1 ] +Uplifting [collision] best 515746 combination zp ZP_BYTE:100 [ collision::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Uplifting [collision] best 515733 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] -Uplifting [keyboard_event_scan] best 515733 combination zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] +Uplifting [collision] best 515746 combination zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] +Uplifting [keyboard_event_scan] best 515746 combination zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] -Uplifting [lock_current] best 515733 combination zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] +Uplifting [lock_current] best 515746 combination zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] -Uplifting [collision] best 515733 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] +Uplifting [collision] best 515746 combination zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] -Uplifting [render_current] best 515733 combination zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] +Uplifting [render_current] best 515746 combination zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] -Uplifting [lock_current] best 515733 combination zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] +Uplifting [lock_current] best 515746 combination zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] -Uplifting [] best 515733 combination zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] +Uplifting [] best 515746 combination zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] Attempting to uplift remaining variables inzp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] -Uplifting [] best 515733 combination zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] -Uplifting [render_init] best 515733 combination zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] +Uplifting [] best 515746 combination zp ZP_BYTE:40 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] +Attempting to uplift remaining variables inzp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] +Uplifting [render_init] best 515746 combination zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] -Uplifting [collision] best 515720 combination reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] +Uplifting [collision] best 515733 combination reg byte x [ collision::orientation#4 collision::orientation#0 collision::orientation#1 collision::orientation#2 collision::orientation#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] -Uplifting [] best 515720 combination zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] -Uplifting [tables_init] best 515720 combination zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] +Uplifting [] best 515733 combination zp ZP_BYTE:39 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] +Uplifting [tables_init] best 515733 combination zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] -Uplifting [] best 515720 combination zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] +Uplifting [] best 515733 combination zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] +Attempting to uplift remaining variables inzp ZP_BYTE:56 [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] +Uplifting [] best 515722 combination reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] -Uplifting [collision] best 515707 combination reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] +Uplifting [collision] best 515709 combination reg byte y [ collision::ypos#4 collision::ypos#0 collision::ypos#1 collision::ypos#2 collision::ypos#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] -Uplifting [collision] best 515707 combination zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] +Uplifting [collision] best 515709 combination zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] -Uplifting [] best 515707 combination zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] +Uplifting [] best 515709 combination zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] -Uplifting [] best 515707 combination zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] +Uplifting [] best 515709 combination zp ZP_BYTE:36 [ current_orientation#33 current_orientation#15 current_orientation#23 current_orientation#8 current_orientation#18 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Uplifting [play_move_rotate] best 515707 combination zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ main::render#1 ] -Uplifting [main] best 515707 combination zp ZP_BYTE:78 [ main::render#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:82 [ main::render#2 ] -Uplifting [main] best 515707 combination zp ZP_BYTE:82 [ main::render#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:74 [ main::key_event#0 ] -Uplifting [main] best 515707 combination zp ZP_BYTE:74 [ main::key_event#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:92 [ collision::return#13 ] -Uplifting [collision] best 515701 combination reg byte a [ collision::return#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ play_move_rotate::$6 ] -Uplifting [play_move_rotate] best 515695 combination reg byte a [ play_move_rotate::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ play_move_rotate::$4 ] -Uplifting [play_move_rotate] best 515689 combination reg byte a [ play_move_rotate::$4 ] -Attempting to uplift remaining variables inzp ZP_BYTE:101 [ collision::return#12 ] -Uplifting [collision] best 515683 combination reg byte a [ collision::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:103 [ collision::return#1 ] -Uplifting [collision] best 515677 combination reg byte a [ collision::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:107 [ collision::return#0 ] -Uplifting [collision] best 515671 combination reg byte a [ collision::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ play_move_down::$12 ] -Uplifting [play_move_down] best 515665 combination reg byte a [ play_move_down::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:125 [ keyboard_event_scan::$14 ] -Uplifting [keyboard_event_scan] best 515659 combination reg byte a [ keyboard_event_scan::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:126 [ keyboard_event_pressed::return#1 ] -Uplifting [keyboard_event_pressed] best 515653 combination reg byte a [ keyboard_event_pressed::return#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:127 [ keyboard_event_scan::$18 ] -Uplifting [keyboard_event_scan] best 515647 combination reg byte a [ keyboard_event_scan::$18 ] -Attempting to uplift remaining variables inzp ZP_BYTE:128 [ keyboard_event_pressed::return#2 ] -Uplifting [keyboard_event_pressed] best 515641 combination reg byte a [ keyboard_event_pressed::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:129 [ keyboard_event_scan::$22 ] -Uplifting [keyboard_event_scan] best 515635 combination reg byte a [ keyboard_event_scan::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:130 [ keyboard_event_pressed::return#10 ] -Uplifting [keyboard_event_pressed] best 515629 combination reg byte a [ keyboard_event_pressed::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:131 [ keyboard_event_scan::$26 ] -Uplifting [keyboard_event_scan] best 515623 combination reg byte a [ keyboard_event_scan::$26 ] +Uplifting [play_move_rotate] best 515709 combination zp ZP_BYTE:20 [ play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:79 [ main::render#1 ] +Uplifting [main] best 515709 combination zp ZP_BYTE:79 [ main::render#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:83 [ main::render#2 ] +Uplifting [main] best 515709 combination zp ZP_BYTE:83 [ main::render#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:75 [ main::key_event#0 ] +Uplifting [main] best 515709 combination zp ZP_BYTE:75 [ main::key_event#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ collision::return#13 ] +Uplifting [collision] best 515703 combination reg byte a [ collision::return#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:94 [ play_move_rotate::$6 ] +Uplifting [play_move_rotate] best 515697 combination reg byte a [ play_move_rotate::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ play_move_rotate::$4 ] +Uplifting [play_move_rotate] best 515691 combination reg byte a [ play_move_rotate::$4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:102 [ collision::return#12 ] +Uplifting [collision] best 515685 combination reg byte a [ collision::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:104 [ collision::return#1 ] +Uplifting [collision] best 515679 combination reg byte a [ collision::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ collision::return#0 ] +Uplifting [collision] best 515673 combination reg byte a [ collision::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:109 [ play_move_down::$12 ] +Uplifting [play_move_down] best 515667 combination reg byte a [ play_move_down::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:126 [ keyboard_event_scan::$14 ] +Uplifting [keyboard_event_scan] best 515661 combination reg byte a [ keyboard_event_scan::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:127 [ keyboard_event_pressed::return#1 ] +Uplifting [keyboard_event_pressed] best 515655 combination reg byte a [ keyboard_event_pressed::return#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:128 [ keyboard_event_scan::$18 ] +Uplifting [keyboard_event_scan] best 515649 combination reg byte a [ keyboard_event_scan::$18 ] +Attempting to uplift remaining variables inzp ZP_BYTE:129 [ keyboard_event_pressed::return#2 ] +Uplifting [keyboard_event_pressed] best 515643 combination reg byte a [ keyboard_event_pressed::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:130 [ keyboard_event_scan::$22 ] +Uplifting [keyboard_event_scan] best 515637 combination reg byte a [ keyboard_event_scan::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:131 [ keyboard_event_pressed::return#10 ] +Uplifting [keyboard_event_pressed] best 515631 combination reg byte a [ keyboard_event_pressed::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:132 [ keyboard_event_scan::$26 ] +Uplifting [keyboard_event_scan] best 515625 combination reg byte a [ keyboard_event_scan::$26 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ play_move_rotate::return#2 ] -Uplifting [play_move_rotate] best 515587 combination reg byte a [ play_move_rotate::return#2 ] +Uplifting [play_move_rotate] best 515589 combination reg byte a [ play_move_rotate::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:32 [ play_move_leftright::return#2 ] -Uplifting [play_move_leftright] best 515551 combination reg byte a [ play_move_leftright::return#2 ] +Uplifting [play_move_leftright] best 515553 combination reg byte a [ play_move_leftright::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ play_move_down::return#3 ] -Uplifting [play_move_down] best 515535 combination reg byte x [ play_move_down::return#3 ] +Uplifting [play_move_down] best 515537 combination reg byte x [ play_move_down::return#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Uplifting [] best 515535 combination zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] -Uplifting [keyboard_event_pressed] best 515535 combination zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:120 [ keyboard_event_pressed::return#11 ] -Uplifting [keyboard_event_pressed] best 515517 combination reg byte a [ keyboard_event_pressed::return#11 ] +Uplifting [] best 515537 combination zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] +Uplifting [keyboard_event_pressed] best 515537 combination zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:121 [ keyboard_event_pressed::return#11 ] +Uplifting [keyboard_event_pressed] best 515519 combination reg byte a [ keyboard_event_pressed::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ collision::return#14 ] -Uplifting [collision] best 515490 combination reg byte a [ collision::return#14 ] +Uplifting [collision] best 515492 combination reg byte a [ collision::return#14 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Uplifting [keyboard_event_pressed] best 515490 combination zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:109 [ spawn_current::$3 ] -Uplifting [spawn_current] best 515490 combination zp ZP_BYTE:109 [ spawn_current::$3 ] +Uplifting [keyboard_event_pressed] best 515492 combination zp ZP_BYTE:53 [ keyboard_event_pressed::keycode#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:110 [ spawn_current::$3 ] +Uplifting [spawn_current] best 515492 combination zp ZP_BYTE:110 [ spawn_current::$3 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 ] ] with [ zp ZP_BYTE:48 [ lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] ] with [ zp ZP_WORD:95 [ collision::piece_gfx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:78 [ main::render#1 ] ] with [ zp ZP_BYTE:82 [ main::render#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 ] ] with [ zp ZP_WORD:96 [ collision::piece_gfx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:79 [ main::render#1 ] ] with [ zp ZP_BYTE:83 [ main::render#2 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 ] ] with [ zp ZP_BYTE:43 [ remove_lines::y#8 remove_lines::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 remove_lines::y#8 remove_lines::y#1 ] ] with [ zp ZP_BYTE:62 [ tables_init::idx#2 tables_init::idx#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 ] ] with [ zp ZP_BYTE:68 [ render_init::l#4 render_init::l#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:109 [ spawn_current::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 remove_lines::y#8 remove_lines::y#1 ] ] with [ zp ZP_BYTE:63 [ tables_init::idx#2 tables_init::idx#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 ] ] with [ zp ZP_BYTE:69 [ render_init::l#4 render_init::l#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ current_ypos#12 current_ypos#16 current_ypos#31 current_ypos#4 lock_current::ypos2#2 lock_current::ypos2#0 lock_current::ypos2#1 remove_lines::y#8 remove_lines::y#1 tables_init::idx#2 tables_init::idx#1 render_init::l#4 render_init::l#1 ] ] with [ zp ZP_BYTE:110 [ spawn_current::$3 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 ] ] with [ zp ZP_BYTE:45 [ remove_lines::x#2 remove_lines::x#1 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ current_movedown_counter#15 current_movedown_counter#12 current_movedown_counter#10 remove_lines::x#2 remove_lines::x#1 ] ] with [ zp ZP_BYTE:49 [ lock_current::l#6 lock_current::l#1 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 ] ] with [ zp ZP_BYTE:14 [ render_playfield::l#2 render_playfield::l#1 ] ] @@ -9081,26 +9799,26 @@ Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 r Coalescing zero page register [ zp ZP_BYTE:5 [ current_xpos#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#2 lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 keyboard_event_pressed::keycode#5 ] ] with [ zp ZP_BYTE:55 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 ] ] with [ zp ZP_WORD:16 [ render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 ] ] with [ zp ZP_WORD:21 [ current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 ] ] with [ zp ZP_WORD:60 [ tables_init::pli#2 tables_init::pli#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 ] ] with [ zp ZP_WORD:64 [ render_init::li#2 render_init::li#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 ] ] with [ zp ZP_WORD:66 [ render_init::line#4 render_init::line#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:71 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:114 [ lock_current::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 ] ] with [ zp ZP_WORD:61 [ tables_init::pli#2 tables_init::pli#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 ] ] with [ zp ZP_WORD:65 [ render_init::li#2 render_init::li#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 ] ] with [ zp ZP_WORD:67 [ render_init::line#4 render_init::line#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 ] ] with [ zp ZP_WORD:72 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 ] ] with [ zp ZP_WORD:115 [ lock_current::playfield_line#0 ] ] Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 ] ] with [ zp ZP_BYTE:15 [ render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 ] ] with [ zp ZP_BYTE:25 [ collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] ] Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 ] ] with [ zp ZP_BYTE:51 [ lock_current::col#2 lock_current::col#0 lock_current::col#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 lock_current::col#1 ] ] with [ zp ZP_BYTE:57 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:113 [ remove_lines::c#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 remove_lines::c#0 ] ] with [ zp ZP_BYTE:118 [ keyboard_event_pressed::row_bits#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 lock_current::col#1 ] ] with [ zp ZP_BYTE:58 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 ] ] with [ zp ZP_BYTE:114 [ remove_lines::c#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:8 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 remove_lines::c#0 ] ] with [ zp ZP_BYTE:119 [ keyboard_event_pressed::row_bits#0 ] ] Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 ] ] with [ zp ZP_BYTE:26 [ collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] with [ zp ZP_BYTE:116 [ lock_current::i#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 lock_current::i#1 ] ] with [ zp ZP_BYTE:123 [ keyboard_event_scan::row_scan#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 ] ] with [ zp ZP_BYTE:117 [ lock_current::i#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ render_current::ypos2#2 render_current::ypos2#0 render_current::ypos2#1 collision::ypos2#2 collision::ypos2#0 collision::ypos2#1 lock_current::i#1 ] ] with [ zp ZP_BYTE:124 [ keyboard_event_scan::row_scan#0 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ render_current::l#3 render_current::l#1 ] ] with [ zp ZP_BYTE:27 [ collision::l#6 collision::l#1 ] ] Coalescing zero page register [ zp ZP_BYTE:11 [ render_current::i#2 render_current::i#1 render_current::i#4 render_current::i#8 ] ] with [ zp ZP_BYTE:28 [ collision::i#2 collision::i#3 collision::i#11 collision::i#13 ] ] Coalescing zero page register [ zp ZP_BYTE:12 [ render_current::xpos#2 render_current::xpos#1 render_current::xpos#0 ] ] with [ zp ZP_BYTE:29 [ collision::col#2 collision::col#9 collision::col#1 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 ] ] with [ zp ZP_WORD:139 [ render_init::$10 ] ] -Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 render_init::$10 ] ] with [ zp ZP_WORD:141 [ fill::end#0 ] ] -Coalescing zero page register [ zp ZP_WORD:87 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:97 [ collision::playfield_line#0 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 ] ] with [ zp ZP_WORD:141 [ render_init::$10 ] ] +Coalescing zero page register [ zp ZP_WORD:34 [ current_piece#23 current_piece#76 current_piece#11 current_piece#13 current_piece#71 render_init::$10 ] ] with [ zp ZP_WORD:143 [ fill::end#0 ] ] +Coalescing zero page register [ zp ZP_WORD:88 [ render_current::screen_line#0 ] ] with [ zp ZP_WORD:98 [ collision::playfield_line#0 ] ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ current_xpos#63 current_xpos#96 render_playfield::l#2 render_playfield::l#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 remove_lines::full#4 remove_lines::full#2 lock_current::i#2 lock_current::i#3 lock_current::i#7 lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ current_piece_gfx#64 current_piece_gfx#87 current_piece_gfx#88 render_playfield::line#2 render_playfield::line#0 render_playfield::line#1 current_piece#15 current_piece#72 current_piece#73 current_piece#74 current_piece#75 collision::piece_gfx#0 tables_init::pli#2 tables_init::pli#1 render_init::li#2 render_init::li#1 render_init::line#4 render_init::line#1 fill::addr#2 fill::addr#0 fill::addr#1 lock_current::playfield_line#0 ] Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ current_piece_color#67 current_piece_color#75 current_piece_color#76 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 collision::xpos#5 collision::xpos#0 collision::xpos#1 collision::xpos#2 collision::xpos#3 lock_current::col#2 lock_current::col#0 lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 remove_lines::c#0 keyboard_event_pressed::row_bits#0 ] @@ -9113,11 +9831,11 @@ Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:14 [ current_orientation#33 current_ori Allocated (was zp ZP_WORD:37) zp ZP_WORD:15 [ current_piece_gfx#29 current_piece_gfx#15 current_piece_gfx#18 current_piece_gfx#10 current_piece_gfx#8 current_piece_gfx#17 ] Allocated (was zp ZP_BYTE:39) zp ZP_BYTE:17 [ current_xpos#36 current_xpos#16 current_xpos#23 current_xpos#9 current_xpos#19 current_xpos#7 ] Allocated (was zp ZP_BYTE:40) zp ZP_BYTE:18 [ current_piece_color#23 current_piece_color#11 current_piece_color#13 current_piece_color#15 ] -Allocated (was zp ZP_BYTE:58) zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] -Allocated (was zp ZP_BYTE:74) zp ZP_BYTE:20 [ main::key_event#0 ] -Allocated (was zp ZP_BYTE:78) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] -Allocated (was zp ZP_WORD:87) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] -Allocated (was zp ZP_BYTE:99) zp ZP_BYTE:24 [ collision::i#1 ] +Allocated (was zp ZP_BYTE:59) zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] +Allocated (was zp ZP_BYTE:75) zp ZP_BYTE:20 [ main::key_event#0 ] +Allocated (was zp ZP_BYTE:79) zp ZP_BYTE:21 [ main::render#1 main::render#2 ] +Allocated (was zp ZP_WORD:88) zp ZP_WORD:22 [ render_current::screen_line#0 collision::playfield_line#0 ] +Allocated (was zp ZP_BYTE:100) zp ZP_BYTE:24 [ collision::i#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -9127,6 +9845,7 @@ ASSEMBLER BEFORE OPTIMIZATION //SEG1 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 + .label BGCOL = $d021 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 @@ -9144,6 +9863,10 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_CTRL = $3a .const KEY_SPACE = $3c .const KEY_COMMODORE = $3d + .const KEY_MODIFIER_LSHIFT = 1 + .const KEY_MODIFIER_RSHIFT = 2 + .const KEY_MODIFIER_CTRL = 4 + .const KEY_MODIFIER_COMMODORE = 8 .label SID_VOICE3_FREQ = $d40e .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 @@ -9182,21 +9905,21 @@ ASSEMBLER BEFORE OPTIMIZATION .label current_piece_75 = 5 //SEG2 @begin bbegin: - jmp b22 -//SEG3 @22 -b22: + jmp b23 +//SEG3 @23 +b23: //SEG4 kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} -//SEG5 [2] phi from @22 to @25 [phi:@22->@25] -b25_from_b22: - jmp b25 -//SEG6 @25 -b25: +//SEG5 [2] phi from @23 to @26 [phi:@23->@26] +b26_from_b23: + jmp b26 +//SEG6 @26 +b26: //SEG7 [3] call main -//SEG8 [5] phi from @25 to main [phi:@25->main] -main_from_b25: +//SEG8 [5] phi from @26 to main [phi:@26->main] +main_from_b26: jsr main -//SEG9 [4] phi from @25 to @end [phi:@25->@end] -bend_from_b25: +//SEG9 [4] phi from @26 to @end [phi:@26->@end] +bend_from_b26: jmp bend //SEG10 @end bend: @@ -9212,491 +9935,489 @@ main: { //SEG14 asm { sei } sei //SEG15 [8] call render_init - //SEG16 [315] phi from main::@21 to render_init [phi:main::@21->render_init] - render_init_from_b21: jsr render_init - //SEG17 [9] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG16 [9] phi from main::@21 to main::@22 [phi:main::@21->main::@22] b22_from_b21: jmp b22 - //SEG18 main::@22 + //SEG17 main::@22 b22: - //SEG19 [10] call tables_init - //SEG20 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] + //SEG18 [10] call tables_init + //SEG19 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] tables_init_from_b22: jsr tables_init - //SEG21 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG20 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] b23_from_b22: jmp b23 - //SEG22 main::@23 + //SEG21 main::@23 b23: - //SEG23 [12] call spawn_current - //SEG24 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] + //SEG22 [12] call spawn_current + //SEG23 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] spawn_current_from_b23: jsr spawn_current - //SEG25 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG24 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] b24_from_b23: jmp b24 - //SEG26 main::@24 + //SEG25 main::@24 b24: - //SEG27 [14] call render_playfield - //SEG28 [72] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] + //SEG26 [14] call render_playfield + //SEG27 [72] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] render_playfield_from_b24: jsr render_playfield jmp b25 - //SEG29 main::@25 + //SEG28 main::@25 b25: - //SEG30 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_87 lda current_piece_gfx+1 sta current_piece_gfx_87+1 - //SEG31 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_75 - //SEG32 [17] call render_current - //SEG33 [52] phi from main::@25 to render_current [phi:main::@25->render_current] + //SEG31 [17] call render_current + //SEG32 [52] phi from main::@25 to render_current [phi:main::@25->render_current] render_current_from_b25: - //SEG34 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy - //SEG35 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG36 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + //SEG33 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG34 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy + //SEG35 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_63 - //SEG37 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 + //SEG36 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG38 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG37 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG39 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] + //SEG38 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] b1_from_b25: - //SEG40 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG39 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG41 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 + //SEG40 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 lda #0 sta keyboard_events_size - //SEG42 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy - //SEG43 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG41 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy + //SEG42 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 lda #0 sta current_ypos - //SEG44 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG43 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG45 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy - //SEG46 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG44 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy + //SEG45 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG47 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy + //SEG46 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy jmp b1 - //SEG48 main::@1 + //SEG47 main::@1 b1: jmp b4 - //SEG49 main::@4 + //SEG48 main::@4 b4: - //SEG50 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG49 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 jmp b7 - //SEG51 main::@7 + //SEG50 main::@7 b7: - //SEG52 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG51 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 jmp b9 - //SEG53 main::@9 + //SEG52 main::@9 b9: - //SEG54 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG53 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG55 [23] call keyboard_event_scan - //SEG56 [248] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG54 [23] call keyboard_event_scan + //SEG55 [248] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] keyboard_event_scan_from_b9: jsr keyboard_event_scan - //SEG57 [24] phi from main::@9 to main::@27 [phi:main::@9->main::@27] + //SEG56 [24] phi from main::@9 to main::@27 [phi:main::@9->main::@27] b27_from_b9: jmp b27 - //SEG58 main::@27 + //SEG57 main::@27 b27: - //SEG59 [25] call keyboard_event_get + //SEG58 [25] call keyboard_event_get jsr keyboard_event_get - //SEG60 [26] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG59 [26] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a jmp b28 - //SEG61 main::@28 + //SEG60 main::@28 b28: - //SEG62 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + //SEG61 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG63 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG62 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG64 [29] call play_move_down + //SEG63 [29] call play_move_down jsr play_move_down - //SEG65 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG64 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa jmp b29 - //SEG66 main::@29 + //SEG65 main::@29 b29: - //SEG67 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 + //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 // (byte~) main::$10 = (byte) play_move_down::return#0 // register copy reg byte a - //SEG68 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa + //SEG67 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG69 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG68 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG70 [34] call play_move_leftright + //SEG69 [34] call play_move_leftright jsr play_move_leftright - //SEG71 [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG70 [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a jmp b30 - //SEG72 main::@30 + //SEG71 main::@30 b30: - //SEG73 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 + //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 // (byte~) main::$11 = (byte) play_move_leftright::return#0 // register copy reg byte a - //SEG74 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa + //SEG73 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG75 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG74 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG76 [39] call play_move_rotate + //SEG75 [39] call play_move_rotate jsr play_move_rotate - //SEG77 [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG76 [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a jmp b31 - //SEG78 main::@31 + //SEG77 main::@31 b31: - //SEG79 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 + //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 // (byte~) main::$12 = (byte) play_move_rotate::return#0 // register copy reg byte a - //SEG80 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa + //SEG79 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG81 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + //SEG80 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG82 [44] phi from main::@31 to main::@19 [phi:main::@31->main::@19] + //SEG81 [44] phi from main::@31 to main::@19 [phi:main::@31->main::@19] b19_from_b31: jmp b19 - //SEG83 main::@19 + //SEG82 main::@19 b19: - //SEG84 [45] call render_playfield - //SEG85 [72] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG83 [45] call render_playfield + //SEG84 [72] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] render_playfield_from_b19: jsr render_playfield jmp b32 - //SEG86 main::@32 + //SEG85 main::@32 b32: - //SEG87 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 ldx current_ypos - //SEG88 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_96 - //SEG89 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_88 lda current_piece_gfx+1 sta current_piece_gfx_88+1 - //SEG90 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_76 - //SEG91 [50] call render_current - //SEG92 [52] phi from main::@32 to render_current [phi:main::@32->render_current] + //SEG90 [50] call render_current + //SEG91 [52] phi from main::@32 to render_current [phi:main::@32->render_current] render_current_from_b32: - //SEG93 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy - //SEG94 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG95 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG96 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + //SEG92 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG93 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG94 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG95 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current jmp b10 - //SEG97 main::@10 + //SEG96 main::@10 b10: - //SEG98 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG97 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG99 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG98 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] b1_from_b10: - //SEG100 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG101 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG102 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy - //SEG103 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy - //SEG104 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy - //SEG105 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG106 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG107 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG99 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG100 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG101 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy + //SEG102 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy + //SEG103 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy + //SEG104 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG105 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG106 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b1 } -//SEG108 render_current +//SEG107 render_current render_current: { .label ypos2 = 8 .label l = 9 .label screen_line = $16 .label xpos = $b .label i = $a - //SEG109 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 - //SEG110 [54] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG109 [54] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] b1_from_render_current: - //SEG111 [54] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG110 [54] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG112 [54] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG111 [54] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 lda #0 sta l - //SEG113 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG112 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy jmp b1 - //SEG114 [54] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG113 [54] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] b1_from_b2: - //SEG115 [54] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG116 [54] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG117 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG114 [54] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG115 [54] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG116 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy jmp b1 - //SEG118 render_current::@1 + //SEG117 render_current::@1 b1: - //SEG119 [55] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG118 [55] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcs b2_from_b1 jmp b6 - //SEG120 render_current::@6 + //SEG119 render_current::@6 b6: - //SEG121 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG120 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG122 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 + //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 lda current_xpos_63 sta xpos - //SEG123 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG122 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] b3_from_b6: - //SEG124 [58] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG123 [58] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG125 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG126 [58] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy + //SEG124 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG125 [58] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy jmp b3 - //SEG127 [58] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG126 [58] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] b3_from_b4: - //SEG128 [58] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG129 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG130 [58] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy + //SEG127 [58] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG128 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG129 [58] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy jmp b3 - //SEG131 render_current::@3 + //SEG130 render_current::@3 b3: - //SEG132 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_64),y - //SEG133 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG132 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG134 [61] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 + //SEG133 [61] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 jmp b7 - //SEG135 render_current::@7 + //SEG134 render_current::@7 b7: - //SEG136 [62] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + //SEG135 [62] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b4 jmp b8 - //SEG137 render_current::@8 + //SEG136 render_current::@8 b8: - //SEG138 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color_67 ldy xpos sta (screen_line),y jmp b4 - //SEG139 render_current::@4 + //SEG138 render_current::@4 b4: - //SEG140 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG139 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG141 [65] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + //SEG140 [65] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG142 [66] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG141 [66] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b3_from_b4 - //SEG143 [67] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG142 [67] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] b2_from_b1: b2_from_b4: - //SEG144 [67] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG143 [67] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy jmp b2 - //SEG145 render_current::@2 + //SEG144 render_current::@2 b2: - //SEG146 [68] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG145 [68] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG147 [69] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 + //SEG146 [69] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG148 [70] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG147 [70] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1_from_b2 jmp breturn - //SEG149 render_current::@return + //SEG148 render_current::@return breturn: - //SEG150 [71] return + //SEG149 [71] return rts } -//SEG151 render_playfield +//SEG150 render_playfield render_playfield: { .label line = 5 .label i = 7 .label l = 4 - //SEG152 [73] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG151 [73] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] b1_from_render_playfield: - //SEG153 [73] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG152 [73] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG154 [73] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG153 [73] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 lda #0 sta l jmp b1 - //SEG155 [73] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG154 [73] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] b1_from_b3: - //SEG156 [73] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG157 [73] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG155 [73] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG156 [73] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy jmp b1 - //SEG158 render_playfield::@1 + //SEG157 render_playfield::@1 b1: - //SEG159 [74] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG158 [74] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG160 [75] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG159 [75] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG161 [76] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG160 [76] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] b2_from_b1: - //SEG162 [76] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 + //SEG161 [76] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG163 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG164 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG162 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG163 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy jmp b2 - //SEG165 [76] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG164 [76] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] b2_from_b2: - //SEG166 [76] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG167 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG168 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG165 [76] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG166 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG167 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy jmp b2 - //SEG169 render_playfield::@2 + //SEG168 render_playfield::@2 b2: - //SEG170 [77] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG169 [77] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (line),y - //SEG171 [78] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + //SEG170 [78] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 inc line bne !+ inc line+1 !: - //SEG172 [79] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG171 [79] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG173 [80] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG172 [80] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG174 [81] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG173 [81] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2_from_b2 jmp b3 - //SEG175 render_playfield::@3 + //SEG174 render_playfield::@3 b3: - //SEG176 [82] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG175 [82] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG177 [83] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG176 [83] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1_from_b3 jmp breturn - //SEG178 render_playfield::@return + //SEG177 render_playfield::@return breturn: - //SEG179 [84] return + //SEG178 [84] return rts } -//SEG180 play_move_rotate +//SEG179 play_move_rotate play_move_rotate: { .label orientation = 4 - //SEG181 [85] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG180 [85] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 jmp b6 - //SEG182 play_move_rotate::@6 + //SEG181 play_move_rotate::@6 b6: - //SEG183 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG182 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG184 [87] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG183 [87] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] breturn_from_b14: breturn_from_b6: - //SEG185 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG186 [87] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG187 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG184 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG185 [87] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG186 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG188 play_move_rotate::@return + //SEG187 play_move_rotate::@return breturn: - //SEG189 [88] return + //SEG188 [88] return rts - //SEG190 play_move_rotate::@2 + //SEG189 play_move_rotate::@2 b2: - //SEG191 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG190 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG192 [90] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG191 [90] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG193 [91] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG192 [91] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] b4_from_b1: b4_from_b2: - //SEG194 [91] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG193 [91] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy jmp b4 - //SEG195 play_move_rotate::@4 + //SEG194 play_move_rotate::@4 b4: - //SEG196 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG195 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG197 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG196 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG198 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG197 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG199 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG198 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_75 lda current_piece+1 sta current_piece_75+1 - //SEG200 [96] call collision - //SEG201 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + //SEG199 [96] call collision + //SEG200 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] collision_from_b4: - //SEG202 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG203 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG204 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG205 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG201 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG202 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG203 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG204 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision - //SEG206 [97] (byte) collision::return#13 ← (byte) collision::return#14 + //SEG205 [97] (byte) collision::return#13 ← (byte) collision::return#14 // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a jmp b14 - //SEG207 play_move_rotate::@14 + //SEG206 play_move_rotate::@14 b14: - //SEG208 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a - //SEG209 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG208 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG210 play_move_rotate::@11 + //SEG209 play_move_rotate::@11 b11: - //SEG211 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG210 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG212 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + //SEG211 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 lda current_orientation clc adc current_piece @@ -9704,25 +10425,25 @@ play_move_rotate: { lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG213 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG212 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] breturn_from_b11: - //SEG214 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG215 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG216 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG213 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG214 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG215 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG217 play_move_rotate::@1 + //SEG216 play_move_rotate::@1 b1: - //SEG218 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG217 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG219 [103] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG218 [103] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4_from_b1 } -//SEG220 collision +//SEG219 collision collision: { .label xpos = 7 .label piece_gfx = 5 @@ -9735,7 +10456,7 @@ collision: { .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG221 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG220 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -9743,667 +10464,667 @@ collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG222 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG221 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG223 [107] phi from collision to collision::@1 [phi:collision->collision::@1] + //SEG222 [107] phi from collision to collision::@1 [phi:collision->collision::@1] b1_from_collision: - //SEG224 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG223 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG225 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG224 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG226 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG225 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy jmp b1 - //SEG227 collision::@1 + //SEG226 collision::@1 b1: - //SEG228 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG227 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG229 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG228 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG230 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG229 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] b2_from_b1: - //SEG231 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG230 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG232 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG233 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG231 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG232 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy jmp b2 - //SEG234 collision::@2 + //SEG233 collision::@2 b2: - //SEG235 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG234 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG236 [112] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG235 [112] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 jmp b8 - //SEG237 collision::@8 + //SEG236 collision::@8 b8: - //SEG238 [113] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG237 [113] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG239 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG238 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] breturn_from_b8: - //SEG240 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG239 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM jmp breturn - //SEG241 collision::@return + //SEG240 collision::@return breturn: - //SEG242 [115] return + //SEG241 [115] return rts - //SEG243 collision::@4 + //SEG242 collision::@4 b4: - //SEG244 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG243 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG245 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG244 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG246 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG245 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] breturn_from_b4: - //SEG247 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG246 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG248 collision::@5 + //SEG247 collision::@5 b5: - //SEG249 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG248 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG250 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG249 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] breturn_from_b5: - //SEG251 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG250 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG252 collision::@6 + //SEG251 collision::@6 b6: - //SEG253 [119] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG252 [119] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG254 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG253 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] breturn_from_b6: - //SEG255 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG254 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG256 collision::@3 + //SEG255 collision::@3 b3: - //SEG257 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG256 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG258 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG257 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG259 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG258 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 jmp b17 - //SEG260 collision::@17 + //SEG259 collision::@17 b17: - //SEG261 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG260 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG262 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG261 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG263 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG262 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG264 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG263 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] breturn_from_b17: - //SEG265 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG264 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG266 collision::@20 + //SEG265 collision::@20 b20: - //SEG267 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG266 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG268 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG267 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] b1_from_b20: - //SEG269 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG270 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG271 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG268 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG269 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG270 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG272 collision::@21 + //SEG271 collision::@21 b21: - //SEG273 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG272 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG274 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG273 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] b2_from_b21: - //SEG275 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG276 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG277 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG274 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG275 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG276 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG278 play_move_leftright +//SEG277 play_move_leftright play_move_leftright: { - //SEG279 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG278 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 jmp b6 - //SEG280 play_move_leftright::@6 + //SEG279 play_move_leftright::@6 b6: - //SEG281 [129] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG280 [129] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne breturn_from_b6 jmp b7 - //SEG282 play_move_leftright::@7 + //SEG281 play_move_leftright::@7 b7: - //SEG283 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG282 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty collision.xpos - //SEG284 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG283 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG285 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG284 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG286 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG285 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_74 lda current_piece+1 sta current_piece_74+1 - //SEG287 [134] call collision - //SEG288 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + //SEG286 [134] call collision + //SEG287 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] collision_from_b7: - //SEG289 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG290 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG291 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG292 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG288 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG289 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG290 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG291 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy jsr collision - //SEG293 [135] (byte) collision::return#12 ← (byte) collision::return#14 + //SEG292 [135] (byte) collision::return#12 ← (byte) collision::return#14 // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a jmp b15 - //SEG294 play_move_leftright::@15 + //SEG293 play_move_leftright::@15 b15: - //SEG295 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a - //SEG296 [137] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG295 [137] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b15 jmp b8 - //SEG297 play_move_leftright::@8 + //SEG296 play_move_leftright::@8 b8: - //SEG298 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + //SEG297 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG299 [139] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG298 [139] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] breturn_from_b11: breturn_from_b8: - //SEG300 [139] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG301 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG299 [139] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG300 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG302 [139] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG301 [139] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] breturn_from_b14: breturn_from_b15: breturn_from_b6: - //SEG303 [139] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG304 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG302 [139] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG303 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 jmp breturn - //SEG305 play_move_leftright::@return + //SEG304 play_move_leftright::@return breturn: - //SEG306 [140] return + //SEG305 [140] return rts - //SEG307 play_move_leftright::@1 + //SEG306 play_move_leftright::@1 b1: - //SEG308 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG307 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx collision.xpos - //SEG309 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG308 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG310 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG309 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG311 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG310 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_73 lda current_piece+1 sta current_piece_73+1 - //SEG312 [145] call collision - //SEG313 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + //SEG311 [145] call collision + //SEG312 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] collision_from_b1: - //SEG314 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG315 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG316 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG317 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy + //SEG313 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG314 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG315 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG316 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy jsr collision - //SEG318 [146] (byte) collision::return#1 ← (byte) collision::return#14 + //SEG317 [146] (byte) collision::return#1 ← (byte) collision::return#14 // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a jmp b14 - //SEG319 play_move_leftright::@14 + //SEG318 play_move_leftright::@14 b14: - //SEG320 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a - //SEG321 [148] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG320 [148] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne breturn_from_b14 jmp b11 - //SEG322 play_move_leftright::@11 + //SEG321 play_move_leftright::@11 b11: - //SEG323 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + //SEG322 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 dec current_xpos jmp breturn_from_b11 } -//SEG324 play_move_down +//SEG323 play_move_down play_move_down: { - //SEG325 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + //SEG324 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG326 [151] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG325 [151] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b1_from_play_move_down - //SEG327 [152] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG326 [152] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] b8_from_play_move_down: jmp b8 - //SEG328 play_move_down::@8 + //SEG327 play_move_down::@8 b8: - //SEG329 [153] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG328 [153] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] b1_from_b8: - //SEG330 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG329 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG331 [153] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG330 [153] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b1_from_play_move_down: - //SEG332 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG331 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG333 play_move_down::@1 + //SEG332 play_move_down::@1 b1: - //SEG334 [154] call keyboard_event_pressed - //SEG335 [237] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG333 [154] call keyboard_event_pressed + //SEG334 [237] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] keyboard_event_pressed_from_b1: - //SEG336 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG335 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG337 [155] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG336 [155] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b17 - //SEG338 play_move_down::@17 + //SEG337 play_move_down::@17 b17: - //SEG339 [156] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG338 [156] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG340 [157] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + //SEG339 [157] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b17 jmp b9 - //SEG341 play_move_down::@9 + //SEG340 play_move_down::@9 b9: - //SEG342 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG341 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2_from_b9 jmp b10 - //SEG343 play_move_down::@10 + //SEG342 play_move_down::@10 b10: - //SEG344 [159] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG343 [159] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG345 [160] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG344 [160] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] b2_from_b10: b2_from_b17: b2_from_b9: - //SEG346 [160] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG345 [160] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy jmp b2 - //SEG347 play_move_down::@2 + //SEG346 play_move_down::@2 b2: - //SEG348 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG347 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_slow bcc b4_from_b2 jmp b11 - //SEG349 play_move_down::@11 + //SEG348 play_move_down::@11 b11: - //SEG350 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG349 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG351 [163] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG350 [163] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] b4_from_b11: b4_from_b2: - //SEG352 [163] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG351 [163] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy jmp b4 - //SEG353 play_move_down::@4 + //SEG352 play_move_down::@4 b4: - //SEG354 [164] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + //SEG353 [164] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq breturn_from_b4 jmp b12 - //SEG355 play_move_down::@12 + //SEG354 play_move_down::@12 b12: - //SEG356 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG355 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - //SEG357 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG356 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG358 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 + //SEG357 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 ldx current_orientation - //SEG359 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG358 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece sta current_piece_72 lda current_piece+1 sta current_piece_72+1 - //SEG360 [169] call collision - //SEG361 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] + //SEG359 [169] call collision + //SEG360 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] collision_from_b12: - //SEG362 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG363 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG364 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG365 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG361 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG362 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG363 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG364 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG366 [170] (byte) collision::return#0 ← (byte) collision::return#14 + //SEG365 [170] (byte) collision::return#0 ← (byte) collision::return#14 // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a jmp b18 - //SEG367 play_move_down::@18 + //SEG366 play_move_down::@18 b18: - //SEG368 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 + //SEG367 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a - //SEG369 [172] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG368 [172] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG370 [173] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG369 [173] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] b13_from_b18: jmp b13 - //SEG371 play_move_down::@13 + //SEG370 play_move_down::@13 b13: - //SEG372 [174] call lock_current + //SEG371 [174] call lock_current jsr lock_current - //SEG373 [175] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG372 [175] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] b19_from_b13: jmp b19 - //SEG374 play_move_down::@19 + //SEG373 play_move_down::@19 b19: - //SEG375 [176] call remove_lines - //SEG376 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] + //SEG374 [176] call remove_lines + //SEG375 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] remove_lines_from_b19: jsr remove_lines - //SEG377 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG376 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] b20_from_b19: jmp b20 - //SEG378 play_move_down::@20 + //SEG377 play_move_down::@20 b20: - //SEG379 [178] call spawn_current - //SEG380 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] + //SEG378 [178] call spawn_current + //SEG379 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] spawn_current_from_b20: jsr spawn_current - //SEG381 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG380 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG382 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG381 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] b7_from_b20: - //SEG383 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG384 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG382 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG383 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG385 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG386 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG384 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG385 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG387 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG388 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG386 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG387 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 lda #0 sta current_ypos jmp b7 - //SEG389 play_move_down::@7 + //SEG388 play_move_down::@7 b7: - //SEG390 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG389 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] breturn_from_b7: - //SEG391 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG392 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG393 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG394 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG395 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG396 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG397 [181] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG390 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG391 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG392 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG393 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG394 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG395 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG396 [181] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG398 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG397 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG399 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG398 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] breturn_from_b4: - //SEG400 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG401 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG402 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG403 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG404 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG405 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG406 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG407 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG399 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG400 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG401 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG402 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG403 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG404 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG405 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG406 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 jmp breturn - //SEG408 play_move_down::@return + //SEG407 play_move_down::@return breturn: - //SEG409 [182] return + //SEG408 [182] return rts - //SEG410 play_move_down::@6 + //SEG409 play_move_down::@6 b6: - //SEG411 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG410 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG412 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG411 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] b7_from_b6: - //SEG413 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG414 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG415 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG416 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG417 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG418 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG412 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG413 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG414 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG415 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG416 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG417 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG419 spawn_current +//SEG418 spawn_current spawn_current: { .label _3 = 2 - //SEG420 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] + //SEG419 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] b1_from_spawn_current: - //SEG421 [185] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuxx=vbuc1 + //SEG420 [185] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 jmp b1 - //SEG422 spawn_current::@1 + //SEG421 spawn_current::@1 b1: - //SEG423 [186] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG422 [186] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2_from_b1 jmp b3 - //SEG424 spawn_current::@3 + //SEG423 spawn_current::@3 b3: - //SEG425 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG424 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG426 [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG425 [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 ldy _3 lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG427 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG426 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_COLORS,x sta current_piece_color jmp breturn - //SEG428 spawn_current::@return + //SEG427 spawn_current::@return breturn: - //SEG429 [190] return + //SEG428 [190] return rts - //SEG430 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + //SEG429 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] b2_from_b1: jmp b2 - //SEG431 spawn_current::@2 + //SEG430 spawn_current::@2 b2: - //SEG432 [192] call sid_rnd + //SEG431 [192] call sid_rnd jsr sid_rnd - //SEG433 [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG432 [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a jmp b7 - //SEG434 spawn_current::@7 + //SEG433 spawn_current::@7 b7: - //SEG435 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 + //SEG434 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 // (byte~) spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG436 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG435 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG437 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + //SEG436 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] b1_from_b7: - //SEG438 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + //SEG437 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy jmp b1 } -//SEG439 sid_rnd +//SEG438 sid_rnd sid_rnd: { - //SEG440 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG439 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC jmp breturn - //SEG441 sid_rnd::@return + //SEG440 sid_rnd::@return breturn: - //SEG442 [197] return + //SEG441 [197] return rts } -//SEG443 remove_lines +//SEG442 remove_lines remove_lines: { .label c = 7 .label x = 3 .label y = 2 .label full = 4 - //SEG444 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] + //SEG443 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] b1_from_remove_lines: - //SEG445 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG444 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG446 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuxx=vbuc1 + //SEG445 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG447 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuyy=vbuc1 + //SEG446 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 jmp b1 - //SEG448 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + //SEG447 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] b1_from_b4: - //SEG449 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy - //SEG450 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy - //SEG451 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + //SEG448 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy + //SEG449 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy + //SEG450 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy jmp b1 - //SEG452 remove_lines::@1 + //SEG451 remove_lines::@1 b1: - //SEG453 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] + //SEG452 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] b2_from_b1: - //SEG454 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG453 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG455 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG454 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG456 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy - //SEG457 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy + //SEG455 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy + //SEG456 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy jmp b2 - //SEG458 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + //SEG457 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] b2_from_b3: - //SEG459 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy - //SEG460 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy - //SEG461 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy - //SEG462 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + //SEG458 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy + //SEG459 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy + //SEG460 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy + //SEG461 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy jmp b2 - //SEG463 remove_lines::@2 + //SEG462 remove_lines::@2 b2: - //SEG464 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG463 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG465 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG464 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG466 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG465 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 lda c cmp #0 bne b17_from_b2 - //SEG467 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] + //SEG466 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] b3_from_b2: - //SEG468 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG467 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full jmp b3 - //SEG469 remove_lines::@3 + //SEG468 remove_lines::@3 b3: - //SEG470 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG471 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG470 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG472 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG471 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG473 [208] if((byte) remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [208] if((byte) remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2_from_b3 jmp b9 - //SEG474 remove_lines::@9 + //SEG473 remove_lines::@9 b9: - //SEG475 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG474 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4_from_b9 jmp b10 - //SEG476 remove_lines::@10 + //SEG475 remove_lines::@10 b10: - //SEG477 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG476 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG478 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + //SEG477 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] b4_from_b10: b4_from_b9: - //SEG479 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy + //SEG478 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy jmp b4 - //SEG480 remove_lines::@4 + //SEG479 remove_lines::@4 b4: - //SEG481 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG480 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG482 [213] if((byte) remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG481 [213] if((byte) remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1_from_b4 - //SEG483 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + //SEG482 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] b5_from_b4: b5_from_b6: - //SEG484 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy + //SEG483 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy jmp b5 - //SEG485 remove_lines::@5 + //SEG484 remove_lines::@5 b5: - //SEG486 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG485 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 jmp breturn - //SEG487 remove_lines::@return + //SEG486 remove_lines::@return breturn: - //SEG488 [216] return + //SEG487 [216] return rts - //SEG489 remove_lines::@6 + //SEG488 remove_lines::@6 b6: - //SEG490 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG491 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG490 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5_from_b6 - //SEG492 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + //SEG491 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] b17_from_b2: jmp b17 - //SEG493 remove_lines::@17 + //SEG492 remove_lines::@17 b17: - //SEG494 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + //SEG493 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] b3_from_b17: - //SEG495 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy + //SEG494 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy jmp b3 } -//SEG496 lock_current +//SEG495 lock_current lock_current: { .label ypos2 = 2 .label playfield_line = 5 @@ -10414,476 +11135,489 @@ lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG497 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG496 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG498 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG497 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] b1_from_lock_current: - //SEG499 [221] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 + //SEG498 [221] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG500 [221] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG499 [221] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 lda #0 sta i_3 - //SEG501 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG500 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy jmp b1 - //SEG502 lock_current::@1 + //SEG501 lock_current::@1 b1: - //SEG503 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG502 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG504 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG503 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG505 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG504 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] b2_from_b1: - //SEG506 [224] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 + //SEG505 [224] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG507 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG508 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG506 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG507 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy jmp b2 - //SEG509 lock_current::@2 + //SEG508 lock_current::@2 b2: - //SEG510 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG509 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG511 [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG510 [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 jmp b4 - //SEG512 lock_current::@4 + //SEG511 lock_current::@4 b4: - //SEG513 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG512 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y jmp b3 - //SEG514 lock_current::@3 + //SEG513 lock_current::@3 b3: - //SEG515 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG514 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG516 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG515 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG517 [230] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG516 [230] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 jmp b5 - //SEG518 lock_current::@5 + //SEG517 lock_current::@5 b5: - //SEG519 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG518 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG520 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG519 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG521 [233] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG520 [233] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 jmp breturn - //SEG522 lock_current::@return + //SEG521 lock_current::@return breturn: - //SEG523 [234] return + //SEG522 [234] return rts - //SEG524 lock_current::@7 + //SEG523 lock_current::@7 b7: - //SEG525 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG524 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG526 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG525 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] b1_from_b7: - //SEG527 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG528 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG529 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG526 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG527 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG528 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy jmp b1 - //SEG530 lock_current::@8 + //SEG529 lock_current::@8 b8: - //SEG531 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG530 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG532 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG531 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] b2_from_b8: - //SEG533 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG534 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG535 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG532 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG533 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG534 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy jmp b2 } -//SEG536 keyboard_event_pressed +//SEG535 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG537 [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG536 [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG538 [239] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG537 [239] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG539 [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG538 [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG540 [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG539 [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits jmp breturn - //SEG541 keyboard_event_pressed::@return + //SEG540 keyboard_event_pressed::@return breturn: - //SEG542 [242] return + //SEG541 [242] return rts } -//SEG543 keyboard_event_get +//SEG542 keyboard_event_get keyboard_event_get: { - //SEG544 [243] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG543 [243] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq breturn_from_keyboard_event_get jmp b3 - //SEG545 keyboard_event_get::@3 + //SEG544 keyboard_event_get::@3 b3: - //SEG546 [244] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG545 [244] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG547 [245] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG546 [245] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG548 [246] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG547 [246] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] breturn_from_b3: - //SEG549 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG550 [246] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG548 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG549 [246] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG551 [246] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG550 [246] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] breturn_from_keyboard_event_get: - //SEG552 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG553 [246] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG551 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG552 [246] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff jmp breturn - //SEG554 keyboard_event_get::@return + //SEG553 keyboard_event_get::@return breturn: - //SEG555 [247] return + //SEG554 [247] return rts } -//SEG556 keyboard_event_scan +//SEG555 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG557 [249] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG556 [249] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] b1_from_keyboard_event_scan: - //SEG558 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG559 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG557 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG558 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG560 [249] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG559 [249] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 lda #0 sta row jmp b1 - //SEG561 [249] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG560 [249] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] b1_from_b3: - //SEG562 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG563 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG564 [249] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG561 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG562 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG563 [249] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy jmp b1 - //SEG565 keyboard_event_scan::@1 + //SEG564 keyboard_event_scan::@1 b1: - //SEG566 [250] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG565 [250] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG567 [251] call keyboard_matrix_read + //SEG566 [251] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG568 [252] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG567 [252] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a jmp b25 - //SEG569 keyboard_event_scan::@25 + //SEG568 keyboard_event_scan::@25 b25: - //SEG570 [253] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG569 [253] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG571 [254] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG570 [254] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 lda row_scan ldy row cmp keyboard_scan_values,y bne b4_from_b25 jmp b13 - //SEG572 keyboard_event_scan::@13 + //SEG571 keyboard_event_scan::@13 b13: - //SEG573 [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + //SEG572 [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG574 [256] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG573 [256] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] b3_from_b13: b3_from_b19: - //SEG575 [256] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG576 [256] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG574 [256] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG575 [256] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy jmp b3 - //SEG577 keyboard_event_scan::@3 + //SEG576 keyboard_event_scan::@3 b3: - //SEG578 [257] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG577 [257] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG579 [258] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG578 [258] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1_from_b3 - //SEG580 [259] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG579 [259] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] b20_from_b3: jmp b20 - //SEG581 keyboard_event_scan::@20 + //SEG580 keyboard_event_scan::@20 b20: - //SEG582 [260] call keyboard_event_pressed - //SEG583 [237] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG581 [260] call keyboard_event_pressed + //SEG582 [237] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] keyboard_event_pressed_from_b20: - //SEG584 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG583 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG585 [261] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG584 [261] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b26 - //SEG586 keyboard_event_scan::@26 + //SEG585 keyboard_event_scan::@26 b26: - //SEG587 [262] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG586 [262] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG588 [263] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG587 [263] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 beq b9_from_b26 - //SEG589 [264] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG588 [264] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] b21_from_b26: jmp b21 - //SEG590 keyboard_event_scan::@21 + //SEG589 keyboard_event_scan::@21 b21: - //SEG591 [265] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] + //SEG590 [265] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] b9_from_b21: - b9_from_b26: + //SEG591 [265] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0|KEY_MODIFIER_LSHIFT jmp b9 - //SEG592 keyboard_event_scan::@9 + //SEG592 [265] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + b9_from_b26: + //SEG593 [265] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0 + jmp b9 + //SEG594 keyboard_event_scan::@9 b9: - //SEG593 [266] call keyboard_event_pressed - //SEG594 [237] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG595 [266] call keyboard_event_pressed + //SEG596 [237] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] keyboard_event_pressed_from_b9: - //SEG595 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG597 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG596 [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG598 [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b27 - //SEG597 keyboard_event_scan::@27 + //SEG599 keyboard_event_scan::@27 b27: - //SEG598 [268] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG600 [268] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG599 [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG601 [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10_from_b27 - //SEG600 [270] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] - b22_from_b27: jmp b22 - //SEG601 keyboard_event_scan::@22 + //SEG602 keyboard_event_scan::@22 b22: - //SEG602 [271] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG603 [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_RSHIFT + tax + //SEG604 [271] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] b10_from_b22: b10_from_b27: + //SEG605 [271] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy jmp b10 - //SEG603 keyboard_event_scan::@10 + //SEG606 keyboard_event_scan::@10 b10: - //SEG604 [272] call keyboard_event_pressed - //SEG605 [237] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG607 [272] call keyboard_event_pressed + //SEG608 [237] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] keyboard_event_pressed_from_b10: - //SEG606 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG609 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG607 [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG610 [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b28 - //SEG608 keyboard_event_scan::@28 + //SEG611 keyboard_event_scan::@28 b28: - //SEG609 [274] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG612 [274] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG610 [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG613 [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 beq b11_from_b28 - //SEG611 [276] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] - b23_from_b28: jmp b23 - //SEG612 keyboard_event_scan::@23 + //SEG614 keyboard_event_scan::@23 b23: - //SEG613 [277] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG615 [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_CTRL + tax + //SEG616 [277] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] b11_from_b23: b11_from_b28: + //SEG617 [277] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy jmp b11 - //SEG614 keyboard_event_scan::@11 + //SEG618 keyboard_event_scan::@11 b11: - //SEG615 [278] call keyboard_event_pressed - //SEG616 [237] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG619 [278] call keyboard_event_pressed + //SEG620 [237] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] keyboard_event_pressed_from_b11: - //SEG617 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG621 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG618 [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG622 [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a jmp b29 - //SEG619 keyboard_event_scan::@29 + //SEG623 keyboard_event_scan::@29 b29: - //SEG620 [280] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG624 [280] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG621 [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG625 [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 beq breturn - //SEG622 [282] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] - b24_from_b29: jmp b24 - //SEG623 keyboard_event_scan::@24 + //SEG626 keyboard_event_scan::@24 b24: + //SEG627 [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_COMMODORE jmp breturn - //SEG624 keyboard_event_scan::@return + //SEG628 keyboard_event_scan::@return breturn: - //SEG625 [283] return + //SEG629 [283] return rts - //SEG626 [284] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + //SEG630 [284] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] b4_from_b25: - //SEG627 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG628 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG629 [284] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG631 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG632 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG633 [284] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG630 [284] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG634 [284] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] b4_from_b5: - //SEG631 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG632 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG633 [284] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG635 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG636 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG637 [284] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy jmp b4 - //SEG634 keyboard_event_scan::@4 + //SEG638 keyboard_event_scan::@4 b4: - //SEG635 [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG639 [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG636 [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG640 [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG637 [287] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG641 [287] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5_from_b4 jmp b15 - //SEG638 keyboard_event_scan::@15 + //SEG642 keyboard_event_scan::@15 b15: - //SEG639 [288] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG643 [288] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5_from_b15 jmp b16 - //SEG640 keyboard_event_scan::@16 + //SEG644 keyboard_event_scan::@16 b16: - //SEG641 [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG645 [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG642 [290] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG646 [290] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 jmp b17 - //SEG643 keyboard_event_scan::@17 + //SEG647 keyboard_event_scan::@17 b17: - //SEG644 [291] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG648 [291] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG645 [292] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG649 [292] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG646 [293] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG650 [293] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] b5_from_b15: b5_from_b17: b5_from_b4: b5_from_b7: - //SEG647 [293] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG651 [293] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy jmp b5 - //SEG648 keyboard_event_scan::@5 + //SEG652 keyboard_event_scan::@5 b5: - //SEG649 [294] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG653 [294] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG650 [295] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG654 [295] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG651 [296] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG655 [296] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4_from_b5 jmp b19 - //SEG652 keyboard_event_scan::@19 + //SEG656 keyboard_event_scan::@19 b19: - //SEG653 [297] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG657 [297] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3_from_b19 - //SEG654 keyboard_event_scan::@7 + //SEG658 keyboard_event_scan::@7 b7: - //SEG655 [298] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG659 [298] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG656 [299] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG660 [299] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG657 [300] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG661 [300] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5_from_b7 } -//SEG658 keyboard_matrix_read +//SEG662 keyboard_matrix_read keyboard_matrix_read: { - //SEG659 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG663 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG660 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG664 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff jmp breturn - //SEG661 keyboard_matrix_read::@return + //SEG665 keyboard_matrix_read::@return breturn: - //SEG662 [303] return + //SEG666 [303] return rts } -//SEG663 tables_init +//SEG667 tables_init tables_init: { .label pli = 5 .label idx = 2 - //SEG664 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] + //SEG668 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] b1_from_tables_init: - //SEG665 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 + //SEG669 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG666 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG667 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuxx=vbuc1 + //SEG671 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG668 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG672 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] b1_from_b1: - //SEG669 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG670 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG671 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG673 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy + //SEG674 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy + //SEG675 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy jmp b1 - //SEG672 tables_init::@1 + //SEG676 tables_init::@1 b1: - //SEG673 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG677 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG674 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG675 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG676 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG680 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -10891,88 +11625,91 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG677 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG681 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG678 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx + //SEG682 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG679 [312] if((byte) tables_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto tables_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG683 [312] if((byte) tables_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto tables_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1_from_b1 jmp b2 - //SEG680 tables_init::@2 + //SEG684 tables_init::@2 b2: - //SEG681 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG685 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES jmp breturn - //SEG682 tables_init::@return + //SEG686 tables_init::@return breturn: - //SEG683 [314] return + //SEG687 [314] return rts } -//SEG684 render_init +//SEG688 render_init render_init: { .label _10 = $c .label li = 5 .label line = 5 .label l = 2 - //SEG685 [316] call fill - //SEG686 [335] phi from render_init to fill [phi:render_init->fill] + //SEG689 [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BGCOL + //SEG690 [316] call fill + //SEG691 [335] phi from render_init to fill [phi:render_init->fill] fill_from_render_init: - //SEG687 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuxx=vbuc1 - ldx #$a0 - //SEG688 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 + //SEG692 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 208 [phi:render_init->fill#0] -- vbuxx=vbuc1 + ldx #$d0 + //SEG693 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG689 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] + //SEG694 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] b7_from_render_init: jmp b7 - //SEG690 render_init::@7 + //SEG695 render_init::@7 b7: - //SEG691 [318] call fill - //SEG692 [335] phi from render_init::@7 to fill [phi:render_init::@7->fill] + //SEG696 [318] call fill + //SEG697 [335] phi from render_init::@7 to fill [phi:render_init::@7->fill] fill_from_b7: - //SEG693 [335] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 + //SEG698 [335] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG694 [335] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 + //SEG699 [335] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG695 [319] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] + //SEG700 [319] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] b1_from_b7: - //SEG696 [319] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 + //SEG701 [319] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG697 [319] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 + //SEG702 [319] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG698 [319] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG703 [319] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] b1_from_b1: - //SEG699 [319] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG700 [319] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG704 [319] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG705 [319] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy jmp b1 - //SEG701 render_init::@1 + //SEG706 render_init::@1 b1: - //SEG702 [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG707 [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG703 [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG708 [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG704 [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG709 [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -10980,41 +11717,41 @@ render_init: { bcc !+ inc li+1 !: - //SEG705 [323] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG710 [323] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG706 [324] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG711 [324] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1_from_b1 - //SEG707 [325] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG712 [325] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] b2_from_b1: - //SEG708 [325] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + //SEG713 [325] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG709 [325] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 + //SEG714 [325] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 jmp b2 - //SEG710 [325] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG715 [325] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] b2_from_b5: - //SEG711 [325] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG712 [325] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG716 [325] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG717 [325] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy jmp b2 - //SEG713 render_init::@2 + //SEG718 render_init::@2 b2: - //SEG714 [326] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG719 [326] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] b3_from_b2: - //SEG715 [326] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 + //SEG720 [326] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG716 [326] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG721 [326] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] b3_from_b3: - //SEG717 [326] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG722 [326] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy jmp b3 - //SEG718 render_init::@3 + //SEG723 render_init::@3 b3: - //SEG719 [327] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG724 [327] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -11022,19 +11759,19 @@ render_init: { lda #0 adc line+1 sta _10+1 - //SEG720 [328] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG725 [328] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_10),y - //SEG721 [329] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + //SEG726 [329] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG722 [330] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG727 [330] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b3_from_b3 jmp b5 - //SEG723 render_init::@5 + //SEG728 render_init::@5 b5: - //SEG724 [331] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG729 [331] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -11042,23 +11779,23 @@ render_init: { bcc !+ inc line+1 !: - //SEG725 [332] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG730 [332] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG726 [333] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG731 [333] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b2_from_b5 jmp breturn - //SEG727 render_init::@return + //SEG732 render_init::@return breturn: - //SEG728 [334] return + //SEG733 [334] return rts } -//SEG729 fill +//SEG734 fill fill: { .label end = $c .label addr = 5 - //SEG730 [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG735 [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -11066,23 +11803,23 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG731 [337] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG736 [337] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] b1_from_fill: b1_from_b1: - //SEG732 [337] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG737 [337] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy jmp b1 - //SEG733 fill::@1 + //SEG738 fill::@1 b1: - //SEG734 [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG739 [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG735 [339] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG740 [339] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG736 [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG741 [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1_from_b1 @@ -11090,25 +11827,25 @@ fill: { cmp end bne b1_from_b1 jmp breturn - //SEG737 fill::@return + //SEG742 fill::@return breturn: - //SEG738 [341] return + //SEG743 [341] return rts } -//SEG739 sid_rnd_init +//SEG744 sid_rnd_init sid_rnd_init: { - //SEG740 [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG745 [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG741 [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG746 [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL jmp breturn - //SEG742 sid_rnd_init::@return + //SEG747 sid_rnd_init::@return breturn: - //SEG743 [344] return + //SEG748 [344] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f @@ -11143,8 +11880,8 @@ sid_rnd_init: { ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b22 -Removing instruction jmp b25 +Removing instruction jmp b23 +Removing instruction jmp b26 Removing instruction jmp bend Removing instruction jmp b21 Removing instruction jmp b22 @@ -11303,10 +12040,8 @@ Replacing label b4_from_b9 with b4 Replacing label b1_from_b4 with b1 Replacing label b5_from_b6 with b5 Replacing label b1_from_b3 with b1 -Replacing label b9_from_b26 with b9 Replacing label b10_from_b27 with b10 Replacing label b11_from_b28 with b11 -Replacing label breturn with b24 Replacing label b5_from_b4 with b5 Replacing label b5_from_b15 with b5 Replacing label b4_from_b5 with b4 @@ -11319,10 +12054,10 @@ Replacing label b2_from_b5 with b2 Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Removing instruction bbegin: -Removing instruction b22: -Removing instruction b25_from_b22: -Removing instruction main_from_b25: -Removing instruction bend_from_b25: +Removing instruction b23: +Removing instruction b26_from_b23: +Removing instruction main_from_b26: +Removing instruction bend_from_b26: Removing instruction b22_from_b21: Removing instruction tables_init_from_b22: Removing instruction b23_from_b22: @@ -11375,22 +12110,14 @@ Removing instruction b3_from_b19: Removing instruction b20_from_b3: Removing instruction keyboard_event_pressed_from_b20: Removing instruction b21_from_b26: -Removing instruction b21: Removing instruction b9_from_b21: -Removing instruction b9_from_b26: Removing instruction keyboard_event_pressed_from_b9: -Removing instruction b22_from_b27: -Removing instruction b22: Removing instruction b10_from_b22: Removing instruction b10_from_b27: Removing instruction keyboard_event_pressed_from_b10: -Removing instruction b23_from_b28: -Removing instruction b23: Removing instruction b11_from_b23: Removing instruction b11_from_b28: Removing instruction keyboard_event_pressed_from_b11: -Removing instruction b24_from_b29: -Removing instruction breturn: Removing instruction b4_from_b5: Removing instruction b5_from_b15: Removing instruction b5_from_b17: @@ -11406,10 +12133,9 @@ Removing instruction b3_from_b3: Removing instruction b1_from_fill: Removing instruction b1_from_b1: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b25: +Removing instruction b26: Removing instruction bend: Removing instruction b21: -Removing instruction render_init_from_b21: Removing instruction b22: Removing instruction b23: Removing instruction b24: @@ -11500,9 +12226,13 @@ Removing instruction b25: Removing instruction b13: Removing instruction b20: Removing instruction b26: +Removing instruction b21: Removing instruction b27: +Removing instruction b22: Removing instruction b28: +Removing instruction b23: Removing instruction b29: +Removing instruction b24: Removing instruction b15: Removing instruction b16: Removing instruction b17: @@ -11528,7 +12258,8 @@ Relabelling long label breturn_from_b6 to b3 Relabelling long label b1_from_play_move_down to b3 Relabelling long label breturn_from_b4 to b5 Relabelling long label breturn_from_keyboard_event_get to b1 -Relabelling long label b4_from_b25 to b2 +Relabelling long label b9_from_b26 to b2 +Relabelling long label b4_from_b25 to b6 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp b3 @@ -11537,10 +12268,6 @@ Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp b2 Removing instruction jmp b1 -Removing instruction beq b9 -Removing instruction beq b10 -Removing instruction beq b11 -Removing instruction beq b24 Removing instruction jmp b4 Removing instruction jmp b1 Removing instruction jmp b1 @@ -11549,29 +12276,43 @@ Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination Replacing instruction ldy ypos2 with TAY Removing instruction b17: -Removing instruction b9: -Removing instruction b10: -Removing instruction b11: -Removing instruction b24: Succesful ASM optimization Pass5UnusedLabelElimination Removing unreachable instruction jmp b3 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @22 -(label) @25 +(label) @23 +(label) @26 (label) @begin (label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CHARSET (const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte) COLLISION_BOTTOM (const byte) COLLISION_BOTTOM#0 COLLISION_BOTTOM = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT @@ -11584,34 +12325,112 @@ FINAL SYMBOL TABLE (const byte) COLLISION_RIGHT#0 COLLISION_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 (byte) DARK_GREY (const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON (byte) KEY_COMMA (const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47 (byte) KEY_COMMODORE (const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT (byte) KEY_CTRL (const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58 +(byte) KEY_D +(byte) KEY_DEL (byte) KEY_DOT (const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44 +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L (byte) KEY_LSHIFT (const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15 +(byte) KEY_M +(byte) KEY_MINUS (byte) KEY_MODIFIER_COMMODORE +(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_MODIFIER_CTRL +(const byte) KEY_MODIFIER_CTRL#0 KEY_MODIFIER_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) KEY_MODIFIER_LSHIFT +(const byte) KEY_MODIFIER_LSHIFT#0 KEY_MODIFIER_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_MODIFIER_RSHIFT +(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN (byte) KEY_RSHIFT (const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 52 +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W (byte) KEY_X (const byte) KEY_X#0 KEY_X = (byte/signed byte/word/signed word/dword/signed dword) 23 +(byte) KEY_Y (byte) KEY_Z (const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN (byte) LIGHT_GREY (const byte) LIGHT_GREY#0 LIGHT_GREY = (byte/signed byte/word/signed word/dword/signed dword) 15 +(byte) ORANGE (word[]) PIECES (const word[]) PIECES#0 PIECES = { ((word))(const byte[4*4*4]) PIECE_T#0, ((word))(const byte[4*4*4]) PIECE_S#0, ((word))(const byte[4*4*4]) PIECE_Z#0, ((word))(const byte[4*4*4]) PIECE_J#0, ((word))(const byte[4*4*4]) PIECE_O#0, ((word))(const byte[4*4*4]) PIECE_I#0, ((word))(const byte[4*4*4]) PIECE_L#0 } (byte[]) PIECES_COLORS @@ -11630,24 +12449,67 @@ FINAL SYMBOL TABLE (const byte[4*4*4]) PIECE_T#0 PIECE_T = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[4*4*4]) PIECE_Z (const byte[4*4*4]) PIECE_Z#0 PIECE_Z = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } +(byte) PINK (byte) PLAYFIELD_COLS (const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) PLAYFIELD_LINES (const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22 +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) SID_CONTROL_GATE (byte) SID_CONTROL_NOISE (const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) 128 +(byte) SID_CONTROL_PULSE +(byte) SID_CONTROL_RING +(byte) SID_CONTROL_SAWTOOTH +(byte) SID_CONTROL_SYNC +(byte) SID_CONTROL_TEST +(byte) SID_CONTROL_TRIANGLE (byte*) SID_VOICE3_CONTROL (const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) 54290 (word*) SID_VOICE3_FREQ (const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) 54286 +(byte*) SID_VOICE3_FREQ_HIGH +(byte*) SID_VOICE3_FREQ_LOW (byte*) SID_VOICE3_OSC (const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) 54299 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte~) collision::$7 reg byte a 2002.0 (label) collision::@1 @@ -11781,6 +12643,7 @@ FINAL SYMBOL TABLE (byte*) fill::start (byte) fill::val (byte) fill::val#3 reg byte x 1.8333333333333333 +(byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return @@ -11876,6 +12739,12 @@ FINAL SYMBOL TABLE (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte) keyboard_modifiers +(byte) keyboard_modifiers#11 reg byte x 0.8 +(byte) keyboard_modifiers#12 reg byte x 1.6 +(byte) keyboard_modifiers#13 reg byte x 1.2000000000000002 +(byte) keyboard_modifiers#3 reg byte x 4.0 +(byte) keyboard_modifiers#4 reg byte x 4.0 +(byte) keyboard_modifiers#5 reg byte a 20.0 (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) lock_current() @@ -12183,6 +13052,7 @@ reg byte y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] reg byte x [ lock_current::c#2 lock_current::c#1 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte x [ tables_init::j#2 tables_init::j#1 ] @@ -12235,6 +13105,7 @@ reg byte a [ keyboard_event_pressed::return#2 ] reg byte a [ keyboard_event_scan::$22 ] reg byte a [ keyboard_event_pressed::return#10 ] reg byte a [ keyboard_event_scan::$26 ] +reg byte a [ keyboard_modifiers#5 ] reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] @@ -12245,7 +13116,7 @@ reg byte a [ render_init::$5 ] FINAL ASSEMBLER -Score: 416929 +Score: 416966 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -12254,6 +13125,7 @@ Score: 416929 //SEG1 Global Constants & labels .label RASTER = $d012 .label BORDERCOL = $d020 + .label BGCOL = $d021 .label COLS = $d800 .label CIA1_PORT_A = $dc00 .label CIA1_PORT_B = $dc01 @@ -12271,6 +13143,10 @@ Score: 416929 .const KEY_CTRL = $3a .const KEY_SPACE = $3c .const KEY_COMMODORE = $3d + .const KEY_MODIFIER_LSHIFT = 1 + .const KEY_MODIFIER_RSHIFT = 2 + .const KEY_MODIFIER_CTRL = 4 + .const KEY_MODIFIER_COMMODORE = 8 .label SID_VOICE3_FREQ = $d40e .label SID_VOICE3_CONTROL = $d412 .const SID_CONTROL_NOISE = $80 @@ -12308,14 +13184,14 @@ Score: 416929 .label current_piece_74 = 5 .label current_piece_75 = 5 //SEG2 @begin -//SEG3 @22 +//SEG3 @23 //SEG4 kickasm(location (const byte*) CHARSET#0) {{ .var charset = LoadPicture("charset.png", List().add($000000, $ffffff, $523fa0, $77c1c9)) .for (var c=0; c<16; c++) .for (var y=0;y<8; y++) .byte charset.getMulticolorByte(c,y) }} -//SEG5 [2] phi from @22 to @25 [phi:@22->@25] -//SEG6 @25 +//SEG5 [2] phi from @23 to @26 [phi:@23->@26] +//SEG6 @26 //SEG7 [3] call main -//SEG8 [5] phi from @25 to main [phi:@25->main] +//SEG8 [5] phi from @26 to main [phi:@26->main] jsr main -//SEG9 [4] phi from @25 to @end [phi:@25->@end] +//SEG9 [4] phi from @26 to @end [phi:@26->@end] //SEG10 @end //SEG11 main main: { @@ -12327,422 +13203,421 @@ main: { //SEG14 asm { sei } sei //SEG15 [8] call render_init - //SEG16 [315] phi from main::@21 to render_init [phi:main::@21->render_init] jsr render_init - //SEG17 [9] phi from main::@21 to main::@22 [phi:main::@21->main::@22] - //SEG18 main::@22 - //SEG19 [10] call tables_init - //SEG20 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] + //SEG16 [9] phi from main::@21 to main::@22 [phi:main::@21->main::@22] + //SEG17 main::@22 + //SEG18 [10] call tables_init + //SEG19 [304] phi from main::@22 to tables_init [phi:main::@22->tables_init] jsr tables_init - //SEG21 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] - //SEG22 main::@23 - //SEG23 [12] call spawn_current - //SEG24 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] + //SEG20 [11] phi from main::@22 to main::@23 [phi:main::@22->main::@23] + //SEG21 main::@23 + //SEG22 [12] call spawn_current + //SEG23 [184] phi from main::@23 to spawn_current [phi:main::@23->spawn_current] jsr spawn_current - //SEG25 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] - //SEG26 main::@24 - //SEG27 [14] call render_playfield - //SEG28 [72] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] + //SEG24 [13] phi from main::@23 to main::@24 [phi:main::@23->main::@24] + //SEG25 main::@24 + //SEG26 [14] call render_playfield + //SEG27 [72] phi from main::@24 to render_playfield [phi:main::@24->render_playfield] jsr render_playfield - //SEG29 main::@25 - //SEG30 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 + //SEG28 main::@25 + //SEG29 [15] (byte*~) current_piece_gfx#87 ← (byte*) current_piece_gfx#10 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_87 lda current_piece_gfx+1 sta current_piece_gfx_87+1 - //SEG31 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 + //SEG30 [16] (byte~) current_piece_color#75 ← (byte) current_piece_color#15 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_75 - //SEG32 [17] call render_current - //SEG33 [52] phi from main::@25 to render_current [phi:main::@25->render_current] - //SEG34 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy - //SEG35 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy - //SEG36 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 + //SEG31 [17] call render_current + //SEG32 [52] phi from main::@25 to render_current [phi:main::@25->render_current] + //SEG33 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#75 [phi:main::@25->render_current#0] -- register_copy + //SEG34 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#87 [phi:main::@25->render_current#1] -- register_copy + //SEG35 [52] phi (byte) current_xpos#63 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->render_current#2] -- vbuz1=vbuc1 lda #3 sta current_xpos_63 - //SEG37 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 + //SEG36 [52] phi (byte) current_ypos#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->render_current#3] -- vbuxx=vbuc1 ldx #0 jsr render_current - //SEG38 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG37 [18] (byte*~) current_piece#71 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG39 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] - //SEG40 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 + //SEG38 [19] phi from main::@25 to main::@1 [phi:main::@25->main::@1] + //SEG39 [19] phi (byte) current_movedown_counter#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#0] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG41 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 + //SEG40 [19] phi (byte) keyboard_events_size#19 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#1] -- vbuz1=vbuc1 sta keyboard_events_size - //SEG42 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy - //SEG43 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 + //SEG41 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#15 [phi:main::@25->main::@1#2] -- register_copy + //SEG42 [19] phi (byte) current_ypos#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#3] -- vbuz1=vbuc1 sta current_ypos - //SEG44 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 + //SEG43 [19] phi (byte) current_xpos#16 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:main::@25->main::@1#4] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG45 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy - //SEG46 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 + //SEG44 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#10 [phi:main::@25->main::@1#5] -- register_copy + //SEG45 [19] phi (byte) current_orientation#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@25->main::@1#6] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG47 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy - //SEG48 main::@1 - //SEG49 main::@4 + //SEG46 [19] phi (byte*) current_piece#11 = (byte*~) current_piece#71 [phi:main::@25->main::@1#7] -- register_copy + //SEG47 main::@1 + //SEG48 main::@4 b4: - //SEG50 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG49 [20] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b4 - //SEG51 main::@7 + //SEG50 main::@7 b7: - //SEG52 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG51 [21] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@7 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$fe bne b7 - //SEG53 main::@9 - //SEG54 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG52 main::@9 + //SEG53 [22] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL - //SEG55 [23] call keyboard_event_scan - //SEG56 [248] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] + //SEG54 [23] call keyboard_event_scan + //SEG55 [248] phi from main::@9 to keyboard_event_scan [phi:main::@9->keyboard_event_scan] jsr keyboard_event_scan - //SEG57 [24] phi from main::@9 to main::@27 [phi:main::@9->main::@27] - //SEG58 main::@27 - //SEG59 [25] call keyboard_event_get + //SEG56 [24] phi from main::@9 to main::@27 [phi:main::@9->main::@27] + //SEG57 main::@27 + //SEG58 [25] call keyboard_event_get jsr keyboard_event_get - //SEG60 [26] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 + //SEG59 [26] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a - //SEG61 main::@28 - //SEG62 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa + //SEG60 main::@28 + //SEG61 [27] (byte) main::key_event#0 ← (byte) keyboard_event_get::return#3 -- vbuz1=vbuaa sta key_event - //SEG63 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 - //SEG64 [29] call play_move_down + //SEG62 [28] (byte) play_move_down::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG63 [29] call play_move_down jsr play_move_down - //SEG65 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx + //SEG64 [30] (byte) play_move_down::return#0 ← (byte) play_move_down::return#3 -- vbuaa=vbuxx txa - //SEG66 main::@29 - //SEG67 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 + //SEG65 main::@29 + //SEG66 [31] (byte~) main::$10 ← (byte) play_move_down::return#0 // (byte~) main::$10 = (byte) play_move_down::return#0 // register copy reg byte a - //SEG68 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa + //SEG67 [32] (byte) main::render#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte~) main::$10 -- vbuz1=vbuc1_plus_vbuaa clc adc #0 sta render - //SEG69 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG68 [33] (byte) play_move_leftright::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG70 [34] call play_move_leftright + //SEG69 [34] call play_move_leftright jsr play_move_leftright - //SEG71 [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 + //SEG70 [35] (byte) play_move_leftright::return#0 ← (byte) play_move_leftright::return#2 // (byte) play_move_leftright::return#0 = (byte) play_move_leftright::return#2 // register copy reg byte a - //SEG72 main::@30 - //SEG73 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 + //SEG71 main::@30 + //SEG72 [36] (byte~) main::$11 ← (byte) play_move_leftright::return#0 // (byte~) main::$11 = (byte) play_move_leftright::return#0 // register copy reg byte a - //SEG74 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa + //SEG73 [37] (byte) main::render#2 ← (byte) main::render#1 + (byte~) main::$11 -- vbuz1=vbuz1_plus_vbuaa clc adc render sta render - //SEG75 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 + //SEG74 [38] (byte) play_move_rotate::key_event#0 ← (byte) main::key_event#0 -- vbuaa=vbuz1 lda key_event - //SEG76 [39] call play_move_rotate + //SEG75 [39] call play_move_rotate jsr play_move_rotate - //SEG77 [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 + //SEG76 [40] (byte) play_move_rotate::return#0 ← (byte) play_move_rotate::return#2 // (byte) play_move_rotate::return#0 = (byte) play_move_rotate::return#2 // register copy reg byte a - //SEG78 main::@31 - //SEG79 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 + //SEG77 main::@31 + //SEG78 [41] (byte~) main::$12 ← (byte) play_move_rotate::return#0 // (byte~) main::$12 = (byte) play_move_rotate::return#0 // register copy reg byte a - //SEG80 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa + //SEG79 [42] (byte) main::render#3 ← (byte) main::render#2 + (byte~) main::$12 -- vbuaa=vbuz1_plus_vbuaa clc adc render - //SEG81 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 + //SEG80 [43] if((byte) main::render#3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@10 -- vbuaa_eq_0_then_la1 cmp #0 beq b10 - //SEG82 [44] phi from main::@31 to main::@19 [phi:main::@31->main::@19] - //SEG83 main::@19 - //SEG84 [45] call render_playfield - //SEG85 [72] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] + //SEG81 [44] phi from main::@31 to main::@19 [phi:main::@31->main::@19] + //SEG82 main::@19 + //SEG83 [45] call render_playfield + //SEG84 [72] phi from main::@19 to render_playfield [phi:main::@19->render_playfield] jsr render_playfield - //SEG86 main::@32 - //SEG87 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 + //SEG85 main::@32 + //SEG86 [46] (byte~) current_ypos#71 ← (byte) current_ypos#16 -- vbuxx=vbuz1 ldx current_ypos - //SEG88 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG87 [47] (byte~) current_xpos#96 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta current_xpos_96 - //SEG89 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 + //SEG88 [48] (byte*~) current_piece_gfx#88 ← (byte*) current_piece_gfx#18 -- pbuz1=pbuz2 lda current_piece_gfx sta current_piece_gfx_88 lda current_piece_gfx+1 sta current_piece_gfx_88+1 - //SEG90 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 + //SEG89 [49] (byte~) current_piece_color#76 ← (byte) current_piece_color#13 -- vbuz1=vbuz2 lda current_piece_color sta current_piece_color_76 - //SEG91 [50] call render_current - //SEG92 [52] phi from main::@32 to render_current [phi:main::@32->render_current] - //SEG93 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy - //SEG94 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy - //SEG95 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy - //SEG96 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy + //SEG90 [50] call render_current + //SEG91 [52] phi from main::@32 to render_current [phi:main::@32->render_current] + //SEG92 [52] phi (byte) current_piece_color#67 = (byte~) current_piece_color#76 [phi:main::@32->render_current#0] -- register_copy + //SEG93 [52] phi (byte*) current_piece_gfx#64 = (byte*~) current_piece_gfx#88 [phi:main::@32->render_current#1] -- register_copy + //SEG94 [52] phi (byte) current_xpos#63 = (byte~) current_xpos#96 [phi:main::@32->render_current#2] -- register_copy + //SEG95 [52] phi (byte) current_ypos#22 = (byte~) current_ypos#71 [phi:main::@32->render_current#3] -- register_copy jsr render_current - //SEG97 main::@10 + //SEG96 main::@10 b10: - //SEG98 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG97 [51] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG99 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] - //SEG100 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy - //SEG101 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy - //SEG102 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy - //SEG103 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy - //SEG104 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy - //SEG105 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy - //SEG106 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy - //SEG107 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy + //SEG98 [19] phi from main::@10 to main::@1 [phi:main::@10->main::@1] + //SEG99 [19] phi (byte) current_movedown_counter#15 = (byte) current_movedown_counter#12 [phi:main::@10->main::@1#0] -- register_copy + //SEG100 [19] phi (byte) keyboard_events_size#19 = (byte) keyboard_events_size#16 [phi:main::@10->main::@1#1] -- register_copy + //SEG101 [19] phi (byte) current_piece_color#11 = (byte) current_piece_color#13 [phi:main::@10->main::@1#2] -- register_copy + //SEG102 [19] phi (byte) current_ypos#12 = (byte) current_ypos#16 [phi:main::@10->main::@1#3] -- register_copy + //SEG103 [19] phi (byte) current_xpos#16 = (byte) current_xpos#23 [phi:main::@10->main::@1#4] -- register_copy + //SEG104 [19] phi (byte*) current_piece_gfx#15 = (byte*) current_piece_gfx#18 [phi:main::@10->main::@1#5] -- register_copy + //SEG105 [19] phi (byte) current_orientation#15 = (byte) current_orientation#23 [phi:main::@10->main::@1#6] -- register_copy + //SEG106 [19] phi (byte*) current_piece#11 = (byte*) current_piece#13 [phi:main::@10->main::@1#7] -- register_copy jmp b4 } -//SEG108 render_current +//SEG107 render_current render_current: { .label ypos2 = 8 .label l = 9 .label screen_line = $16 .label xpos = $b .label i = $a - //SEG109 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG108 [53] (byte) render_current::ypos2#0 ← (byte) current_ypos#22 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta ypos2 - //SEG110 [54] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] - //SEG111 [54] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 + //SEG109 [54] phi from render_current to render_current::@1 [phi:render_current->render_current::@1] + //SEG110 [54] phi (byte) render_current::i#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG112 [54] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 + //SEG111 [54] phi (byte) render_current::l#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current->render_current::@1#1] -- vbuz1=vbuc1 sta l - //SEG113 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy - //SEG114 [54] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] - //SEG115 [54] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy - //SEG116 [54] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy - //SEG117 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy - //SEG118 render_current::@1 + //SEG112 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#0 [phi:render_current->render_current::@1#2] -- register_copy + //SEG113 [54] phi from render_current::@2 to render_current::@1 [phi:render_current::@2->render_current::@1] + //SEG114 [54] phi (byte) render_current::i#4 = (byte) render_current::i#8 [phi:render_current::@2->render_current::@1#0] -- register_copy + //SEG115 [54] phi (byte) render_current::l#3 = (byte) render_current::l#1 [phi:render_current::@2->render_current::@1#1] -- register_copy + //SEG116 [54] phi (byte) render_current::ypos2#2 = (byte) render_current::ypos2#1 [phi:render_current::@2->render_current::@1#2] -- register_copy + //SEG117 render_current::@1 b1: - //SEG119 [55] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 + //SEG118 [55] if((byte) render_current::ypos2#2>=(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto render_current::@2 -- vbuz1_ge_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcs b2 - //SEG120 render_current::@6 - //SEG121 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG119 render_current::@6 + //SEG120 [56] (byte*) render_current::screen_line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte) render_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 tay lda screen_lines,y sta screen_line lda screen_lines+1,y sta screen_line+1 - //SEG122 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 + //SEG121 [57] (byte) render_current::xpos#0 ← (byte) current_xpos#63 -- vbuz1=vbuz2 lda current_xpos_63 sta xpos - //SEG123 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] - //SEG124 [58] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 + //SEG122 [58] phi from render_current::@6 to render_current::@3 [phi:render_current::@6->render_current::@3] + //SEG123 [58] phi (byte) render_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_current::@6->render_current::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG125 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy - //SEG126 [58] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy - //SEG127 [58] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] - //SEG128 [58] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy - //SEG129 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy - //SEG130 [58] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy - //SEG131 render_current::@3 + //SEG124 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#0 [phi:render_current::@6->render_current::@3#1] -- register_copy + //SEG125 [58] phi (byte) render_current::i#2 = (byte) render_current::i#4 [phi:render_current::@6->render_current::@3#2] -- register_copy + //SEG126 [58] phi from render_current::@4 to render_current::@3 [phi:render_current::@4->render_current::@3] + //SEG127 [58] phi (byte) render_current::c#2 = (byte) render_current::c#1 [phi:render_current::@4->render_current::@3#0] -- register_copy + //SEG128 [58] phi (byte) render_current::xpos#2 = (byte) render_current::xpos#1 [phi:render_current::@4->render_current::@3#1] -- register_copy + //SEG129 [58] phi (byte) render_current::i#2 = (byte) render_current::i#1 [phi:render_current::@4->render_current::@3#2] -- register_copy + //SEG130 render_current::@3 b3: - //SEG132 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 + //SEG131 [59] (byte) render_current::current_cell#0 ← *((byte*) current_piece_gfx#64 + (byte) render_current::i#2) -- vbuaa=pbuz1_derefidx_vbuz2 ldy i lda (current_piece_gfx_64),y - //SEG133 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 + //SEG132 [60] (byte) render_current::i#1 ← ++ (byte) render_current::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG134 [61] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 + //SEG133 [61] if((byte) render_current::current_cell#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_current::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG135 render_current::@7 - //SEG136 [62] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 + //SEG134 render_current::@7 + //SEG135 [62] if((byte) render_current::xpos#2>=(const byte) PLAYFIELD_COLS#0) goto render_current::@4 -- vbuz1_ge_vbuc1_then_la1 lda xpos cmp #PLAYFIELD_COLS bcs b4 - //SEG137 render_current::@8 - //SEG138 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG136 render_current::@8 + //SEG137 [63] *((byte*) render_current::screen_line#0 + (byte) render_current::xpos#2) ← (byte) current_piece_color#67 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color_67 ldy xpos sta (screen_line),y - //SEG139 render_current::@4 + //SEG138 render_current::@4 b4: - //SEG140 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 + //SEG139 [64] (byte) render_current::xpos#1 ← ++ (byte) render_current::xpos#2 -- vbuz1=_inc_vbuz1 inc xpos - //SEG141 [65] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx + //SEG140 [65] (byte) render_current::c#1 ← ++ (byte) render_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG142 [66] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG141 [66] if((byte) render_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b3 - //SEG143 [67] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] - //SEG144 [67] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy - //SEG145 render_current::@2 + //SEG142 [67] phi from render_current::@1 render_current::@4 to render_current::@2 [phi:render_current::@1/render_current::@4->render_current::@2] + //SEG143 [67] phi (byte) render_current::i#8 = (byte) render_current::i#4 [phi:render_current::@1/render_current::@4->render_current::@2#0] -- register_copy + //SEG144 render_current::@2 b2: - //SEG146 [68] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG145 [68] (byte) render_current::ypos2#1 ← (byte) render_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG147 [69] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 + //SEG146 [69] (byte) render_current::l#1 ← ++ (byte) render_current::l#3 -- vbuz1=_inc_vbuz1 inc l - //SEG148 [70] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG147 [70] if((byte) render_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto render_current::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b1 - //SEG149 render_current::@return - //SEG150 [71] return + //SEG148 render_current::@return + //SEG149 [71] return rts } -//SEG151 render_playfield +//SEG150 render_playfield render_playfield: { .label line = 5 .label i = 7 .label l = 4 - //SEG152 [73] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] - //SEG153 [73] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 + //SEG151 [73] phi from render_playfield to render_playfield::@1 [phi:render_playfield->render_playfield::@1] + //SEG152 [73] phi (byte) render_playfield::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG154 [73] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 + //SEG153 [73] phi (byte) render_playfield::l#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield->render_playfield::@1#1] -- vbuz1=vbuc1 sta l - //SEG155 [73] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] - //SEG156 [73] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy - //SEG157 [73] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy - //SEG158 render_playfield::@1 + //SEG154 [73] phi from render_playfield::@3 to render_playfield::@1 [phi:render_playfield::@3->render_playfield::@1] + //SEG155 [73] phi (byte) render_playfield::i#3 = (byte) render_playfield::i#1 [phi:render_playfield::@3->render_playfield::@1#0] -- register_copy + //SEG156 [73] phi (byte) render_playfield::l#2 = (byte) render_playfield::l#1 [phi:render_playfield::@3->render_playfield::@1#1] -- register_copy + //SEG157 render_playfield::@1 b1: - //SEG159 [74] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 + //SEG158 [74] (byte~) render_playfield::$1 ← (byte) render_playfield::l#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1 lda l asl - //SEG160 [75] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa + //SEG159 [75] (byte*) render_playfield::line#0 ← *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_playfield::$1) -- pbuz1=pptc1_derefidx_vbuaa tay lda screen_lines,y sta line lda screen_lines+1,y sta line+1 - //SEG161 [76] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] - //SEG162 [76] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 + //SEG160 [76] phi from render_playfield::@1 to render_playfield::@2 [phi:render_playfield::@1->render_playfield::@2] + //SEG161 [76] phi (byte) render_playfield::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_playfield::@1->render_playfield::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG163 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy - //SEG164 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy - //SEG165 [76] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] - //SEG166 [76] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy - //SEG167 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy - //SEG168 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy - //SEG169 render_playfield::@2 + //SEG162 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#0 [phi:render_playfield::@1->render_playfield::@2#1] -- register_copy + //SEG163 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#3 [phi:render_playfield::@1->render_playfield::@2#2] -- register_copy + //SEG164 [76] phi from render_playfield::@2 to render_playfield::@2 [phi:render_playfield::@2->render_playfield::@2] + //SEG165 [76] phi (byte) render_playfield::c#2 = (byte) render_playfield::c#1 [phi:render_playfield::@2->render_playfield::@2#0] -- register_copy + //SEG166 [76] phi (byte*) render_playfield::line#2 = (byte*) render_playfield::line#1 [phi:render_playfield::@2->render_playfield::@2#1] -- register_copy + //SEG167 [76] phi (byte) render_playfield::i#2 = (byte) render_playfield::i#1 [phi:render_playfield::@2->render_playfield::@2#2] -- register_copy + //SEG168 render_playfield::@2 b2: - //SEG170 [77] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG169 [77] *((byte*) render_playfield::line#2) ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) render_playfield::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda playfield,y ldy #0 sta (line),y - //SEG171 [78] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 + //SEG170 [78] (byte*) render_playfield::line#1 ← ++ (byte*) render_playfield::line#2 -- pbuz1=_inc_pbuz1 inc line bne !+ inc line+1 !: - //SEG172 [79] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 + //SEG171 [79] (byte) render_playfield::i#1 ← ++ (byte) render_playfield::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG173 [80] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx + //SEG172 [80] (byte) render_playfield::c#1 ← ++ (byte) render_playfield::c#2 -- vbuxx=_inc_vbuxx inx - //SEG174 [81] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG173 [81] if((byte) render_playfield::c#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS-1+1 bne b2 - //SEG175 render_playfield::@3 - //SEG176 [82] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 + //SEG174 render_playfield::@3 + //SEG175 [82] (byte) render_playfield::l#1 ← ++ (byte) render_playfield::l#2 -- vbuz1=_inc_vbuz1 inc l - //SEG177 [83] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG176 [83] if((byte) render_playfield::l#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_playfield::@1 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG178 render_playfield::@return - //SEG179 [84] return + //SEG177 render_playfield::@return + //SEG178 [84] return rts } -//SEG180 play_move_rotate +//SEG179 play_move_rotate play_move_rotate: { .label orientation = 4 - //SEG181 [85] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG180 [85] if((byte) play_move_rotate::key_event#0==(const byte) KEY_Z#0) goto play_move_rotate::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_Z beq b1 - //SEG182 play_move_rotate::@6 - //SEG183 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 + //SEG181 play_move_rotate::@6 + //SEG182 [86] if((byte) play_move_rotate::key_event#0==(const byte) KEY_X#0) goto play_move_rotate::@2 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_X beq b2 - //SEG184 [87] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] + //SEG183 [87] phi from play_move_rotate::@14 play_move_rotate::@6 to play_move_rotate::@return [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return] b3: - //SEG185 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy - //SEG186 [87] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy - //SEG187 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG184 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#17 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#0] -- register_copy + //SEG185 [87] phi (byte) current_orientation#23 = (byte) current_orientation#18 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#1] -- register_copy + //SEG186 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_rotate::@14/play_move_rotate::@6->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #0 - //SEG188 play_move_rotate::@return + //SEG187 play_move_rotate::@return breturn: - //SEG189 [88] return + //SEG188 [88] return rts - //SEG190 play_move_rotate::@2 + //SEG189 play_move_rotate::@2 b2: - //SEG191 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 + //SEG190 [89] (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 ← (byte) current_orientation#18 + (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_plus_vbuc1 lda #$10 clc adc current_orientation - //SEG192 [90] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG191 [90] (byte) play_move_rotate::orientation#2 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$2 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation - //SEG193 [91] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] - //SEG194 [91] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy - //SEG195 play_move_rotate::@4 + //SEG192 [91] phi from play_move_rotate::@1 play_move_rotate::@2 to play_move_rotate::@4 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4] + //SEG193 [91] phi (byte) play_move_rotate::orientation#3 = (byte) play_move_rotate::orientation#1 [phi:play_move_rotate::@1/play_move_rotate::@2->play_move_rotate::@4#0] -- register_copy + //SEG194 play_move_rotate::@4 b4: - //SEG196 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 + //SEG195 [92] (byte) collision::xpos#3 ← (byte) current_xpos#23 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG197 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG196 [93] (byte) collision::ypos#3 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG198 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 + //SEG197 [94] (byte) collision::orientation#3 ← (byte) play_move_rotate::orientation#3 -- vbuxx=vbuz1 ldx orientation - //SEG199 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG198 [95] (byte*~) current_piece#75 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_75 lda current_piece+1 sta current_piece_75+1 - //SEG200 [96] call collision - //SEG201 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] - //SEG202 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy - //SEG203 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy - //SEG204 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy - //SEG205 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy + //SEG199 [96] call collision + //SEG200 [104] phi from play_move_rotate::@4 to collision [phi:play_move_rotate::@4->collision] + //SEG201 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#3 [phi:play_move_rotate::@4->collision#0] -- register_copy + //SEG202 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#3 [phi:play_move_rotate::@4->collision#1] -- register_copy + //SEG203 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#3 [phi:play_move_rotate::@4->collision#2] -- register_copy + //SEG204 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#75 [phi:play_move_rotate::@4->collision#3] -- register_copy jsr collision - //SEG206 [97] (byte) collision::return#13 ← (byte) collision::return#14 + //SEG205 [97] (byte) collision::return#13 ← (byte) collision::return#14 // (byte) collision::return#13 = (byte) collision::return#14 // register copy reg byte a - //SEG207 play_move_rotate::@14 - //SEG208 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 + //SEG206 play_move_rotate::@14 + //SEG207 [98] (byte~) play_move_rotate::$6 ← (byte) collision::return#13 // (byte~) play_move_rotate::$6 = (byte) collision::return#13 // register copy reg byte a - //SEG209 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG208 [99] if((byte~) play_move_rotate::$6!=(const byte) COLLISION_NONE#0) goto play_move_rotate::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG210 play_move_rotate::@11 - //SEG211 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 + //SEG209 play_move_rotate::@11 + //SEG210 [100] (byte) current_orientation#8 ← (byte) play_move_rotate::orientation#3 -- vbuz1=vbuz2 lda orientation sta current_orientation - //SEG212 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 + //SEG211 [101] (byte*) current_piece_gfx#8 ← (byte*) current_piece#13 + (byte) current_orientation#8 -- pbuz1=pbuz2_plus_vbuz3 clc adc current_piece sta current_piece_gfx lda #0 adc current_piece+1 sta current_piece_gfx+1 - //SEG213 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] - //SEG214 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy - //SEG215 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy - //SEG216 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 + //SEG212 [87] phi from play_move_rotate::@11 to play_move_rotate::@return [phi:play_move_rotate::@11->play_move_rotate::@return] + //SEG213 [87] phi (byte*) current_piece_gfx#18 = (byte*) current_piece_gfx#8 [phi:play_move_rotate::@11->play_move_rotate::@return#0] -- register_copy + //SEG214 [87] phi (byte) current_orientation#23 = (byte) current_orientation#8 [phi:play_move_rotate::@11->play_move_rotate::@return#1] -- register_copy + //SEG215 [87] phi (byte) play_move_rotate::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_rotate::@11->play_move_rotate::@return#2] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG217 play_move_rotate::@1 + //SEG216 play_move_rotate::@1 b1: - //SEG218 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 + //SEG217 [102] (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 ← (byte) current_orientation#18 - (byte/signed byte/word/signed word/dword/signed dword) 16 -- vbuaa=vbuz1_minus_vbuc1 lda current_orientation sec sbc #$10 - //SEG219 [103] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 + //SEG218 [103] (byte) play_move_rotate::orientation#1 ← (byte/signed word/word/dword/signed dword~) play_move_rotate::$4 & (byte/signed byte/word/signed word/dword/signed dword) 63 -- vbuz1=vbuaa_band_vbuc1 and #$3f sta orientation jmp b4 } -//SEG220 collision +//SEG219 collision collision: { .label xpos = 7 .label piece_gfx = 5 @@ -12755,7 +13630,7 @@ collision: { .label i_3 = $a .label i_11 = $a .label i_13 = $a - //SEG221 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx + //SEG220 [105] (byte*) collision::piece_gfx#0 ← (byte*) current_piece#15 + (byte) collision::orientation#4 -- pbuz1=pbuz1_plus_vbuxx txa clc adc piece_gfx @@ -12763,548 +13638,548 @@ collision: { lda #0 adc piece_gfx+1 sta piece_gfx+1 - //SEG222 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 + //SEG221 [106] (byte) collision::ypos2#0 ← (byte) collision::ypos#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuyy_rol_1 tya asl sta ypos2 - //SEG223 [107] phi from collision to collision::@1 [phi:collision->collision::@1] - //SEG224 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 + //SEG222 [107] phi from collision to collision::@1 [phi:collision->collision::@1] + //SEG223 [107] phi (byte) collision::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG225 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 + //SEG224 [107] phi (byte) collision::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision->collision::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG226 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy - //SEG227 collision::@1 + //SEG225 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#0 [phi:collision->collision::@1#2] -- register_copy + //SEG226 collision::@1 b1: - //SEG228 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG227 [108] (byte*) collision::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) collision::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG229 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 + //SEG228 [109] (byte~) collision::col#9 ← (byte) collision::xpos#5 -- vbuz1=vbuz2 lda xpos sta col - //SEG230 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] - //SEG231 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 + //SEG229 [110] phi from collision::@1 to collision::@2 [phi:collision::@1->collision::@2] + //SEG230 [110] phi (byte) collision::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:collision::@1->collision::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG232 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy - //SEG233 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy - //SEG234 collision::@2 + //SEG231 [110] phi (byte) collision::col#2 = (byte~) collision::col#9 [phi:collision::@1->collision::@2#1] -- register_copy + //SEG232 [110] phi (byte) collision::i#2 = (byte) collision::i#3 [phi:collision::@1->collision::@2#2] -- register_copy + //SEG233 collision::@2 b2: - //SEG235 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 + //SEG234 [111] (byte) collision::i#1 ← ++ (byte) collision::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG236 [112] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG235 [112] if(*((byte*) collision::piece_gfx#0 + (byte) collision::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (piece_gfx),y cmp #0 beq b3 - //SEG237 collision::@8 - //SEG238 [113] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG236 collision::@8 + //SEG237 [113] if((byte) collision::ypos2#2<(byte/signed byte/word/signed word/dword/signed dword) 2*(const byte) PLAYFIELD_LINES#0) goto collision::@4 -- vbuz1_lt_vbuc1_then_la1 lda ypos2 cmp #2*PLAYFIELD_LINES bcc b4 - //SEG239 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] - //SEG240 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 + //SEG238 [114] phi from collision::@8 to collision::@return [phi:collision::@8->collision::@return] + //SEG239 [114] phi (byte) collision::return#14 = (const byte) COLLISION_BOTTOM#0 [phi:collision::@8->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_BOTTOM - //SEG241 collision::@return + //SEG240 collision::@return breturn: - //SEG242 [115] return + //SEG241 [115] return rts - //SEG243 collision::@4 + //SEG242 collision::@4 b4: - //SEG244 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 + //SEG243 [116] (byte~) collision::$7 ← (byte) collision::col#2 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuz1_band_vbuc1 lda #$80 and col - //SEG245 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 + //SEG244 [117] if((byte~) collision::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG246 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] - //SEG247 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 + //SEG245 [114] phi from collision::@4 to collision::@return [phi:collision::@4->collision::@return] + //SEG246 [114] phi (byte) collision::return#14 = (const byte) COLLISION_LEFT#0 [phi:collision::@4->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_LEFT jmp breturn - //SEG248 collision::@5 + //SEG247 collision::@5 b5: - //SEG249 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 + //SEG248 [118] if((byte) collision::col#2<(const byte) PLAYFIELD_COLS#0) goto collision::@6 -- vbuz1_lt_vbuc1_then_la1 lda col cmp #PLAYFIELD_COLS bcc b6 - //SEG250 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] - //SEG251 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 + //SEG249 [114] phi from collision::@5 to collision::@return [phi:collision::@5->collision::@return] + //SEG250 [114] phi (byte) collision::return#14 = (const byte) COLLISION_RIGHT#0 [phi:collision::@5->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_RIGHT jmp breturn - //SEG252 collision::@6 + //SEG251 collision::@6 b6: - //SEG253 [119] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG252 [119] if(*((byte*) collision::playfield_line#0 + (byte) collision::col#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto collision::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy col lda (playfield_line),y cmp #0 beq b3 - //SEG254 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] - //SEG255 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 + //SEG253 [114] phi from collision::@6 to collision::@return [phi:collision::@6->collision::@return] + //SEG254 [114] phi (byte) collision::return#14 = (const byte) COLLISION_PLAYFIELD#0 [phi:collision::@6->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_PLAYFIELD jmp breturn - //SEG256 collision::@3 + //SEG255 collision::@3 b3: - //SEG257 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 + //SEG256 [120] (byte) collision::col#1 ← ++ (byte) collision::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG258 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx + //SEG257 [121] (byte) collision::c#1 ← ++ (byte) collision::c#2 -- vbuxx=_inc_vbuxx inx - //SEG259 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 + //SEG258 [122] if((byte) collision::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@21 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b21 - //SEG260 collision::@17 - //SEG261 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG259 collision::@17 + //SEG260 [123] (byte) collision::ypos2#1 ← (byte) collision::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG262 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 + //SEG261 [124] (byte) collision::l#1 ← ++ (byte) collision::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG263 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 + //SEG262 [125] if((byte) collision::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto collision::@20 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b20 - //SEG264 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] - //SEG265 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 + //SEG263 [114] phi from collision::@17 to collision::@return [phi:collision::@17->collision::@return] + //SEG264 [114] phi (byte) collision::return#14 = (const byte) COLLISION_NONE#0 [phi:collision::@17->collision::@return#0] -- vbuaa=vbuc1 lda #COLLISION_NONE jmp breturn - //SEG266 collision::@20 + //SEG265 collision::@20 b20: - //SEG267 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG266 [126] (byte~) collision::i#11 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_11 - //SEG268 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] - //SEG269 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy - //SEG270 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy - //SEG271 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy + //SEG267 [107] phi from collision::@20 to collision::@1 [phi:collision::@20->collision::@1] + //SEG268 [107] phi (byte) collision::l#6 = (byte) collision::l#1 [phi:collision::@20->collision::@1#0] -- register_copy + //SEG269 [107] phi (byte) collision::i#3 = (byte~) collision::i#11 [phi:collision::@20->collision::@1#1] -- register_copy + //SEG270 [107] phi (byte) collision::ypos2#2 = (byte) collision::ypos2#1 [phi:collision::@20->collision::@1#2] -- register_copy jmp b1 - //SEG272 collision::@21 + //SEG271 collision::@21 b21: - //SEG273 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 + //SEG272 [127] (byte~) collision::i#13 ← (byte) collision::i#1 -- vbuz1=vbuz2 lda i sta i_13 - //SEG274 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] - //SEG275 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy - //SEG276 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy - //SEG277 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy + //SEG273 [110] phi from collision::@21 to collision::@2 [phi:collision::@21->collision::@2] + //SEG274 [110] phi (byte) collision::c#2 = (byte) collision::c#1 [phi:collision::@21->collision::@2#0] -- register_copy + //SEG275 [110] phi (byte) collision::col#2 = (byte) collision::col#1 [phi:collision::@21->collision::@2#1] -- register_copy + //SEG276 [110] phi (byte) collision::i#2 = (byte~) collision::i#13 [phi:collision::@21->collision::@2#2] -- register_copy jmp b2 } -//SEG278 play_move_leftright +//SEG277 play_move_leftright play_move_leftright: { - //SEG279 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 + //SEG278 [128] if((byte) play_move_leftright::key_event#0==(const byte) KEY_COMMA#0) goto play_move_leftright::@1 -- vbuaa_eq_vbuc1_then_la1 cmp #KEY_COMMA beq b1 - //SEG280 play_move_leftright::@6 - //SEG281 [129] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG279 play_move_leftright::@6 + //SEG280 [129] if((byte) play_move_leftright::key_event#0!=(const byte) KEY_DOT#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_DOT bne b3 - //SEG282 play_move_leftright::@7 - //SEG283 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 + //SEG281 play_move_leftright::@7 + //SEG282 [130] (byte) collision::xpos#2 ← (byte) current_xpos#19 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1 ldy current_xpos iny sty collision.xpos - //SEG284 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG283 [131] (byte) collision::ypos#2 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG285 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG284 [132] (byte) collision::orientation#2 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG286 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG285 [133] (byte*~) current_piece#74 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_74 lda current_piece+1 sta current_piece_74+1 - //SEG287 [134] call collision - //SEG288 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] - //SEG289 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy - //SEG290 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy - //SEG291 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy - //SEG292 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy + //SEG286 [134] call collision + //SEG287 [104] phi from play_move_leftright::@7 to collision [phi:play_move_leftright::@7->collision] + //SEG288 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#2 [phi:play_move_leftright::@7->collision#0] -- register_copy + //SEG289 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#2 [phi:play_move_leftright::@7->collision#1] -- register_copy + //SEG290 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#2 [phi:play_move_leftright::@7->collision#2] -- register_copy + //SEG291 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#74 [phi:play_move_leftright::@7->collision#3] -- register_copy jsr collision - //SEG293 [135] (byte) collision::return#12 ← (byte) collision::return#14 + //SEG292 [135] (byte) collision::return#12 ← (byte) collision::return#14 // (byte) collision::return#12 = (byte) collision::return#14 // register copy reg byte a - //SEG294 play_move_leftright::@15 - //SEG295 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 + //SEG293 play_move_leftright::@15 + //SEG294 [136] (byte~) play_move_leftright::$4 ← (byte) collision::return#12 // (byte~) play_move_leftright::$4 = (byte) collision::return#12 // register copy reg byte a - //SEG296 [137] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG295 [137] if((byte~) play_move_leftright::$4!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG297 play_move_leftright::@8 - //SEG298 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 + //SEG296 play_move_leftright::@8 + //SEG297 [138] (byte) current_xpos#7 ← ++ (byte) current_xpos#19 -- vbuz1=_inc_vbuz1 inc current_xpos - //SEG299 [139] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] + //SEG298 [139] phi from play_move_leftright::@11 play_move_leftright::@8 to play_move_leftright::@return [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return] b2: - //SEG300 [139] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy - //SEG301 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG299 [139] phi (byte) current_xpos#23 = (byte) current_xpos#9 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#0] -- register_copy + //SEG300 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_leftright::@11/play_move_leftright::@8->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #1 jmp breturn - //SEG302 [139] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] + //SEG301 [139] phi from play_move_leftright::@14 play_move_leftright::@15 play_move_leftright::@6 to play_move_leftright::@return [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return] b3: - //SEG303 [139] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy - //SEG304 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 + //SEG302 [139] phi (byte) current_xpos#23 = (byte) current_xpos#19 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#0] -- register_copy + //SEG303 [139] phi (byte) play_move_leftright::return#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_leftright::@14/play_move_leftright::@15/play_move_leftright::@6->play_move_leftright::@return#1] -- vbuaa=vbuc1 lda #0 - //SEG305 play_move_leftright::@return + //SEG304 play_move_leftright::@return breturn: - //SEG306 [140] return + //SEG305 [140] return rts - //SEG307 play_move_leftright::@1 + //SEG306 play_move_leftright::@1 b1: - //SEG308 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 + //SEG307 [141] (byte) collision::xpos#1 ← (byte) current_xpos#19 - (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_minus_1 ldx current_xpos dex stx collision.xpos - //SEG309 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 + //SEG308 [142] (byte) collision::ypos#1 ← (byte) current_ypos#16 -- vbuyy=vbuz1 ldy current_ypos - //SEG310 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 + //SEG309 [143] (byte) collision::orientation#1 ← (byte) current_orientation#18 -- vbuxx=vbuz1 ldx current_orientation - //SEG311 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 + //SEG310 [144] (byte*~) current_piece#73 ← (byte*) current_piece#13 -- pbuz1=pbuz2 lda current_piece sta current_piece_73 lda current_piece+1 sta current_piece_73+1 - //SEG312 [145] call collision - //SEG313 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] - //SEG314 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy - //SEG315 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy - //SEG316 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy - //SEG317 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy + //SEG311 [145] call collision + //SEG312 [104] phi from play_move_leftright::@1 to collision [phi:play_move_leftright::@1->collision] + //SEG313 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#1 [phi:play_move_leftright::@1->collision#0] -- register_copy + //SEG314 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#1 [phi:play_move_leftright::@1->collision#1] -- register_copy + //SEG315 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#1 [phi:play_move_leftright::@1->collision#2] -- register_copy + //SEG316 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#73 [phi:play_move_leftright::@1->collision#3] -- register_copy jsr collision - //SEG318 [146] (byte) collision::return#1 ← (byte) collision::return#14 + //SEG317 [146] (byte) collision::return#1 ← (byte) collision::return#14 // (byte) collision::return#1 = (byte) collision::return#14 // register copy reg byte a - //SEG319 play_move_leftright::@14 - //SEG320 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 + //SEG318 play_move_leftright::@14 + //SEG319 [147] (byte~) play_move_leftright::$8 ← (byte) collision::return#1 // (byte~) play_move_leftright::$8 = (byte) collision::return#1 // register copy reg byte a - //SEG321 [148] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 + //SEG320 [148] if((byte~) play_move_leftright::$8!=(const byte) COLLISION_NONE#0) goto play_move_leftright::@return -- vbuaa_neq_vbuc1_then_la1 cmp #COLLISION_NONE bne b3 - //SEG322 play_move_leftright::@11 - //SEG323 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 + //SEG321 play_move_leftright::@11 + //SEG322 [149] (byte) current_xpos#9 ← -- (byte) current_xpos#19 -- vbuz1=_dec_vbuz1 dec current_xpos jmp b2 } -//SEG324 play_move_down +//SEG323 play_move_down play_move_down: { - //SEG325 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 + //SEG324 [150] (byte) current_movedown_counter#10 ← ++ (byte) current_movedown_counter#15 -- vbuz1=_inc_vbuz1 inc current_movedown_counter - //SEG326 [151] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 + //SEG325 [151] if((byte) play_move_down::key_event#0!=(const byte) KEY_SPACE#0) goto play_move_down::@1 -- vbuaa_neq_vbuc1_then_la1 cmp #KEY_SPACE bne b3 - //SEG327 [152] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] - //SEG328 play_move_down::@8 - //SEG329 [153] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] - //SEG330 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG326 [152] phi from play_move_down to play_move_down::@8 [phi:play_move_down->play_move_down::@8] + //SEG327 play_move_down::@8 + //SEG328 [153] phi from play_move_down::@8 to play_move_down::@1 [phi:play_move_down::@8->play_move_down::@1] + //SEG329 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@8->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #1 jmp b1 - //SEG331 [153] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] + //SEG330 [153] phi from play_move_down to play_move_down::@1 [phi:play_move_down->play_move_down::@1] b3: - //SEG332 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 + //SEG331 [153] phi (byte) play_move_down::movedown#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down->play_move_down::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG333 play_move_down::@1 + //SEG332 play_move_down::@1 b1: - //SEG334 [154] call keyboard_event_pressed - //SEG335 [237] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] - //SEG336 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG333 [154] call keyboard_event_pressed + //SEG334 [237] phi from play_move_down::@1 to keyboard_event_pressed [phi:play_move_down::@1->keyboard_event_pressed] + //SEG335 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_SPACE#0 [phi:play_move_down::@1->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_SPACE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG337 [155] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 + //SEG336 [155] (byte) keyboard_event_pressed::return#12 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#12 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG338 play_move_down::@17 - //SEG339 [156] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 + //SEG337 play_move_down::@17 + //SEG338 [156] (byte~) play_move_down::$2 ← (byte) keyboard_event_pressed::return#12 // (byte~) play_move_down::$2 = (byte) keyboard_event_pressed::return#12 // register copy reg byte a - //SEG340 [157] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 + //SEG339 [157] if((byte~) play_move_down::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG341 play_move_down::@9 - //SEG342 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG340 play_move_down::@9 + //SEG341 [158] if((byte) current_movedown_counter#10<(const byte) current_movedown_fast#0) goto play_move_down::@2 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_fast bcc b2 - //SEG343 play_move_down::@10 - //SEG344 [159] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx + //SEG342 play_move_down::@10 + //SEG343 [159] (byte) play_move_down::movedown#2 ← ++ (byte) play_move_down::movedown#10 -- vbuxx=_inc_vbuxx inx - //SEG345 [160] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] - //SEG346 [160] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy - //SEG347 play_move_down::@2 + //SEG344 [160] phi from play_move_down::@10 play_move_down::@17 play_move_down::@9 to play_move_down::@2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2] + //SEG345 [160] phi (byte) play_move_down::movedown#7 = (byte) play_move_down::movedown#2 [phi:play_move_down::@10/play_move_down::@17/play_move_down::@9->play_move_down::@2#0] -- register_copy + //SEG346 play_move_down::@2 b2: - //SEG348 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 + //SEG347 [161] if((byte) current_movedown_counter#10<(const byte) current_movedown_slow#0) goto play_move_down::@4 -- vbuz1_lt_vbuc1_then_la1 lda current_movedown_counter cmp #current_movedown_slow bcc b4 - //SEG349 play_move_down::@11 - //SEG350 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx + //SEG348 play_move_down::@11 + //SEG349 [162] (byte) play_move_down::movedown#3 ← ++ (byte) play_move_down::movedown#7 -- vbuxx=_inc_vbuxx inx - //SEG351 [163] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] - //SEG352 [163] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy - //SEG353 play_move_down::@4 + //SEG350 [163] phi from play_move_down::@11 play_move_down::@2 to play_move_down::@4 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4] + //SEG351 [163] phi (byte) play_move_down::movedown#6 = (byte) play_move_down::movedown#3 [phi:play_move_down::@11/play_move_down::@2->play_move_down::@4#0] -- register_copy + //SEG352 play_move_down::@4 b4: - //SEG354 [164] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 + //SEG353 [164] if((byte) play_move_down::movedown#6==(byte/signed byte/word/signed word/dword/signed dword) 0) goto play_move_down::@return -- vbuxx_eq_0_then_la1 cpx #0 beq b5 - //SEG355 play_move_down::@12 - //SEG356 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 + //SEG354 play_move_down::@12 + //SEG355 [165] (byte) collision::ypos#0 ← (byte) current_ypos#12 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_plus_1 ldy current_ypos iny - //SEG357 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG356 [166] (byte) collision::xpos#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta collision.xpos - //SEG358 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 + //SEG357 [167] (byte) collision::orientation#0 ← (byte) current_orientation#15 -- vbuxx=vbuz1 ldx current_orientation - //SEG359 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 + //SEG358 [168] (byte*~) current_piece#72 ← (byte*) current_piece#11 -- pbuz1=pbuz2 lda current_piece sta current_piece_72 lda current_piece+1 sta current_piece_72+1 - //SEG360 [169] call collision - //SEG361 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] - //SEG362 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy - //SEG363 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy - //SEG364 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy - //SEG365 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy + //SEG359 [169] call collision + //SEG360 [104] phi from play_move_down::@12 to collision [phi:play_move_down::@12->collision] + //SEG361 [104] phi (byte) collision::xpos#5 = (byte) collision::xpos#0 [phi:play_move_down::@12->collision#0] -- register_copy + //SEG362 [104] phi (byte) collision::ypos#4 = (byte) collision::ypos#0 [phi:play_move_down::@12->collision#1] -- register_copy + //SEG363 [104] phi (byte) collision::orientation#4 = (byte) collision::orientation#0 [phi:play_move_down::@12->collision#2] -- register_copy + //SEG364 [104] phi (byte*) current_piece#15 = (byte*~) current_piece#72 [phi:play_move_down::@12->collision#3] -- register_copy jsr collision - //SEG366 [170] (byte) collision::return#0 ← (byte) collision::return#14 + //SEG365 [170] (byte) collision::return#0 ← (byte) collision::return#14 // (byte) collision::return#0 = (byte) collision::return#14 // register copy reg byte a - //SEG367 play_move_down::@18 - //SEG368 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 + //SEG366 play_move_down::@18 + //SEG367 [171] (byte~) play_move_down::$12 ← (byte) collision::return#0 // (byte~) play_move_down::$12 = (byte) collision::return#0 // register copy reg byte a - //SEG369 [172] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 + //SEG368 [172] if((byte~) play_move_down::$12==(const byte) COLLISION_NONE#0) goto play_move_down::@6 -- vbuaa_eq_vbuc1_then_la1 cmp #COLLISION_NONE beq b6 - //SEG370 [173] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] - //SEG371 play_move_down::@13 - //SEG372 [174] call lock_current + //SEG369 [173] phi from play_move_down::@18 to play_move_down::@13 [phi:play_move_down::@18->play_move_down::@13] + //SEG370 play_move_down::@13 + //SEG371 [174] call lock_current jsr lock_current - //SEG373 [175] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] - //SEG374 play_move_down::@19 - //SEG375 [176] call remove_lines - //SEG376 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] + //SEG372 [175] phi from play_move_down::@13 to play_move_down::@19 [phi:play_move_down::@13->play_move_down::@19] + //SEG373 play_move_down::@19 + //SEG374 [176] call remove_lines + //SEG375 [198] phi from play_move_down::@19 to remove_lines [phi:play_move_down::@19->remove_lines] jsr remove_lines - //SEG377 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] - //SEG378 play_move_down::@20 - //SEG379 [178] call spawn_current - //SEG380 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] + //SEG376 [177] phi from play_move_down::@19 to play_move_down::@20 [phi:play_move_down::@19->play_move_down::@20] + //SEG377 play_move_down::@20 + //SEG378 [178] call spawn_current + //SEG379 [184] phi from play_move_down::@20 to spawn_current [phi:play_move_down::@20->spawn_current] jsr spawn_current - //SEG381 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG380 [179] (byte*~) current_piece#76 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) -- pbuz1=pptc1_derefidx_vbuz2 ldy spawn_current._3 lda PIECES,y sta current_piece lda PIECES+1,y sta current_piece+1 - //SEG382 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] - //SEG383 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy - //SEG384 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 + //SEG381 [180] phi from play_move_down::@20 to play_move_down::@7 [phi:play_move_down::@20->play_move_down::@7] + //SEG382 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#15 [phi:play_move_down::@20->play_move_down::@7#0] -- register_copy + //SEG383 [180] phi (byte) current_xpos#36 = (byte/signed byte/word/signed word/dword/signed dword) 3 [phi:play_move_down::@20->play_move_down::@7#1] -- vbuz1=vbuc1 lda #3 sta current_xpos - //SEG385 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy - //SEG386 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 + //SEG384 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#10 [phi:play_move_down::@20->play_move_down::@7#2] -- register_copy + //SEG385 [180] phi (byte) current_orientation#33 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#3] -- vbuz1=vbuc1 lda #0 sta current_orientation - //SEG387 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy - //SEG388 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 + //SEG386 [180] phi (byte*) current_piece#23 = (byte*~) current_piece#76 [phi:play_move_down::@20->play_move_down::@7#4] -- register_copy + //SEG387 [180] phi (byte) current_ypos#31 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@20->play_move_down::@7#5] -- vbuz1=vbuc1 sta current_ypos - //SEG389 play_move_down::@7 + //SEG388 play_move_down::@7 b7: - //SEG390 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] - //SEG391 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy - //SEG392 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy - //SEG393 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy - //SEG394 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy - //SEG395 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy - //SEG396 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy - //SEG397 [181] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 + //SEG389 [181] phi from play_move_down::@7 to play_move_down::@return [phi:play_move_down::@7->play_move_down::@return] + //SEG390 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#23 [phi:play_move_down::@7->play_move_down::@return#0] -- register_copy + //SEG391 [181] phi (byte) current_xpos#19 = (byte) current_xpos#36 [phi:play_move_down::@7->play_move_down::@return#1] -- register_copy + //SEG392 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#29 [phi:play_move_down::@7->play_move_down::@return#2] -- register_copy + //SEG393 [181] phi (byte) current_orientation#18 = (byte) current_orientation#33 [phi:play_move_down::@7->play_move_down::@return#3] -- register_copy + //SEG394 [181] phi (byte*) current_piece#13 = (byte*) current_piece#23 [phi:play_move_down::@7->play_move_down::@return#4] -- register_copy + //SEG395 [181] phi (byte) current_ypos#16 = (byte) current_ypos#31 [phi:play_move_down::@7->play_move_down::@return#5] -- register_copy + //SEG396 [181] phi (byte) current_movedown_counter#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@7->play_move_down::@return#6] -- vbuz1=vbuc1 lda #0 sta current_movedown_counter - //SEG398 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG397 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:play_move_down::@7->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #1 jmp breturn - //SEG399 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] + //SEG398 [181] phi from play_move_down::@4 to play_move_down::@return [phi:play_move_down::@4->play_move_down::@return] b5: - //SEG400 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy - //SEG401 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy - //SEG402 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy - //SEG403 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy - //SEG404 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy - //SEG405 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy - //SEG406 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy - //SEG407 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 + //SEG399 [181] phi (byte) current_piece_color#13 = (byte) current_piece_color#11 [phi:play_move_down::@4->play_move_down::@return#0] -- register_copy + //SEG400 [181] phi (byte) current_xpos#19 = (byte) current_xpos#16 [phi:play_move_down::@4->play_move_down::@return#1] -- register_copy + //SEG401 [181] phi (byte*) current_piece_gfx#17 = (byte*) current_piece_gfx#15 [phi:play_move_down::@4->play_move_down::@return#2] -- register_copy + //SEG402 [181] phi (byte) current_orientation#18 = (byte) current_orientation#15 [phi:play_move_down::@4->play_move_down::@return#3] -- register_copy + //SEG403 [181] phi (byte*) current_piece#13 = (byte*) current_piece#11 [phi:play_move_down::@4->play_move_down::@return#4] -- register_copy + //SEG404 [181] phi (byte) current_ypos#16 = (byte) current_ypos#12 [phi:play_move_down::@4->play_move_down::@return#5] -- register_copy + //SEG405 [181] phi (byte) current_movedown_counter#12 = (byte) current_movedown_counter#10 [phi:play_move_down::@4->play_move_down::@return#6] -- register_copy + //SEG406 [181] phi (byte) play_move_down::return#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:play_move_down::@4->play_move_down::@return#7] -- vbuxx=vbuc1 ldx #0 - //SEG408 play_move_down::@return + //SEG407 play_move_down::@return breturn: - //SEG409 [182] return + //SEG408 [182] return rts - //SEG410 play_move_down::@6 + //SEG409 play_move_down::@6 b6: - //SEG411 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 + //SEG410 [183] (byte) current_ypos#4 ← ++ (byte) current_ypos#12 -- vbuz1=_inc_vbuz1 inc current_ypos - //SEG412 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] - //SEG413 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy - //SEG414 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy - //SEG415 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy - //SEG416 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy - //SEG417 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy - //SEG418 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy + //SEG411 [180] phi from play_move_down::@6 to play_move_down::@7 [phi:play_move_down::@6->play_move_down::@7] + //SEG412 [180] phi (byte) current_piece_color#23 = (byte) current_piece_color#11 [phi:play_move_down::@6->play_move_down::@7#0] -- register_copy + //SEG413 [180] phi (byte) current_xpos#36 = (byte) current_xpos#16 [phi:play_move_down::@6->play_move_down::@7#1] -- register_copy + //SEG414 [180] phi (byte*) current_piece_gfx#29 = (byte*) current_piece_gfx#15 [phi:play_move_down::@6->play_move_down::@7#2] -- register_copy + //SEG415 [180] phi (byte) current_orientation#33 = (byte) current_orientation#15 [phi:play_move_down::@6->play_move_down::@7#3] -- register_copy + //SEG416 [180] phi (byte*) current_piece#23 = (byte*) current_piece#11 [phi:play_move_down::@6->play_move_down::@7#4] -- register_copy + //SEG417 [180] phi (byte) current_ypos#31 = (byte) current_ypos#4 [phi:play_move_down::@6->play_move_down::@7#5] -- register_copy jmp b7 } -//SEG419 spawn_current +//SEG418 spawn_current spawn_current: { .label _3 = 2 - //SEG420 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] - //SEG421 [185] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuxx=vbuc1 + //SEG419 [185] phi from spawn_current to spawn_current::@1 [phi:spawn_current->spawn_current::@1] + //SEG420 [185] phi (byte) spawn_current::piece_idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 [phi:spawn_current->spawn_current::@1#0] -- vbuxx=vbuc1 ldx #7 - //SEG422 spawn_current::@1 + //SEG421 spawn_current::@1 b1: - //SEG423 [186] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 + //SEG422 [186] if((byte) spawn_current::piece_idx#2==(byte/signed byte/word/signed word/dword/signed dword) 7) goto spawn_current::@2 -- vbuxx_eq_vbuc1_then_la1 cpx #7 beq b2 - //SEG424 spawn_current::@3 - //SEG425 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 + //SEG423 spawn_current::@3 + //SEG424 [187] (byte~) spawn_current::$3 ← (byte) spawn_current::piece_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuxx_rol_1 txa asl sta _3 - //SEG426 [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 + //SEG425 [188] (byte*) current_piece_gfx#10 ← (byte*)*((const word[]) PIECES#0 + (byte~) spawn_current::$3) + (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuz1=pptc1_derefidx_vbuz2_plus_0 tay lda PIECES,y sta current_piece_gfx lda PIECES+1,y sta current_piece_gfx+1 - //SEG427 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG426 [189] (byte) current_piece_color#15 ← *((const byte[]) PIECES_COLORS#0 + (byte) spawn_current::piece_idx#2) -- vbuz1=pbuc1_derefidx_vbuxx lda PIECES_COLORS,x sta current_piece_color - //SEG428 spawn_current::@return - //SEG429 [190] return + //SEG427 spawn_current::@return + //SEG428 [190] return rts - //SEG430 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] - //SEG431 spawn_current::@2 + //SEG429 [191] phi from spawn_current::@1 to spawn_current::@2 [phi:spawn_current::@1->spawn_current::@2] + //SEG430 spawn_current::@2 b2: - //SEG432 [192] call sid_rnd + //SEG431 [192] call sid_rnd jsr sid_rnd - //SEG433 [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 + //SEG432 [193] (byte) sid_rnd::return#2 ← (byte) sid_rnd::return#0 // (byte) sid_rnd::return#2 = (byte) sid_rnd::return#0 // register copy reg byte a - //SEG434 spawn_current::@7 - //SEG435 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 + //SEG433 spawn_current::@7 + //SEG434 [194] (byte~) spawn_current::$1 ← (byte) sid_rnd::return#2 // (byte~) spawn_current::$1 = (byte) sid_rnd::return#2 // register copy reg byte a - //SEG436 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 + //SEG435 [195] (byte) spawn_current::piece_idx#1 ← (byte~) spawn_current::$1 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuxx=vbuaa_band_vbuc1 and #7 tax - //SEG437 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] - //SEG438 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy + //SEG436 [185] phi from spawn_current::@7 to spawn_current::@1 [phi:spawn_current::@7->spawn_current::@1] + //SEG437 [185] phi (byte) spawn_current::piece_idx#2 = (byte) spawn_current::piece_idx#1 [phi:spawn_current::@7->spawn_current::@1#0] -- register_copy jmp b1 } -//SEG439 sid_rnd +//SEG438 sid_rnd sid_rnd: { - //SEG440 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 + //SEG439 [196] (byte) sid_rnd::return#0 ← *((const byte*) SID_VOICE3_OSC#0) -- vbuaa=_deref_pbuc1 lda SID_VOICE3_OSC - //SEG441 sid_rnd::@return - //SEG442 [197] return + //SEG440 sid_rnd::@return + //SEG441 [197] return rts } -//SEG443 remove_lines +//SEG442 remove_lines remove_lines: { .label c = 7 .label x = 3 .label y = 2 .label full = 4 - //SEG444 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] - //SEG445 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 + //SEG443 [199] phi from remove_lines to remove_lines::@1 [phi:remove_lines->remove_lines::@1] + //SEG444 [199] phi (byte) remove_lines::y#8 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines->remove_lines::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG446 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuxx=vbuc1 + //SEG445 [199] phi (byte) remove_lines::w#12 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#1] -- vbuxx=vbuc1 ldx #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG447 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuyy=vbuc1 + //SEG446 [199] phi (byte) remove_lines::r#3 = (const byte) PLAYFIELD_LINES#0*(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines->remove_lines::@1#2] -- vbuyy=vbuc1 ldy #PLAYFIELD_LINES*PLAYFIELD_COLS-1 - //SEG448 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] - //SEG449 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy - //SEG450 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy - //SEG451 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy - //SEG452 remove_lines::@1 + //SEG447 [199] phi from remove_lines::@4 to remove_lines::@1 [phi:remove_lines::@4->remove_lines::@1] + //SEG448 [199] phi (byte) remove_lines::y#8 = (byte) remove_lines::y#1 [phi:remove_lines::@4->remove_lines::@1#0] -- register_copy + //SEG449 [199] phi (byte) remove_lines::w#12 = (byte) remove_lines::w#11 [phi:remove_lines::@4->remove_lines::@1#1] -- register_copy + //SEG450 [199] phi (byte) remove_lines::r#3 = (byte) remove_lines::r#1 [phi:remove_lines::@4->remove_lines::@1#2] -- register_copy + //SEG451 remove_lines::@1 b1: - //SEG453 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] - //SEG454 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 + //SEG452 [200] phi from remove_lines::@1 to remove_lines::@2 [phi:remove_lines::@1->remove_lines::@2] + //SEG453 [200] phi (byte) remove_lines::full#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:remove_lines::@1->remove_lines::@2#0] -- vbuz1=vbuc1 lda #1 sta full - //SEG455 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 + //SEG454 [200] phi (byte) remove_lines::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@1->remove_lines::@2#1] -- vbuz1=vbuc1 lda #0 sta x - //SEG456 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy - //SEG457 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy - //SEG458 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] - //SEG459 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy - //SEG460 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy - //SEG461 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy - //SEG462 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy - //SEG463 remove_lines::@2 + //SEG455 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#12 [phi:remove_lines::@1->remove_lines::@2#2] -- register_copy + //SEG456 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#3 [phi:remove_lines::@1->remove_lines::@2#3] -- register_copy + //SEG457 [200] phi from remove_lines::@3 to remove_lines::@2 [phi:remove_lines::@3->remove_lines::@2] + //SEG458 [200] phi (byte) remove_lines::full#4 = (byte) remove_lines::full#2 [phi:remove_lines::@3->remove_lines::@2#0] -- register_copy + //SEG459 [200] phi (byte) remove_lines::x#2 = (byte) remove_lines::x#1 [phi:remove_lines::@3->remove_lines::@2#1] -- register_copy + //SEG460 [200] phi (byte) remove_lines::w#4 = (byte) remove_lines::w#1 [phi:remove_lines::@3->remove_lines::@2#2] -- register_copy + //SEG461 [200] phi (byte) remove_lines::r#2 = (byte) remove_lines::r#1 [phi:remove_lines::@3->remove_lines::@2#3] -- register_copy + //SEG462 remove_lines::@2 b2: - //SEG464 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG463 [201] (byte) remove_lines::c#0 ← *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::r#2) -- vbuz1=pbuc1_derefidx_vbuyy lda playfield,y sta c - //SEG465 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy + //SEG464 [202] (byte) remove_lines::r#1 ← -- (byte) remove_lines::r#2 -- vbuyy=_dec_vbuyy dey - //SEG466 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 + //SEG465 [203] if((byte) remove_lines::c#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto remove_lines::@17 -- vbuz1_neq_0_then_la1 cmp #0 bne b3 - //SEG467 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] - //SEG468 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 + //SEG466 [204] phi from remove_lines::@2 to remove_lines::@3 [phi:remove_lines::@2->remove_lines::@3] + //SEG467 [204] phi (byte) remove_lines::full#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:remove_lines::@2->remove_lines::@3#0] -- vbuz1=vbuc1 lda #0 sta full - //SEG469 remove_lines::@3 + //SEG468 remove_lines::@3 b3: - //SEG470 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG469 [205] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#4) ← (byte) remove_lines::c#0 -- pbuc1_derefidx_vbuxx=vbuz1 lda c sta playfield,x - //SEG471 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx + //SEG470 [206] (byte) remove_lines::w#1 ← -- (byte) remove_lines::w#4 -- vbuxx=_dec_vbuxx dex - //SEG472 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 + //SEG471 [207] (byte) remove_lines::x#1 ← ++ (byte) remove_lines::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG473 [208] if((byte) remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG472 [208] if((byte) remove_lines::x#1!=(const byte) PLAYFIELD_COLS#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #PLAYFIELD_COLS-1+1 bne b2 - //SEG474 remove_lines::@9 - //SEG475 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG473 remove_lines::@9 + //SEG474 [209] if((byte) remove_lines::full#2!=(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@4 -- vbuz1_neq_vbuc1_then_la1 lda full cmp #1 bne b4 - //SEG476 remove_lines::@10 - //SEG477 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 + //SEG475 remove_lines::@10 + //SEG476 [210] (byte) remove_lines::w#2 ← (byte) remove_lines::w#1 + (const byte) PLAYFIELD_COLS#0 -- vbuxx=vbuxx_plus_vbuc1 txa clc adc #PLAYFIELD_COLS tax - //SEG478 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] - //SEG479 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy - //SEG480 remove_lines::@4 + //SEG477 [211] phi from remove_lines::@10 remove_lines::@9 to remove_lines::@4 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4] + //SEG478 [211] phi (byte) remove_lines::w#11 = (byte) remove_lines::w#2 [phi:remove_lines::@10/remove_lines::@9->remove_lines::@4#0] -- register_copy + //SEG479 remove_lines::@4 b4: - //SEG481 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 + //SEG480 [212] (byte) remove_lines::y#1 ← ++ (byte) remove_lines::y#8 -- vbuz1=_inc_vbuz1 inc y - //SEG482 [213] if((byte) remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG481 [213] if((byte) remove_lines::y#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto remove_lines::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #PLAYFIELD_LINES-1+1 bne b1 - //SEG483 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] - //SEG484 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy - //SEG485 remove_lines::@5 + //SEG482 [214] phi from remove_lines::@4 remove_lines::@6 to remove_lines::@5 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5] + //SEG483 [214] phi (byte) remove_lines::w#6 = (byte) remove_lines::w#11 [phi:remove_lines::@4/remove_lines::@6->remove_lines::@5#0] -- register_copy + //SEG484 remove_lines::@5 b5: - //SEG486 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 + //SEG485 [215] if((byte) remove_lines::w#6!=(byte/word/signed word/dword/signed dword) 255) goto remove_lines::@6 -- vbuxx_neq_vbuc1_then_la1 cpx #$ff bne b6 - //SEG487 remove_lines::@return - //SEG488 [216] return + //SEG486 remove_lines::@return + //SEG487 [216] return rts - //SEG489 remove_lines::@6 + //SEG488 remove_lines::@6 b6: - //SEG490 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG489 [217] *((const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 + (byte) remove_lines::w#6) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta playfield,x - //SEG491 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx + //SEG490 [218] (byte) remove_lines::w#3 ← -- (byte) remove_lines::w#6 -- vbuxx=_dec_vbuxx dex jmp b5 - //SEG492 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] - //SEG493 remove_lines::@17 - //SEG494 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] - //SEG495 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy + //SEG491 [219] phi from remove_lines::@2 to remove_lines::@17 [phi:remove_lines::@2->remove_lines::@17] + //SEG492 remove_lines::@17 + //SEG493 [204] phi from remove_lines::@17 to remove_lines::@3 [phi:remove_lines::@17->remove_lines::@3] + //SEG494 [204] phi (byte) remove_lines::full#2 = (byte) remove_lines::full#4 [phi:remove_lines::@17->remove_lines::@3#0] -- register_copy } -//SEG496 lock_current +//SEG495 lock_current lock_current: { .label ypos2 = 2 .label playfield_line = 5 @@ -13315,376 +14190,401 @@ lock_current: { .label i_3 = 4 .label i_7 = 4 .label i_9 = 4 - //SEG497 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 + //SEG496 [220] (byte) lock_current::ypos2#0 ← (byte) current_ypos#12 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_rol_1 asl ypos2 - //SEG498 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] - //SEG499 [221] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 + //SEG497 [221] phi from lock_current to lock_current::@1 [phi:lock_current->lock_current::@1] + //SEG498 [221] phi (byte) lock_current::l#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG500 [221] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 + //SEG499 [221] phi (byte) lock_current::i#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current->lock_current::@1#1] -- vbuz1=vbuc1 sta i_3 - //SEG501 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy - //SEG502 lock_current::@1 + //SEG500 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#0 [phi:lock_current->lock_current::@1#2] -- register_copy + //SEG501 lock_current::@1 b1: - //SEG503 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 + //SEG502 [222] (byte*) lock_current::playfield_line#0 ← *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte) lock_current::ypos2#2) -- pbuz1=pptc1_derefidx_vbuz2 ldy ypos2 lda playfield_lines,y sta playfield_line lda playfield_lines+1,y sta playfield_line+1 - //SEG504 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 + //SEG503 [223] (byte) lock_current::col#0 ← (byte) current_xpos#16 -- vbuz1=vbuz2 lda current_xpos sta col - //SEG505 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] - //SEG506 [224] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 + //SEG504 [224] phi from lock_current::@1 to lock_current::@2 [phi:lock_current::@1->lock_current::@2] + //SEG505 [224] phi (byte) lock_current::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:lock_current::@1->lock_current::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG507 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy - //SEG508 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy - //SEG509 lock_current::@2 + //SEG506 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#0 [phi:lock_current::@1->lock_current::@2#1] -- register_copy + //SEG507 [224] phi (byte) lock_current::i#2 = (byte) lock_current::i#3 [phi:lock_current::@1->lock_current::@2#2] -- register_copy + //SEG508 lock_current::@2 b2: - //SEG510 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 + //SEG509 [225] (byte) lock_current::i#1 ← ++ (byte) lock_current::i#2 -- vbuz1=_inc_vbuz2 ldy i_2 iny sty i - //SEG511 [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 + //SEG510 [226] if(*((byte*) current_piece_gfx#15 + (byte) lock_current::i#2)==(byte/signed byte/word/signed word/dword/signed dword) 0) goto lock_current::@3 -- pbuz1_derefidx_vbuz2_eq_0_then_la1 ldy i_2 lda (current_piece_gfx),y cmp #0 beq b3 - //SEG512 lock_current::@4 - //SEG513 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG511 lock_current::@4 + //SEG512 [227] *((byte*) lock_current::playfield_line#0 + (byte) lock_current::col#2) ← (byte) current_piece_color#11 -- pbuz1_derefidx_vbuz2=vbuz3 lda current_piece_color ldy col sta (playfield_line),y - //SEG514 lock_current::@3 + //SEG513 lock_current::@3 b3: - //SEG515 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 + //SEG514 [228] (byte) lock_current::col#1 ← ++ (byte) lock_current::col#2 -- vbuz1=_inc_vbuz1 inc col - //SEG516 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx + //SEG515 [229] (byte) lock_current::c#1 ← ++ (byte) lock_current::c#2 -- vbuxx=_inc_vbuxx inx - //SEG517 [230] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 + //SEG516 [230] if((byte) lock_current::c#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@8 -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b8 - //SEG518 lock_current::@5 - //SEG519 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG517 lock_current::@5 + //SEG518 [231] (byte) lock_current::ypos2#1 ← (byte) lock_current::ypos2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda ypos2 clc adc #2 sta ypos2 - //SEG520 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 + //SEG519 [232] (byte) lock_current::l#1 ← ++ (byte) lock_current::l#6 -- vbuz1=_inc_vbuz1 inc l - //SEG521 [233] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 + //SEG520 [233] if((byte) lock_current::l#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto lock_current::@7 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #4 bne b7 - //SEG522 lock_current::@return - //SEG523 [234] return + //SEG521 lock_current::@return + //SEG522 [234] return rts - //SEG524 lock_current::@7 + //SEG523 lock_current::@7 b7: - //SEG525 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG524 [235] (byte~) lock_current::i#7 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_7 - //SEG526 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] - //SEG527 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy - //SEG528 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy - //SEG529 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy + //SEG525 [221] phi from lock_current::@7 to lock_current::@1 [phi:lock_current::@7->lock_current::@1] + //SEG526 [221] phi (byte) lock_current::l#6 = (byte) lock_current::l#1 [phi:lock_current::@7->lock_current::@1#0] -- register_copy + //SEG527 [221] phi (byte) lock_current::i#3 = (byte~) lock_current::i#7 [phi:lock_current::@7->lock_current::@1#1] -- register_copy + //SEG528 [221] phi (byte) lock_current::ypos2#2 = (byte) lock_current::ypos2#1 [phi:lock_current::@7->lock_current::@1#2] -- register_copy jmp b1 - //SEG530 lock_current::@8 + //SEG529 lock_current::@8 b8: - //SEG531 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 + //SEG530 [236] (byte~) lock_current::i#9 ← (byte) lock_current::i#1 -- vbuz1=vbuz2 lda i sta i_9 - //SEG532 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] - //SEG533 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy - //SEG534 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy - //SEG535 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy + //SEG531 [224] phi from lock_current::@8 to lock_current::@2 [phi:lock_current::@8->lock_current::@2] + //SEG532 [224] phi (byte) lock_current::c#2 = (byte) lock_current::c#1 [phi:lock_current::@8->lock_current::@2#0] -- register_copy + //SEG533 [224] phi (byte) lock_current::col#2 = (byte) lock_current::col#1 [phi:lock_current::@8->lock_current::@2#1] -- register_copy + //SEG534 [224] phi (byte) lock_current::i#2 = (byte~) lock_current::i#9 [phi:lock_current::@8->lock_current::@2#2] -- register_copy jmp b2 } -//SEG536 keyboard_event_pressed +//SEG535 keyboard_event_pressed keyboard_event_pressed: { .label row_bits = 7 .label keycode = 4 - //SEG537 [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 + //SEG536 [238] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#5 >> (byte/signed byte/word/signed word/dword/signed dword) 3 -- vbuaa=vbuz1_ror_3 lda keycode lsr lsr lsr - //SEG538 [239] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa + //SEG537 [239] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) -- vbuz1=pbuc1_derefidx_vbuaa tay lda keyboard_scan_values,y sta row_bits - //SEG539 [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 + //SEG538 [240] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#5 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuz1_band_vbuc1 lda #7 and keycode - //SEG540 [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa + //SEG539 [241] (byte) keyboard_event_pressed::return#11 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuaa tay lda keyboard_matrix_col_bitmask,y and row_bits - //SEG541 keyboard_event_pressed::@return - //SEG542 [242] return + //SEG540 keyboard_event_pressed::@return + //SEG541 [242] return rts } -//SEG543 keyboard_event_get +//SEG542 keyboard_event_get keyboard_event_get: { - //SEG544 [243] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 + //SEG543 [243] if((byte) keyboard_events_size#13==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@return -- vbuz1_eq_0_then_la1 lda keyboard_events_size cmp #0 beq b1 - //SEG545 keyboard_event_get::@3 - //SEG546 [244] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 + //SEG544 keyboard_event_get::@3 + //SEG545 [244] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#13 -- vbuz1=_dec_vbuz1 dec keyboard_events_size - //SEG547 [245] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG546 [245] (byte) keyboard_event_get::return#1 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) -- vbuaa=pbuc1_derefidx_vbuz1 ldy keyboard_events_size lda keyboard_events,y - //SEG548 [246] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] - //SEG549 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy - //SEG550 [246] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy + //SEG547 [246] phi from keyboard_event_get::@3 to keyboard_event_get::@return [phi:keyboard_event_get::@3->keyboard_event_get::@return] + //SEG548 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@3->keyboard_event_get::@return#0] -- register_copy + //SEG549 [246] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#1 [phi:keyboard_event_get::@3->keyboard_event_get::@return#1] -- register_copy jmp breturn - //SEG551 [246] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] + //SEG550 [246] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return] b1: - //SEG552 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy - //SEG553 [246] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 + //SEG551 [246] phi (byte) keyboard_events_size#16 = (byte) keyboard_events_size#13 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy + //SEG552 [246] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1 lda #$ff - //SEG554 keyboard_event_get::@return + //SEG553 keyboard_event_get::@return breturn: - //SEG555 [247] return + //SEG554 [247] return rts } -//SEG556 keyboard_event_scan +//SEG555 keyboard_event_scan keyboard_event_scan: { .label row_scan = 8 .label keycode = 7 .label row = 4 - //SEG557 [249] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] - //SEG558 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy - //SEG559 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 + //SEG556 [249] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1] + //SEG557 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#19 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy + //SEG558 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1 lda #0 sta keycode - //SEG560 [249] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 + //SEG559 [249] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1 sta row - //SEG561 [249] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] - //SEG562 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy - //SEG563 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy - //SEG564 [249] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy - //SEG565 keyboard_event_scan::@1 + //SEG560 [249] phi from keyboard_event_scan::@3 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1] + //SEG561 [249] phi (byte) keyboard_events_size#29 = (byte) keyboard_events_size#13 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#0] -- register_copy + //SEG562 [249] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#1] -- register_copy + //SEG563 [249] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@3->keyboard_event_scan::@1#2] -- register_copy + //SEG564 keyboard_event_scan::@1 b1: - //SEG566 [250] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 + //SEG565 [250] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 -- vbuxx=vbuz1 ldx row - //SEG567 [251] call keyboard_matrix_read + //SEG566 [251] call keyboard_matrix_read jsr keyboard_matrix_read - //SEG568 [252] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 + //SEG567 [252] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a - //SEG569 keyboard_event_scan::@25 - //SEG570 [253] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa + //SEG568 keyboard_event_scan::@25 + //SEG569 [253] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 -- vbuz1=vbuaa sta row_scan - //SEG571 [254] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 + //SEG570 [254] if((byte) keyboard_event_scan::row_scan#0!=*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@4 -- vbuz1_neq_pbuc1_derefidx_vbuz2_then_la1 ldy row cmp keyboard_scan_values,y - bne b2 - //SEG572 keyboard_event_scan::@13 - //SEG573 [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 + bne b6 + //SEG571 keyboard_event_scan::@13 + //SEG572 [255] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 -- vbuz1=vbuz1_plus_vbuc1 lda #8 clc adc keycode sta keycode - //SEG574 [256] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] - //SEG575 [256] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy - //SEG576 [256] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy - //SEG577 keyboard_event_scan::@3 + //SEG573 [256] phi from keyboard_event_scan::@13 keyboard_event_scan::@19 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3] + //SEG574 [256] phi (byte) keyboard_events_size#13 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#0] -- register_copy + //SEG575 [256] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#1 [phi:keyboard_event_scan::@13/keyboard_event_scan::@19->keyboard_event_scan::@3#1] -- register_copy + //SEG576 keyboard_event_scan::@3 b3: - //SEG578 [257] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 + //SEG577 [257] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 -- vbuz1=_inc_vbuz1 inc row - //SEG579 [258] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG578 [258] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 -- vbuz1_neq_vbuc1_then_la1 lda row cmp #8 bne b1 - //SEG580 [259] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] - //SEG581 keyboard_event_scan::@20 - //SEG582 [260] call keyboard_event_pressed - //SEG583 [237] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] - //SEG584 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 + //SEG579 [259] phi from keyboard_event_scan::@3 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@3->keyboard_event_scan::@20] + //SEG580 keyboard_event_scan::@20 + //SEG581 [260] call keyboard_event_pressed + //SEG582 [237] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed] + //SEG583 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_LSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG585 [261] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 + //SEG584 [261] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG586 keyboard_event_scan::@26 - //SEG587 [262] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 + //SEG585 keyboard_event_scan::@26 + //SEG586 [262] (byte~) keyboard_event_scan::$14 ← (byte) keyboard_event_pressed::return#0 // (byte~) keyboard_event_scan::$14 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a - //SEG588 [263] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 + //SEG587 [263] if((byte~) keyboard_event_scan::$14==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG589 [264] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] - //SEG590 keyboard_event_scan::@21 - //SEG591 [265] phi from keyboard_event_scan::@21 keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21/keyboard_event_scan::@26->keyboard_event_scan::@9] - //SEG592 keyboard_event_scan::@9 - //SEG593 [266] call keyboard_event_pressed - //SEG594 [237] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] - //SEG595 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 + beq b2 + //SEG588 [264] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21] + //SEG589 keyboard_event_scan::@21 + //SEG590 [265] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9] + //SEG591 [265] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0|KEY_MODIFIER_LSHIFT + jmp b9 + //SEG592 [265] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9] + b2: + //SEG593 [265] phi (byte) keyboard_modifiers#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuxx=vbuc1 + ldx #0 + //SEG594 keyboard_event_scan::@9 + b9: + //SEG595 [266] call keyboard_event_pressed + //SEG596 [237] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed] + //SEG597 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_RSHIFT sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG596 [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 + //SEG598 [267] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG597 keyboard_event_scan::@27 - //SEG598 [268] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 + //SEG599 keyboard_event_scan::@27 + //SEG600 [268] (byte~) keyboard_event_scan::$18 ← (byte) keyboard_event_pressed::return#1 // (byte~) keyboard_event_scan::$18 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a - //SEG599 [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 + //SEG601 [269] if((byte~) keyboard_event_scan::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG600 [270] phi from keyboard_event_scan::@27 to keyboard_event_scan::@22 [phi:keyboard_event_scan::@27->keyboard_event_scan::@22] - //SEG601 keyboard_event_scan::@22 - //SEG602 [271] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] - //SEG603 keyboard_event_scan::@10 - //SEG604 [272] call keyboard_event_pressed - //SEG605 [237] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] - //SEG606 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 + beq b10 + //SEG602 keyboard_event_scan::@22 + //SEG603 [270] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#11 | (const byte) KEY_MODIFIER_RSHIFT#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_RSHIFT + tax + //SEG604 [271] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10] + //SEG605 [271] phi (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy + //SEG606 keyboard_event_scan::@10 + b10: + //SEG607 [272] call keyboard_event_pressed + //SEG608 [237] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed] + //SEG609 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_CTRL sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG607 [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 + //SEG610 [273] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG608 keyboard_event_scan::@28 - //SEG609 [274] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 + //SEG611 keyboard_event_scan::@28 + //SEG612 [274] (byte~) keyboard_event_scan::$22 ← (byte) keyboard_event_pressed::return#2 // (byte~) keyboard_event_scan::$22 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a - //SEG610 [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 + //SEG613 [275] if((byte~) keyboard_event_scan::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 -- vbuaa_eq_0_then_la1 cmp #0 - //SEG611 [276] phi from keyboard_event_scan::@28 to keyboard_event_scan::@23 [phi:keyboard_event_scan::@28->keyboard_event_scan::@23] - //SEG612 keyboard_event_scan::@23 - //SEG613 [277] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] - //SEG614 keyboard_event_scan::@11 - //SEG615 [278] call keyboard_event_pressed - //SEG616 [237] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] - //SEG617 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 + beq b11 + //SEG614 keyboard_event_scan::@23 + //SEG615 [276] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#12 | (const byte) KEY_MODIFIER_CTRL#0 -- vbuxx=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_CTRL + tax + //SEG616 [277] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11] + //SEG617 [277] phi (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy + //SEG618 keyboard_event_scan::@11 + b11: + //SEG619 [278] call keyboard_event_pressed + //SEG620 [237] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed] + //SEG621 [237] phi (byte) keyboard_event_pressed::keycode#5 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1 lda #KEY_COMMODORE sta keyboard_event_pressed.keycode jsr keyboard_event_pressed - //SEG618 [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 + //SEG622 [279] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::return#11 // (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#11 // register copy reg byte a - //SEG619 keyboard_event_scan::@29 - //SEG620 [280] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 + //SEG623 keyboard_event_scan::@29 + //SEG624 [280] (byte~) keyboard_event_scan::$26 ← (byte) keyboard_event_pressed::return#10 // (byte~) keyboard_event_scan::$26 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a - //SEG621 [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 + //SEG625 [281] if((byte~) keyboard_event_scan::$26==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return -- vbuaa_eq_0_then_la1 cmp #0 - //SEG622 [282] phi from keyboard_event_scan::@29 to keyboard_event_scan::@24 [phi:keyboard_event_scan::@29->keyboard_event_scan::@24] - //SEG623 keyboard_event_scan::@24 - //SEG624 keyboard_event_scan::@return - //SEG625 [283] return + beq breturn + //SEG626 keyboard_event_scan::@24 + //SEG627 [282] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#13 | (const byte) KEY_MODIFIER_COMMODORE#0 -- vbuaa=vbuxx_bor_vbuc1 + txa + ora #KEY_MODIFIER_COMMODORE + //SEG628 keyboard_event_scan::@return + breturn: + //SEG629 [283] return rts - //SEG626 [284] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] - b2: - //SEG627 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy - //SEG628 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy - //SEG629 [284] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 + //SEG630 [284] phi from keyboard_event_scan::@25 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4] + b6: + //SEG631 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#29 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#0] -- register_copy + //SEG632 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#1] -- register_copy + //SEG633 [284] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@4#2] -- vbuxx=vbuc1 ldx #0 - //SEG630 [284] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] - //SEG631 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy - //SEG632 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy - //SEG633 [284] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy - //SEG634 keyboard_event_scan::@4 + //SEG634 [284] phi from keyboard_event_scan::@5 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4] + //SEG635 [284] phi (byte) keyboard_events_size#10 = (byte) keyboard_events_size#30 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#0] -- register_copy + //SEG636 [284] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#1] -- register_copy + //SEG637 [284] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@5->keyboard_event_scan::@4#2] -- register_copy + //SEG638 keyboard_event_scan::@4 b4: - //SEG635 [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 + //SEG639 [285] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2 lda row_scan ldy row eor keyboard_scan_values,y - //SEG636 [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx + //SEG640 [286] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx and keyboard_matrix_col_bitmask,x - //SEG637 [287] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 + //SEG641 [287] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@5 -- vbuaa_eq_0_then_la1 cmp #0 beq b5 - //SEG638 keyboard_event_scan::@15 - //SEG639 [288] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 + //SEG642 keyboard_event_scan::@15 + //SEG643 [288] if((byte) keyboard_events_size#10==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5 -- vbuz1_eq_vbuc1_then_la1 lda keyboard_events_size cmp #8 beq b5 - //SEG640 keyboard_event_scan::@16 - //SEG641 [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx + //SEG644 keyboard_event_scan::@16 + //SEG645 [289] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx lda keyboard_matrix_col_bitmask,x and row_scan - //SEG642 [290] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 + //SEG646 [290] if((byte) keyboard_event_scan::event_type#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@7 -- vbuaa_eq_0_then_la1 cmp #0 beq b7 - //SEG643 keyboard_event_scan::@17 - //SEG644 [291] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG647 keyboard_event_scan::@17 + //SEG648 [291] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte) keyboard_event_scan::keycode#10 -- pbuc1_derefidx_vbuz1=vbuz2 lda keycode ldy keyboard_events_size sta keyboard_events,y - //SEG645 [292] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG649 [292] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size - //SEG646 [293] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] - //SEG647 [293] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy - //SEG648 keyboard_event_scan::@5 + //SEG650 [293] phi from keyboard_event_scan::@15 keyboard_event_scan::@17 keyboard_event_scan::@4 keyboard_event_scan::@7 to keyboard_event_scan::@5 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5] + //SEG651 [293] phi (byte) keyboard_events_size#30 = (byte) keyboard_events_size#10 [phi:keyboard_event_scan::@15/keyboard_event_scan::@17/keyboard_event_scan::@4/keyboard_event_scan::@7->keyboard_event_scan::@5#0] -- register_copy + //SEG652 keyboard_event_scan::@5 b5: - //SEG649 [294] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 + //SEG653 [294] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 -- vbuz1=_inc_vbuz1 inc keycode - //SEG650 [295] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx + //SEG654 [295] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 -- vbuxx=_inc_vbuxx inx - //SEG651 [296] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 + //SEG655 [296] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b4 - //SEG652 keyboard_event_scan::@19 - //SEG653 [297] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG656 keyboard_event_scan::@19 + //SEG657 [297] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 -- pbuc1_derefidx_vbuz1=vbuz2 lda row_scan ldy row sta keyboard_scan_values,y jmp b3 - //SEG654 keyboard_event_scan::@7 + //SEG658 keyboard_event_scan::@7 b7: - //SEG655 [298] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 + //SEG659 [298] (byte/word/dword~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 -- vbuaa=vbuz1_bor_vbuc1 lda #$40 ora keycode - //SEG656 [299] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa + //SEG660 [299] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#10) ← (byte/word/dword~) keyboard_event_scan::$11 -- pbuc1_derefidx_vbuz1=vbuaa ldy keyboard_events_size sta keyboard_events,y - //SEG657 [300] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 + //SEG661 [300] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#10 -- vbuz1=_inc_vbuz1 inc keyboard_events_size jmp b5 } -//SEG658 keyboard_matrix_read +//SEG662 keyboard_matrix_read keyboard_matrix_read: { - //SEG659 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx + //SEG663 [301] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) -- _deref_pbuc1=pbuc2_derefidx_vbuxx lda keyboard_matrix_row_bitmask,x sta CIA1_PORT_A - //SEG660 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 + //SEG664 [302] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) -- vbuaa=_bnot__deref_pbuc1 lda CIA1_PORT_B eor #$ff - //SEG661 keyboard_matrix_read::@return - //SEG662 [303] return + //SEG665 keyboard_matrix_read::@return + //SEG666 [303] return rts } -//SEG663 tables_init +//SEG667 tables_init tables_init: { .label pli = 5 .label idx = 2 - //SEG664 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] - //SEG665 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 + //SEG668 [305] phi from tables_init to tables_init::@1 [phi:tables_init->tables_init::@1] + //SEG669 [305] phi (byte) tables_init::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#0] -- vbuz1=vbuc1 lda #0 sta idx - //SEG666 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 + //SEG670 [305] phi (byte*) tables_init::pli#2 = (const byte[PLAYFIELD_LINES#0*PLAYFIELD_COLS#0]) playfield#0 [phi:tables_init->tables_init::@1#1] -- pbuz1=pbuc1 lda #playfield sta pli+1 - //SEG667 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuxx=vbuc1 + //SEG671 [305] phi (byte) tables_init::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:tables_init->tables_init::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG668 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] - //SEG669 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy - //SEG670 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy - //SEG671 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy - //SEG672 tables_init::@1 + //SEG672 [305] phi from tables_init::@1 to tables_init::@1 [phi:tables_init::@1->tables_init::@1] + //SEG673 [305] phi (byte) tables_init::idx#2 = (byte) tables_init::idx#1 [phi:tables_init::@1->tables_init::@1#0] -- register_copy + //SEG674 [305] phi (byte*) tables_init::pli#2 = (byte*) tables_init::pli#1 [phi:tables_init::@1->tables_init::@1#1] -- register_copy + //SEG675 [305] phi (byte) tables_init::j#2 = (byte) tables_init::j#1 [phi:tables_init::@1->tables_init::@1#2] -- register_copy + //SEG676 tables_init::@1 b1: - //SEG673 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG677 [306] (byte~) tables_init::$1 ← (byte) tables_init::j#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG674 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG678 [307] *((const byte*[PLAYFIELD_LINES#0]) playfield_lines#0 + (byte~) tables_init::$1) ← (byte*) tables_init::pli#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda pli sta playfield_lines,y lda pli+1 sta playfield_lines+1,y - //SEG675 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG679 [308] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0 + (byte) tables_init::j#2) ← (byte) tables_init::idx#2 -- pbuc1_derefidx_vbuxx=vbuz1 lda idx sta playfield_lines_idx,x - //SEG676 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 + //SEG680 [309] (byte*) tables_init::pli#1 ← (byte*) tables_init::pli#2 + (const byte) PLAYFIELD_COLS#0 -- pbuz1=pbuz1_plus_vbuc1 lda pli clc adc #PLAYFIELD_COLS @@ -13692,75 +14592,78 @@ tables_init: { bcc !+ inc pli+1 !: - //SEG677 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 + //SEG681 [310] (byte) tables_init::idx#1 ← (byte) tables_init::idx#2 + (const byte) PLAYFIELD_COLS#0 -- vbuz1=vbuz1_plus_vbuc1 lda #PLAYFIELD_COLS clc adc idx sta idx - //SEG678 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx + //SEG682 [311] (byte) tables_init::j#1 ← ++ (byte) tables_init::j#2 -- vbuxx=_inc_vbuxx inx - //SEG679 [312] if((byte) tables_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto tables_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG683 [312] if((byte) tables_init::j#1!=(const byte) PLAYFIELD_LINES#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto tables_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES-1+1 bne b1 - //SEG680 tables_init::@2 - //SEG681 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 + //SEG684 tables_init::@2 + //SEG685 [313] *((const byte[PLAYFIELD_LINES#0+1]) playfield_lines_idx#0+(const byte) PLAYFIELD_LINES#0) ← (const byte) PLAYFIELD_COLS#0*(const byte) PLAYFIELD_LINES#0 -- _deref_pbuc1=vbuc2 lda #PLAYFIELD_COLS*PLAYFIELD_LINES sta playfield_lines_idx+PLAYFIELD_LINES - //SEG682 tables_init::@return - //SEG683 [314] return + //SEG686 tables_init::@return + //SEG687 [314] return rts } -//SEG684 render_init +//SEG688 render_init render_init: { .label _10 = $c .label li = 5 .label line = 5 .label l = 2 - //SEG685 [316] call fill - //SEG686 [335] phi from render_init to fill [phi:render_init->fill] - //SEG687 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 160 [phi:render_init->fill#0] -- vbuxx=vbuc1 - ldx #$a0 - //SEG688 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 + //SEG689 [315] *((const byte*) BGCOL#0) ← (const byte) BLACK#0 -- _deref_pbuc1=vbuc2 + lda #BLACK + sta BGCOL + //SEG690 [316] call fill + //SEG691 [335] phi from render_init to fill [phi:render_init->fill] + //SEG692 [335] phi (byte) fill::val#3 = (byte/word/signed word/dword/signed dword) 208 [phi:render_init->fill#0] -- vbuxx=vbuc1 + ldx #$d0 + //SEG693 [335] phi (byte*) fill::addr#0 = (const byte*) SCREEN#0 [phi:render_init->fill#1] -- pbuz1=pbuc1 lda #SCREEN sta fill.addr+1 jsr fill - //SEG689 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] - //SEG690 render_init::@7 - //SEG691 [318] call fill - //SEG692 [335] phi from render_init::@7 to fill [phi:render_init::@7->fill] - //SEG693 [335] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 + //SEG694 [317] phi from render_init to render_init::@7 [phi:render_init->render_init::@7] + //SEG695 render_init::@7 + //SEG696 [318] call fill + //SEG697 [335] phi from render_init::@7 to fill [phi:render_init::@7->fill] + //SEG698 [335] phi (byte) fill::val#3 = (const byte) BLACK#0 [phi:render_init::@7->fill#0] -- vbuxx=vbuc1 ldx #BLACK - //SEG694 [335] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 + //SEG699 [335] phi (byte*) fill::addr#0 = (const byte*) COLS#0 [phi:render_init::@7->fill#1] -- pbuz1=pbuc1 lda #COLS sta fill.addr+1 jsr fill - //SEG695 [319] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] - //SEG696 [319] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 + //SEG700 [319] phi from render_init::@7 to render_init::@1 [phi:render_init::@7->render_init::@1] + //SEG701 [319] phi (byte*) render_init::li#2 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 40+(byte/signed byte/word/signed word/dword/signed dword) 15 [phi:render_init::@7->render_init::@1#0] -- pbuz1=pbuc1 lda #COLS+$28+$f sta li+1 - //SEG697 [319] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 + //SEG702 [319] phi (byte) render_init::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@7->render_init::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG698 [319] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] - //SEG699 [319] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy - //SEG700 [319] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy - //SEG701 render_init::@1 + //SEG703 [319] phi from render_init::@1 to render_init::@1 [phi:render_init::@1->render_init::@1] + //SEG704 [319] phi (byte*) render_init::li#2 = (byte*) render_init::li#1 [phi:render_init::@1->render_init::@1#0] -- register_copy + //SEG705 [319] phi (byte) render_init::i#2 = (byte) render_init::i#1 [phi:render_init::@1->render_init::@1#1] -- register_copy + //SEG706 render_init::@1 b1: - //SEG702 [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 + //SEG707 [320] (byte~) render_init::$5 ← (byte) render_init::i#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_rol_1 txa asl - //SEG703 [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 + //SEG708 [321] *((const byte*[PLAYFIELD_LINES#0+3]) screen_lines#0 + (byte~) render_init::$5) ← (byte*) render_init::li#2 -- pptc1_derefidx_vbuaa=pbuz1 tay lda li sta screen_lines,y lda li+1 sta screen_lines+1,y - //SEG704 [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG709 [322] (byte*) render_init::li#1 ← (byte*) render_init::li#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda li clc adc #$28 @@ -13768,33 +14671,33 @@ render_init: { bcc !+ inc li+1 !: - //SEG705 [323] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx + //SEG710 [323] (byte) render_init::i#1 ← ++ (byte) render_init::i#2 -- vbuxx=_inc_vbuxx inx - //SEG706 [324] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG711 [324] if((byte) render_init::i#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_LINES+2+1 bne b1 - //SEG707 [325] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] - //SEG708 [325] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 + //SEG712 [325] phi from render_init::@1 to render_init::@2 [phi:render_init::@1->render_init::@2] + //SEG713 [325] phi (byte) render_init::l#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@1->render_init::@2#0] -- vbuz1=vbuc1 lda #0 sta l - //SEG709 [325] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 + //SEG714 [325] phi (byte*) render_init::line#4 = (const byte*) COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 14 [phi:render_init::@1->render_init::@2#1] -- pbuz1=pbuc1 lda #COLS+$e sta line+1 - //SEG710 [325] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] - //SEG711 [325] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy - //SEG712 [325] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy - //SEG713 render_init::@2 + //SEG715 [325] phi from render_init::@5 to render_init::@2 [phi:render_init::@5->render_init::@2] + //SEG716 [325] phi (byte) render_init::l#4 = (byte) render_init::l#1 [phi:render_init::@5->render_init::@2#0] -- register_copy + //SEG717 [325] phi (byte*) render_init::line#4 = (byte*) render_init::line#1 [phi:render_init::@5->render_init::@2#1] -- register_copy + //SEG718 render_init::@2 b2: - //SEG714 [326] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] - //SEG715 [326] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 + //SEG719 [326] phi from render_init::@2 to render_init::@3 [phi:render_init::@2->render_init::@3] + //SEG720 [326] phi (byte) render_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:render_init::@2->render_init::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG716 [326] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] - //SEG717 [326] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy - //SEG718 render_init::@3 + //SEG721 [326] phi from render_init::@3 to render_init::@3 [phi:render_init::@3->render_init::@3] + //SEG722 [326] phi (byte) render_init::c#2 = (byte) render_init::c#1 [phi:render_init::@3->render_init::@3#0] -- register_copy + //SEG723 render_init::@3 b3: - //SEG719 [327] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx + //SEG724 [327] (byte*~) render_init::$10 ← (byte*) render_init::line#4 + (byte) render_init::c#2 -- pbuz1=pbuz2_plus_vbuxx txa clc adc line @@ -13802,17 +14705,17 @@ render_init: { lda #0 adc line+1 sta _10+1 - //SEG720 [328] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 + //SEG725 [328] *((byte*~) render_init::$10) ← (const byte) DARK_GREY#0 -- _deref_pbuz1=vbuc1 lda #DARK_GREY ldy #0 sta (_10),y - //SEG721 [329] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx + //SEG726 [329] (byte) render_init::c#1 ← ++ (byte) render_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG722 [330] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 + //SEG727 [330] if((byte) render_init::c#1!=(const byte) PLAYFIELD_COLS#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@3 -- vbuxx_neq_vbuc1_then_la1 cpx #PLAYFIELD_COLS+1+1 bne b3 - //SEG723 render_init::@5 - //SEG724 [331] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG728 render_init::@5 + //SEG729 [331] (byte*) render_init::line#1 ← (byte*) render_init::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -13820,21 +14723,21 @@ render_init: { bcc !+ inc line+1 !: - //SEG725 [332] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 + //SEG730 [332] (byte) render_init::l#1 ← ++ (byte) render_init::l#4 -- vbuz1=_inc_vbuz1 inc l - //SEG726 [333] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG731 [333] if((byte) render_init::l#1!=(const byte) PLAYFIELD_LINES#0+(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto render_init::@2 -- vbuz1_neq_vbuc1_then_la1 lda l cmp #PLAYFIELD_LINES+1+1 bne b2 - //SEG727 render_init::@return - //SEG728 [334] return + //SEG732 render_init::@return + //SEG733 [334] return rts } -//SEG729 fill +//SEG734 fill fill: { .label end = $c .label addr = 5 - //SEG730 [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 + //SEG735 [336] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 -- pbuz1=pbuz2_plus_vwuc1 lda addr clc adc #<$3e8 @@ -13842,42 +14745,42 @@ fill: { lda addr+1 adc #>$3e8 sta end+1 - //SEG731 [337] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] - //SEG732 [337] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy - //SEG733 fill::@1 + //SEG736 [337] phi from fill fill::@1 to fill::@1 [phi:fill/fill::@1->fill::@1] + //SEG737 [337] phi (byte*) fill::addr#2 = (byte*) fill::addr#0 [phi:fill/fill::@1->fill::@1#0] -- register_copy + //SEG738 fill::@1 b1: - //SEG734 [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx + //SEG739 [338] *((byte*) fill::addr#2) ← (byte) fill::val#3 -- _deref_pbuz1=vbuxx txa ldy #0 sta (addr),y - //SEG735 [339] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 + //SEG740 [339] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 -- pbuz1=_inc_pbuz1 inc addr bne !+ inc addr+1 !: - //SEG736 [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 + //SEG741 [340] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 -- pbuz1_neq_pbuz2_then_la1 lda addr+1 cmp end+1 bne b1 lda addr cmp end bne b1 - //SEG737 fill::@return - //SEG738 [341] return + //SEG742 fill::@return + //SEG743 [341] return rts } -//SEG739 sid_rnd_init +//SEG744 sid_rnd_init sid_rnd_init: { - //SEG740 [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 + //SEG745 [342] *((const word*) SID_VOICE3_FREQ#0) ← (word/dword/signed dword) 65535 -- _deref_pwuc1=vwuc2 lda #<$ffff sta SID_VOICE3_FREQ lda #>$ffff sta SID_VOICE3_FREQ+1 - //SEG741 [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 + //SEG746 [343] *((const byte*) SID_VOICE3_CONTROL#0) ← (const byte) SID_CONTROL_NOISE#0 -- _deref_pbuc1=vbuc2 lda #SID_CONTROL_NOISE sta SID_VOICE3_CONTROL - //SEG742 sid_rnd_init::@return - //SEG743 [344] return + //SEG747 sid_rnd_init::@return + //SEG748 [344] return rts } keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f diff --git a/src/test/ref/examples/tetris/tetris.sym b/src/test/ref/examples/tetris/tetris.sym index 8189bb25e..14b12b5fd 100644 --- a/src/test/ref/examples/tetris/tetris.sym +++ b/src/test/ref/examples/tetris/tetris.sym @@ -1,17 +1,35 @@ -(label) @22 -(label) @25 +(label) @23 +(label) @26 (label) @begin (label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CHARSET (const byte*) CHARSET#0 CHARSET = ((byte*))(word/signed word/dword/signed dword) 8192 +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR (byte) COLLISION_BOTTOM (const byte) COLLISION_BOTTOM#0 COLLISION_BOTTOM = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) COLLISION_LEFT @@ -24,34 +42,112 @@ (const byte) COLLISION_RIGHT#0 COLLISION_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) COLS (const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 (byte) DARK_GREY (const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11 (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON (byte) KEY_COMMA (const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47 (byte) KEY_COMMODORE (const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT (byte) KEY_CTRL (const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58 +(byte) KEY_D +(byte) KEY_DEL (byte) KEY_DOT (const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44 +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L (byte) KEY_LSHIFT (const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15 +(byte) KEY_M +(byte) KEY_MINUS (byte) KEY_MODIFIER_COMMODORE +(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_MODIFIER_CTRL +(const byte) KEY_MODIFIER_CTRL#0 KEY_MODIFIER_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) KEY_MODIFIER_LSHIFT +(const byte) KEY_MODIFIER_LSHIFT#0 KEY_MODIFIER_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) KEY_MODIFIER_RSHIFT +(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN (byte) KEY_RSHIFT (const byte) KEY_RSHIFT#0 KEY_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 52 +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W (byte) KEY_X (const byte) KEY_X#0 KEY_X = (byte/signed byte/word/signed word/dword/signed dword) 23 +(byte) KEY_Y (byte) KEY_Z (const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN (byte) LIGHT_GREY (const byte) LIGHT_GREY#0 LIGHT_GREY = (byte/signed byte/word/signed word/dword/signed dword) 15 +(byte) ORANGE (word[]) PIECES (const word[]) PIECES#0 PIECES = { ((word))(const byte[4*4*4]) PIECE_T#0, ((word))(const byte[4*4*4]) PIECE_S#0, ((word))(const byte[4*4*4]) PIECE_Z#0, ((word))(const byte[4*4*4]) PIECE_J#0, ((word))(const byte[4*4*4]) PIECE_O#0, ((word))(const byte[4*4*4]) PIECE_I#0, ((word))(const byte[4*4*4]) PIECE_L#0 } (byte[]) PIECES_COLORS @@ -70,24 +166,67 @@ (const byte[4*4*4]) PIECE_T#0 PIECE_T = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte[4*4*4]) PIECE_Z (const byte[4*4*4]) PIECE_Z#0 PIECE_Z = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } +(byte) PINK (byte) PLAYFIELD_COLS (const byte) PLAYFIELD_COLS#0 PLAYFIELD_COLS = (byte/signed byte/word/signed word/dword/signed dword) 10 (byte) PLAYFIELD_LINES (const byte) PLAYFIELD_LINES#0 PLAYFIELD_LINES = (byte/signed byte/word/signed word/dword/signed dword) 22 +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) SID_CONTROL_GATE (byte) SID_CONTROL_NOISE (const byte) SID_CONTROL_NOISE#0 SID_CONTROL_NOISE = (byte/word/signed word/dword/signed dword) 128 +(byte) SID_CONTROL_PULSE +(byte) SID_CONTROL_RING +(byte) SID_CONTROL_SAWTOOTH +(byte) SID_CONTROL_SYNC +(byte) SID_CONTROL_TEST +(byte) SID_CONTROL_TRIANGLE (byte*) SID_VOICE3_CONTROL (const byte*) SID_VOICE3_CONTROL#0 SID_VOICE3_CONTROL = ((byte*))(word/dword/signed dword) 54290 (word*) SID_VOICE3_FREQ (const word*) SID_VOICE3_FREQ#0 SID_VOICE3_FREQ = ((word*))(word/dword/signed dword) 54286 +(byte*) SID_VOICE3_FREQ_HIGH +(byte*) SID_VOICE3_FREQ_LOW (byte*) SID_VOICE3_OSC (const byte*) SID_VOICE3_OSC#0 SID_VOICE3_OSC = ((byte*))(word/dword/signed dword) 54299 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (byte()) collision((byte) collision::xpos , (byte) collision::ypos , (byte) collision::orientation) (byte~) collision::$7 reg byte a 2002.0 (label) collision::@1 @@ -221,6 +360,7 @@ (byte*) fill::start (byte) fill::val (byte) fill::val#3 reg byte x 1.8333333333333333 +(byte[]) keyboard_char_keycodes (byte()) keyboard_event_get() (label) keyboard_event_get::@3 (label) keyboard_event_get::@return @@ -316,6 +456,12 @@ (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte) keyboard_modifiers +(byte) keyboard_modifiers#11 reg byte x 0.8 +(byte) keyboard_modifiers#12 reg byte x 1.6 +(byte) keyboard_modifiers#13 reg byte x 1.2000000000000002 +(byte) keyboard_modifiers#3 reg byte x 4.0 +(byte) keyboard_modifiers#4 reg byte x 4.0 +(byte) keyboard_modifiers#5 reg byte a 20.0 (byte[8]) keyboard_scan_values (const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) } (void()) lock_current() @@ -623,6 +769,7 @@ reg byte y [ remove_lines::r#2 remove_lines::r#3 remove_lines::r#1 ] reg byte x [ remove_lines::w#6 remove_lines::w#4 remove_lines::w#12 remove_lines::w#11 remove_lines::w#1 remove_lines::w#2 remove_lines::w#3 ] reg byte x [ lock_current::c#2 lock_current::c#1 ] reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#1 ] +reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ] reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:19 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ] reg byte x [ tables_init::j#2 tables_init::j#1 ] @@ -675,6 +822,7 @@ reg byte a [ keyboard_event_pressed::return#2 ] reg byte a [ keyboard_event_scan::$22 ] reg byte a [ keyboard_event_pressed::return#10 ] reg byte a [ keyboard_event_scan::$26 ] +reg byte a [ keyboard_modifiers#5 ] reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] diff --git a/src/test/ref/halfscii.log b/src/test/ref/halfscii.log index 18014b654..980182562 100644 --- a/src/test/ref/halfscii.log +++ b/src/test/ref/halfscii.log @@ -2,6 +2,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte*) CHARSET#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 @@ -221,6 +222,8 @@ SYMBOL TABLE SSA (byte*) CHARGEN#7 (byte*) CHARGEN#8 (byte*) CHARGEN#9 +(byte*) CHARSET +(byte*) CHARSET#0 (byte*) CHARSET4 (byte*) CHARSET4#0 (byte*) CHARSET4#1 @@ -476,6 +479,7 @@ Simple Condition (bool~) main::$39 if((byte*) main::chargen#1<(byte*~) main::$38 Simple Condition (bool~) main::$40 if((byte) main::i#1!=rangelast(0,255)) goto main::@6 Successful SSA optimization Pass2ConditionalJumpSimplification 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 @@ -489,6 +493,7 @@ Constant (const byte*) main::charset4#0 = CHARSET4#0 Constant (const byte) main::bits_gen#2 = main::bits_gen#0+1 Constant (const byte*) main::$38 = CHARGEN#0+2048 Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ Resolved ranged comparison value if(main::i#1!=rangelast(0,255)) goto main::@6 to (byte/signed byte/word/signed word/dword/signed dword) 0 Inlining constant with var siblings (const byte) main::bits_gen#0 @@ -636,6 +641,7 @@ main::@return: scope:[main] from main::@12 VARIABLE REGISTER WEIGHTS (byte*) CHARGEN +(byte*) CHARSET (byte*) CHARSET4 (byte*) D018 (byte*) PROCPORT @@ -1685,6 +1691,7 @@ FINAL SYMBOL TABLE (label) @end (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CHARSET (byte*) CHARSET4 (const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word/dword/signed dword) 10240 (byte*) D018 diff --git a/src/test/ref/halfscii.sym b/src/test/ref/halfscii.sym index 501adbb3d..0e82de07a 100644 --- a/src/test/ref/halfscii.sym +++ b/src/test/ref/halfscii.sym @@ -3,6 +3,7 @@ (label) @end (byte*) CHARGEN (const byte*) CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) 53248 +(byte*) CHARSET (byte*) CHARSET4 (const byte*) CHARSET4#0 CHARSET4 = ((byte*))(word/signed word/dword/signed dword) 10240 (byte*) D018 diff --git a/src/test/ref/immzero.asm b/src/test/ref/immzero.asm index c20e255d6..8391e6d23 100644 --- a/src/test/ref/immzero.asm +++ b/src/test/ref/immzero.asm @@ -4,10 +4,10 @@ jsr main main: { .label w = 2 - ldx #0 - txa + lda #<0 sta w sta w+1 + tax b1: txa clc diff --git a/src/test/ref/immzero.cfg b/src/test/ref/immzero.cfg index cc0ba68d8..a84910fc8 100644 --- a/src/test/ref/immzero.cfg +++ b/src/test/ref/immzero.cfg @@ -11,10 +11,10 @@ main: scope:[main] from @1 [4] phi() to:main::@1 main::@1: scope:[main] from main main::@1 - [5] (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::j#1 ) [5] (word) main::w#2 ← phi( main/((word))(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(word) main::w#1 ) - [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 - [7] (byte) main::j#1 ← ++ (byte) main::j#2 + [5] (byte) main::i#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::j#1 ) + [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 + [7] (byte) main::j#1 ← ++ (byte) main::i#1 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 diff --git a/src/test/ref/immzero.log b/src/test/ref/immzero.log index 57fbcfe30..5528038b3 100644 --- a/src/test/ref/immzero.log +++ b/src/test/ref/immzero.log @@ -3,13 +3,15 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← ((word)) (byte/signed byte/word/signed word/dword/signed dword) 0 (word) main::w#0 ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 (byte) main::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte) main::j#2 ← phi( main/(byte) main::j#0 main::@1/(byte) main::j#1 ) (word) main::w#2 ← phi( main/(word) main::w#0 main::@1/(word) main::w#1 ) + (byte) main::j#2 ← phi( main/(byte) main::j#0 main::@1/(byte) main::j#1 ) + (byte) main::i#1 ← (byte) main::j#2 (word~) main::$1 ← (word) main::w#2 + (byte) main::j#2 (word) main::w#1 ← (word~) main::$1 (byte) main::j#1 ← (byte) main::j#2 + rangenext(0,10) @@ -37,6 +39,9 @@ SYMBOL TABLE SSA (bool~) main::$2 (label) main::@1 (label) main::@return +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 (byte) main::j (byte) main::j#0 (byte) main::j#1 @@ -49,14 +54,17 @@ SYMBOL TABLE SSA Culled Empty Block (label) @2 Successful SSA optimization Pass2CullEmptyBlocks Alias (word) main::w#0 = (byte/signed byte/word/signed word/dword/signed dword~) main::$0 +Alias (byte) main::i#1 = (byte) main::j#2 Alias (word) main::w#1 = (word~) main::$1 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$2 if((byte) main::j#1!=rangelast(0,10)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) main::i#0 = 0 Constant (const word) main::w#0 = ((word))0 Constant (const byte) main::j#0 = 0 Successful SSA optimization Pass2ConstantIdentification -Resolved ranged next value main::j#1 ← ++ main::j#2 to ++ +Successful SSA optimization PassNEliminateUnusedVars +Resolved ranged next value main::j#1 ← ++ main::i#1 to ++ Resolved ranged comparison value if(main::j#1!=rangelast(0,10)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 11 Inlining constant with var siblings (const word) main::w#0 Inlining constant with var siblings (const byte) main::j#0 @@ -72,8 +80,8 @@ CALL GRAPH Calls in [] to main:2 Created 2 initial phi equivalence classes -Coalesced [10] main::w#3 ← main::w#1 -Coalesced [11] main::j#3 ← main::j#1 +Coalesced [10] main::i#2 ← main::j#1 +Coalesced [11] main::w#3 ← main::w#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@3 Adding NOP phi() at start of @begin @@ -95,10 +103,10 @@ main: scope:[main] from @1 [4] phi() to:main::@1 main::@1: scope:[main] from main main::@1 - [5] (byte) main::j#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::j#1 ) [5] (word) main::w#2 ← phi( main/((word))(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(word) main::w#1 ) - [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 - [7] (byte) main::j#1 ← ++ (byte) main::j#2 + [5] (byte) main::i#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::j#1 ) + [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 + [7] (byte) main::j#1 ← ++ (byte) main::i#1 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 @@ -108,21 +116,22 @@ main::@return: scope:[main] from main::@1 VARIABLE REGISTER WEIGHTS (void()) main() +(byte) main::i +(byte) main::i#1 16.5 (byte) main::j (byte) main::j#1 16.5 -(byte) main::j#2 16.5 (word) main::w (word) main::w#1 7.333333333333333 (word) main::w#2 22.0 Initial phi equivalence classes +[ main::i#1 main::j#1 ] [ main::w#2 main::w#1 ] -[ main::j#2 main::j#1 ] Complete equivalence classes +[ main::i#1 main::j#1 ] [ main::w#2 main::w#1 ] -[ main::j#2 main::j#1 ] -Allocated zp ZP_WORD:2 [ main::w#2 main::w#1 ] -Allocated zp ZP_BYTE:4 [ main::j#2 main::j#1 ] +Allocated zp ZP_BYTE:2 [ main::i#1 main::j#1 ] +Allocated zp ZP_WORD:3 [ main::w#2 main::w#1 ] INITIAL ASM //SEG0 Basic Upstart @@ -148,35 +157,36 @@ bend_from_b1: bend: //SEG9 main main: { - .label w = 2 - .label j = 4 + .label i = 2 + .label w = 3 + .label j = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 - lda #0 - sta j - //SEG12 [5] phi (word) main::w#2 = ((word))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 + //SEG11 [5] phi (word) main::w#2 = ((word))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<0 sta w lda #>0 sta w+1 + //SEG12 [5] phi (byte) main::i#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta i jmp b1 //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG14 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [5] phi (byte) main::i#1 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 -- vwuz1=vwuz1_plus_vbuz2 - lda j + //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuz2 + lda i clc adc w sta w lda #0 adc w+1 sta w+1 - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuz1=_inc_vbuz1 + //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 -- vbuz1=_inc_vbuz1 inc j //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda j @@ -190,18 +200,19 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 [ main::j#2 main::w#1 ] ( main:2 [ main::j#2 main::w#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::j#2 main::j#1 ] -Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 [ main::j#2 main::w#1 ] ( main:2 [ main::j#2 main::w#1 ] ) always clobbers reg byte a -Potential registers zp ZP_WORD:2 [ main::w#2 main::w#1 ] : zp ZP_WORD:2 , -Potential registers zp ZP_BYTE:4 [ main::j#2 main::j#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , +Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 [ main::i#1 main::w#1 ] ( main:2 [ main::i#1 main::w#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#1 main::j#1 ] +Statement [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 [ main::i#1 main::w#1 ] ( main:2 [ main::i#1 main::w#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#1 main::j#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:3 [ main::w#2 main::w#1 ] : zp ZP_WORD:3 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp ZP_BYTE:4 [ main::j#2 main::j#1 ] 29.33: zp ZP_WORD:2 [ main::w#2 main::w#1 ] +Uplift Scope [main] 33: zp ZP_BYTE:2 [ main::i#1 main::j#1 ] 29.33: zp ZP_WORD:3 [ main::w#2 main::w#1 ] Uplift Scope [] -Uplifting [main] best 473 combination reg byte x [ main::j#2 main::j#1 ] zp ZP_WORD:2 [ main::w#2 main::w#1 ] +Uplifting [main] best 473 combination reg byte x [ main::i#1 main::j#1 ] zp ZP_WORD:3 [ main::w#2 main::w#1 ] Uplifting [] best 473 combination +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::w#2 main::w#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -230,22 +241,22 @@ main: { .label w = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 - //SEG12 [5] phi (word) main::w#2 = ((word))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 + //SEG11 [5] phi (word) main::w#2 = ((word))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 lda #<0 sta w lda #>0 sta w+1 + //SEG12 [5] phi (byte) main::i#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + ldx #0 jmp b1 //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG14 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG14 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [5] phi (byte) main::i#1 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 -- vwuz1=vwuz1_plus_vbuxx + //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuxx txa clc adc w @@ -253,7 +264,7 @@ main: { lda #0 adc w+1 sta w+1 - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 -- vbuxx=_inc_vbuxx inx //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b @@ -271,8 +282,8 @@ Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination -Replacing instruction lda #<0 with TXA Removing instruction lda #>0 +Replacing instruction ldx #0 with TAX Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b1 with b1 Removing instruction bbegin: @@ -296,15 +307,16 @@ FINAL SYMBOL TABLE (void()) main() (label) main::@1 (label) main::@return +(byte) main::i +(byte) main::i#1 reg byte x 16.5 (byte) main::j (byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 16.5 (word) main::w (word) main::w#1 w zp ZP_WORD:2 7.333333333333333 (word) main::w#2 w zp ZP_WORD:2 22.0 +reg byte x [ main::i#1 main::j#1 ] zp ZP_WORD:2 [ main::w#2 main::w#1 ] -reg byte x [ main::j#2 main::j#1 ] FINAL ASSEMBLER @@ -327,18 +339,18 @@ Score: 357 main: { .label w = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 - //SEG12 [5] phi (word) main::w#2 = ((word))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vwuz1=vbuc1 - txa + //SEG11 [5] phi (word) main::w#2 = ((word))(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + lda #<0 sta w sta w+1 + //SEG12 [5] phi (byte) main::i#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + tax //SEG13 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] - //SEG14 [5] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@1->main::@1#0] -- register_copy - //SEG15 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#1] -- register_copy + //SEG14 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG15 [5] phi (byte) main::i#1 = (byte) main::j#1 [phi:main::@1->main::@1#1] -- register_copy //SEG16 main::@1 b1: - //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::j#2 -- vwuz1=vwuz1_plus_vbuxx + //SEG17 [6] (word) main::w#1 ← (word) main::w#2 + (byte) main::i#1 -- vwuz1=vwuz1_plus_vbuxx txa clc adc w @@ -346,7 +358,7 @@ main: { lda #0 adc w+1 sta w+1 - //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#2 -- vbuxx=_inc_vbuxx + //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::i#1 -- vbuxx=_inc_vbuxx inx //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$b diff --git a/src/test/ref/immzero.sym b/src/test/ref/immzero.sym index b067eec77..96c04793d 100644 --- a/src/test/ref/immzero.sym +++ b/src/test/ref/immzero.sym @@ -4,12 +4,13 @@ (void()) main() (label) main::@1 (label) main::@return +(byte) main::i +(byte) main::i#1 reg byte x 16.5 (byte) main::j (byte) main::j#1 reg byte x 16.5 -(byte) main::j#2 reg byte x 16.5 (word) main::w (word) main::w#1 w zp ZP_WORD:2 7.333333333333333 (word) main::w#2 w zp ZP_WORD:2 22.0 +reg byte x [ main::i#1 main::j#1 ] zp ZP_WORD:2 [ main::w#2 main::w#1 ] -reg byte x [ main::j#2 main::j#1 ] diff --git a/src/test/ref/incrementinarray.cfg b/src/test/ref/incrementinarray.cfg index 2027b0bcd..85f0e3992 100644 --- a/src/test/ref/incrementinarray.cfg +++ b/src/test/ref/incrementinarray.cfg @@ -14,7 +14,7 @@ main: scope:[main] from @20 main::@1: scope:[main] from main main::@6 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@6/(byte) main::i#1 ) [6] (byte*) print_line_cursor#19 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@6/(byte*) print_line_cursor#1 ) - [6] (byte*) print_char_cursor#25 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@6/(byte*~) print_char_cursor#29 ) + [6] (byte*) print_char_cursor#25 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@6/(byte*~) print_char_cursor#30 ) [7] call print_str to:main::@4 main::@4: scope:[main] from main::@1 @@ -30,7 +30,7 @@ main::@return: scope:[main] from main::@5 [13] return to:@return main::@6: scope:[main] from main::@5 - [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 + [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@4 [15] phi() diff --git a/src/test/ref/incrementinarray.log b/src/test/ref/incrementinarray.log index 238f7e52e..705839af0 100644 --- a/src/test/ref/incrementinarray.log +++ b/src/test/ref/incrementinarray.log @@ -4,7 +4,7 @@ CONTROL FLOW GRAPH SSA (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 - to:@19 + to:@12 print_str: scope:[print_str] from main::@1 (byte*) print_char_cursor#27 ← phi( main::@1/(byte*) print_char_cursor#25 ) (byte*) print_str::str#4 ← phi( main::@1/(byte*) print_str::str#1 ) @@ -50,6 +50,12 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#15 return to:@return +@12: scope:[] from @begin + (byte*) print_screen#7 ← phi( @begin/(byte*) print_screen#0 ) + (byte*) print_char_cursor#29 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte*) print_line_cursor#23 ← phi( @begin/(byte*) print_line_cursor#0 ) + (byte[]) print_hextab#0 ← (const string) $0 + to:@19 print_cls: scope:[print_cls] from main (byte*) print_screen#1 ← phi( main/(byte*) print_screen#4 ) (byte*) print_cls::sc#0 ← (byte*) print_screen#1 @@ -75,11 +81,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 (byte*) print_char_cursor#6 ← (byte*) print_char_cursor#16 return to:@return -@19: scope:[] from @begin - (byte*) print_screen#6 ← phi( @begin/(byte*) print_screen#0 ) - (byte*) print_char_cursor#28 ← phi( @begin/(byte*) print_char_cursor#0 ) - (byte*) print_line_cursor#22 ← phi( @begin/(byte*) print_line_cursor#0 ) - (byte[]) txt#0 ← (const string) $0 +@19: scope:[] from @12 + (byte*) print_screen#6 ← phi( @12/(byte*) print_screen#7 ) + (byte*) print_char_cursor#28 ← phi( @12/(byte*) print_char_cursor#29 ) + (byte*) print_line_cursor#22 ← phi( @12/(byte*) print_line_cursor#23 ) + (byte[]) txt#0 ← (const string) $1 to:@20 main: scope:[main] from @20 (byte*) print_char_cursor#24 ← phi( @20/(byte*) print_char_cursor#26 ) @@ -141,7 +147,9 @@ main::@return: scope:[main] from main::@5 @end: scope:[] from @21 SYMBOL TABLE SSA -(const string) $0 = (string) "camelot@" +(const string) $0 = (string) "0123456789abcdef" +(const string) $1 = (string) "camelot@" +(label) @12 (label) @19 (label) @20 (label) @21 @@ -183,6 +191,7 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#26 (byte*) print_char_cursor#27 (byte*) print_char_cursor#28 +(byte*) print_char_cursor#29 (byte*) print_char_cursor#3 (byte*) print_char_cursor#4 (byte*) print_char_cursor#5 @@ -200,6 +209,8 @@ SYMBOL TABLE SSA (byte*) print_cls::sc#0 (byte*) print_cls::sc#1 (byte*) print_cls::sc#2 +(byte[]) print_hextab +(byte[]) print_hextab#0 (byte*) print_line_cursor (byte*) print_line_cursor#0 (byte*) print_line_cursor#1 @@ -217,6 +228,7 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#20 (byte*) print_line_cursor#21 (byte*) print_line_cursor#22 +(byte*) print_line_cursor#23 (byte*) print_line_cursor#3 (byte*) print_line_cursor#4 (byte*) print_line_cursor#5 @@ -238,6 +250,7 @@ SYMBOL TABLE SSA (byte*) print_screen#4 (byte*) print_screen#5 (byte*) print_screen#6 +(byte*) print_screen#7 (void()) print_str((byte*) print_str::str) (bool~) print_str::$0 (label) print_str::@1 @@ -252,7 +265,7 @@ SYMBOL TABLE SSA (byte[]) txt (byte[]) txt#0 -Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#22 (byte*) print_char_cursor#28 (byte*) print_screen#6 (byte*) print_line_cursor#20 (byte*) print_char_cursor#26 (byte*) print_screen#5 +Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#23 (byte*) print_char_cursor#29 (byte*) print_screen#7 (byte*) print_line_cursor#22 (byte*) print_char_cursor#28 (byte*) print_screen#6 (byte*) print_line_cursor#20 (byte*) print_char_cursor#26 (byte*) print_screen#5 Alias (byte*) print_str::str#2 = (byte*) print_str::str#3 Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#13 (byte*) print_char_cursor#2 Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#10 (byte*) print_char_cursor#3 (byte*) print_line_cursor#11 (byte*) print_char_cursor#15 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 @@ -294,7 +307,8 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$3 if((byte) main::i#1!=rangelast(0,10)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 -Constant (const byte[]) txt#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 +Constant (const byte[]) txt#0 = $1 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 @@ -304,9 +318,12 @@ Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(txt#0+1) Consolidated array index constant in *(txt#0+1) Successful SSA optimization Pass2ConstantAdditionElimination +Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ Resolved ranged comparison value if(main::i#1!=rangelast(0,10)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 11 Culled Empty Block (label) print_ln::@2 +Culled Empty Block (label) @12 Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) @19 Culled Empty Block (label) main::@3 @@ -320,7 +337,7 @@ Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dwo Constant inlined print_str::str#1 = (const byte[]) txt#0 Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024 -Constant inlined $0 = (const byte[]) txt#0 +Constant inlined $1 = (const byte[]) txt#0 Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting main::@6(between main::@5 and main::@1) @@ -337,14 +354,14 @@ Calls in [] to main:2 Calls in [main] to print_cls:5 print_str:7 print_ln:9 Created 7 initial phi equivalence classes -Not coalescing [14] print_char_cursor#29 ← print_line_cursor#1 -Coalesced [15] print_line_cursor#23 ← print_line_cursor#1 +Not coalescing [14] print_char_cursor#30 ← print_line_cursor#1 +Coalesced [15] print_line_cursor#24 ← print_line_cursor#1 Coalesced [16] main::i#5 ← main::i#1 -Coalesced [17] print_line_cursor#24 ← print_line_cursor#19 -Coalesced (already) [22] print_line_cursor#25 ← print_line_cursor#1 -Coalesced [23] print_char_cursor#30 ← print_char_cursor#25 +Coalesced [17] print_line_cursor#25 ← print_line_cursor#19 +Coalesced (already) [22] print_line_cursor#26 ← print_line_cursor#1 +Coalesced [23] print_char_cursor#31 ← print_char_cursor#25 Coalesced [30] print_str::str#5 ← print_str::str#0 -Coalesced [31] print_char_cursor#31 ← print_char_cursor#1 +Coalesced [31] print_char_cursor#32 ← print_char_cursor#1 Coalesced [38] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 5 phi equivalence classes Culled Empty Block (label) print_ln::@3 @@ -375,7 +392,7 @@ main: scope:[main] from @20 main::@1: scope:[main] from main main::@6 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@6/(byte) main::i#1 ) [6] (byte*) print_line_cursor#19 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@6/(byte*) print_line_cursor#1 ) - [6] (byte*) print_char_cursor#25 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@6/(byte*~) print_char_cursor#29 ) + [6] (byte*) print_char_cursor#25 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@6/(byte*~) print_char_cursor#30 ) [7] call print_str to:main::@4 main::@4: scope:[main] from main::@1 @@ -391,7 +408,7 @@ main::@return: scope:[main] from main::@5 [13] return to:@return main::@6: scope:[main] from main::@5 - [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 + [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@4 [15] phi() @@ -443,11 +460,12 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#1 101.0 (byte*) print_char_cursor#12 40.6 (byte*) print_char_cursor#25 6.5 -(byte*~) print_char_cursor#29 22.0 +(byte*~) print_char_cursor#30 22.0 (void()) print_cls() (byte*) print_cls::sc (byte*) print_cls::sc#1 16.5 (byte*) print_cls::sc#2 16.5 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 40.625 (byte*) print_line_cursor#19 3.25 @@ -464,18 +482,18 @@ Initial phi equivalence classes [ main::i#2 main::i#1 ] [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] [ print_str::str#2 print_str::str#0 ] -[ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +[ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] [ print_cls::sc#2 print_cls::sc#1 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] [ print_str::str#2 print_str::str#0 ] -[ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +[ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] [ print_cls::sc#2 print_cls::sc#1 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_WORD:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] Allocated zp ZP_WORD:5 [ print_str::str#2 print_str::str#0 ] -Allocated zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +Allocated zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] Allocated zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] INITIAL ASM @@ -561,7 +579,7 @@ main: { rts //SEG29 main::@6 b6: - //SEG30 [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG30 [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -570,7 +588,7 @@ main: { b1_from_b6: //SEG32 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy //SEG33 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG34 [6] phi (byte*) print_char_cursor#25 = (byte*~) print_char_cursor#29 [phi:main::@6->main::@1#2] -- register_copy + //SEG34 [6] phi (byte*) print_char_cursor#25 = (byte*~) print_char_cursor#30 [phi:main::@6->main::@1#2] -- register_copy jmp b1 } //SEG35 print_ln @@ -696,7 +714,7 @@ print_cls: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a +Statement [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a Statement [18] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a Statement [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) always clobbers reg byte a reg byte y @@ -705,7 +723,7 @@ Statement [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) [ Statement [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y Statement [31] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a +Statement [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#30 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a Statement [18] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a Statement [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) always clobbers reg byte a reg byte y @@ -715,17 +733,17 @@ Statement [31] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/sign Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ print_str::str#2 print_str::str#0 ] : zp ZP_WORD:5 , -Potential registers zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] : zp ZP_WORD:7 , +Potential registers zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] : zp ZP_WORD:7 , Potential registers zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:9 , REGISTER UPLIFT SCOPES -Uplift Scope [] 247.88: zp ZP_WORD:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 170.1: zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +Uplift Scope [] 247.88: zp ZP_WORD:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 170.1: zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] Uplift Scope [print_str] 303: zp ZP_WORD:5 [ print_str::str#2 print_str::str#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [main] 15.4: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [print_ln] -Uplifting [] best 12807 combination zp ZP_WORD:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +Uplifting [] best 12807 combination zp ZP_WORD:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:7 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] Uplifting [print_str] best 12807 combination zp ZP_WORD:5 [ print_str::str#2 print_str::str#0 ] Uplifting [print_cls] best 12807 combination zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] Uplifting [main] best 12717 combination reg byte x [ main::i#2 main::i#1 ] @@ -733,7 +751,7 @@ Uplifting [print_ln] best 12717 combination Coalescing zero page register [ zp ZP_WORD:3 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] ] with [ zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] ] Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] Allocated (was zp ZP_WORD:5) zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 ] -Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +Allocated (was zp ZP_WORD:7) zp ZP_WORD:6 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -815,7 +833,7 @@ main: { rts //SEG29 main::@6 b6: - //SEG30 [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG30 [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -824,7 +842,7 @@ main: { b1_from_b6: //SEG32 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy //SEG33 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG34 [6] phi (byte*) print_char_cursor#25 = (byte*~) print_char_cursor#29 [phi:main::@6->main::@1#2] -- register_copy + //SEG34 [6] phi (byte*) print_char_cursor#25 = (byte*~) print_char_cursor#30 [phi:main::@6->main::@1#2] -- register_copy jmp b1 } //SEG35 print_ln @@ -1013,13 +1031,14 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:6 101.0 (byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:6 40.6 (byte*) print_char_cursor#25 print_char_cursor zp ZP_WORD:6 6.5 -(byte*~) print_char_cursor#29 print_char_cursor zp ZP_WORD:6 22.0 +(byte*~) print_char_cursor#30 print_char_cursor zp ZP_WORD:6 22.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:2 40.625 (byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:2 3.25 @@ -1041,7 +1060,7 @@ FINAL SYMBOL TABLE reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 ] -zp ZP_WORD:6 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +zp ZP_WORD:6 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] FINAL ASSEMBLER @@ -1106,7 +1125,7 @@ main: { rts //SEG29 main::@6 b6: - //SEG30 [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG30 [14] (byte*~) print_char_cursor#30 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -1114,7 +1133,7 @@ main: { //SEG31 [6] phi from main::@6 to main::@1 [phi:main::@6->main::@1] //SEG32 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@1#0] -- register_copy //SEG33 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@6->main::@1#1] -- register_copy - //SEG34 [6] phi (byte*) print_char_cursor#25 = (byte*~) print_char_cursor#29 [phi:main::@6->main::@1#2] -- register_copy + //SEG34 [6] phi (byte*) print_char_cursor#25 = (byte*~) print_char_cursor#30 [phi:main::@6->main::@1#2] -- register_copy jmp b1 } //SEG35 print_ln diff --git a/src/test/ref/incrementinarray.sym b/src/test/ref/incrementinarray.sym index 731fa2dc6..a8943f334 100644 --- a/src/test/ref/incrementinarray.sym +++ b/src/test/ref/incrementinarray.sym @@ -14,13 +14,14 @@ (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:6 101.0 (byte*) print_char_cursor#12 print_char_cursor zp ZP_WORD:6 40.6 (byte*) print_char_cursor#25 print_char_cursor zp ZP_WORD:6 6.5 -(byte*~) print_char_cursor#29 print_char_cursor zp ZP_WORD:6 22.0 +(byte*~) print_char_cursor#30 print_char_cursor zp ZP_WORD:6 22.0 (void()) print_cls() (label) print_cls::@1 (label) print_cls::@return (byte*) print_cls::sc (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:2 40.625 (byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:2 3.25 @@ -42,4 +43,4 @@ reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:4 [ print_str::str#2 print_str::str#0 ] -zp ZP_WORD:6 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#29 print_char_cursor#1 ] +zp ZP_WORD:6 [ print_char_cursor#12 print_char_cursor#25 print_char_cursor#30 print_char_cursor#1 ] diff --git a/src/test/ref/infloop-error.log b/src/test/ref/infloop-error.log index 3c9f28660..bf6f22097 100644 --- a/src/test/ref/infloop-error.log +++ b/src/test/ref/infloop-error.log @@ -135,14 +135,14 @@ Alias (byte) main::min#5 = (byte) main::min#6 Alias (byte*) SCREEN#2 = (byte*) SCREEN#3 Alias (byte*) SCREEN#0 = (byte*) SCREEN#8 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (byte) main::pos#1 +Alias candidate removed (phi-usage) (byte) main::pos#1 Alias (byte) main::pos#3 = (byte) main::pos#5 Alias (byte) main::max#2 = (byte) main::max#4 Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 (byte*) SCREEN#4 Alias (byte) main::min#3 = (byte) main::min#5 Successful SSA optimization Pass2AliasElimination -Alias candidate removed (byte) main::pos#1 -Alias candidate removed (byte) main::pos#3 = +Alias candidate removed (phi-usage) (byte) main::pos#1 +Alias candidate removed (solo) (byte) main::pos#3 = Self Phi Eliminated (byte*) SCREEN#1 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte*) SCREEN#7 (byte*) SCREEN#0 diff --git a/src/test/ref/irq-hardware-clobber-jsr.cfg b/src/test/ref/irq-hardware-clobber-jsr.cfg index dcfc5ed1f..cf68822be 100644 --- a/src/test/ref/irq-hardware-clobber-jsr.cfg +++ b/src/test/ref/irq-hardware-clobber-jsr.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@6 -@6: scope:[] from @begin + to:@7 +@7: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 [3] phi() -main: scope:[main] from @6 +main: scope:[main] from @7 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 diff --git a/src/test/ref/irq-hardware-clobber-jsr.log b/src/test/ref/irq-hardware-clobber-jsr.log index cc33d1b14..d82b71641 100644 --- a/src/test/ref/irq-hardware-clobber-jsr.log +++ b/src/test/ref/irq-hardware-clobber-jsr.log @@ -6,21 +6,84 @@ CONTROL FLOW GRAPH SSA (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@6 -main: scope:[main] from @6 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@7 +main: scope:[main] from @7 asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -57,50 +120,176 @@ do_irq: scope:[do_irq] from irq do_irq::@return: scope:[do_irq] from do_irq return to:@return -@6: scope:[] from @begin +@7: scope:[] from @begin call main - to:@7 -@7: scope:[] from @6 + to:@8 +@8: scope:[] from @7 to:@end -@end: scope:[] from @7 +@end: scope:[] from @8 SYMBOL TABLE SSA -(label) @6 (label) @7 +(label) @8 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte) BLACK (byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 (byte*) CIA1_INTERRUPT (byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 (byte) CIA_INTERRUPT_CLEAR (byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 (void()**) HARDWARE_IRQ (void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 (byte*) IRQ_ENABLE (byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 (byte) IRQ_RASTER (byte) IRQ_RASTER#0 (byte*) IRQ_STATUS (byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 (byte*) PROCPORT_DDR (byte*) PROCPORT_DDR#0 (byte) PROCPORT_DDR_MEMORY_MASK (byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 (byte) PROCPORT_RAM_IO (byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 (byte*) VIC_CONTROL (byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 (byte) WHITE (byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) do_irq() (label) do_irq::@return interrupt(HARDWARE_CLOBBER)(void()) irq() @@ -113,28 +302,92 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() (label) main::@return Culled Empty Block (label) irq::@1 -Culled Empty Block (label) @7 +Culled Empty Block (label) @8 Successful SSA optimization Pass2CullEmptyBlocks Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte) BLACK#0 = 0 Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const void()*) main::$0 = &irq Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Culled Empty Block (label) main::@1 @@ -142,7 +395,7 @@ Successful SSA optimization Pass2CullEmptyBlocks Constant inlined main::$0 = &interrupt(HARDWARE_CLOBBER)(void()) irq() Successful SSA optimization Pass2ConstantInlining Adding NOP phi() at start of @begin -Adding NOP phi() at start of @6 +Adding NOP phi() at start of @7 Adding NOP phi() at start of @end Adding NOP phi() at start of irq CALL GRAPH @@ -152,21 +405,21 @@ Calls in [irq] to do_irq:15 Created 0 initial phi equivalence classes Coalesced down to 0 phi equivalence classes Adding NOP phi() at start of @begin -Adding NOP phi() at start of @6 +Adding NOP phi() at start of @7 Adding NOP phi() at start of @end Adding NOP phi() at start of irq FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@6 -@6: scope:[] from @begin + to:@7 +@7: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 [3] phi() -main: scope:[main] from @6 +main: scope:[main] from @7 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -199,21 +452,84 @@ do_irq::@return: scope:[do_irq] from do_irq VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN (byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR (byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY (void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE +(byte) YELLOW (void()) do_irq() interrupt(HARDWARE_CLOBBER)(void()) irq() (void()) main() @@ -245,15 +561,15 @@ INITIAL ASM .const WHITE = 1 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG6 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG7 @end bend: @@ -387,15 +703,15 @@ ASSEMBLER BEFORE OPTIMIZATION .const WHITE = 1 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG6 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG7 @end bend: @@ -469,58 +785,121 @@ do_irq: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: -Removing instruction b6_from_bbegin: -Removing instruction bend_from_b6: +Removing instruction b7_from_bbegin: +Removing instruction bend_from_b7: Removing instruction breturn: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b6: +Removing instruction b7: Removing instruction bend: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @6 +(label) @7 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CIA1_INTERRUPT (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (void()) do_irq() (label) do_irq::@return interrupt(HARDWARE_CLOBBER)(void()) irq() @@ -555,11 +934,11 @@ Score: 230 .const BLACK = 0 .const WHITE = 1 //SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 @7 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @6 to @end [phi:@6->@end] +//SEG6 [3] phi from @7 to @end [phi:@7->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/irq-hardware-clobber-jsr.sym b/src/test/ref/irq-hardware-clobber-jsr.sym index 17b6ecaa5..41ce73151 100644 --- a/src/test/ref/irq-hardware-clobber-jsr.sym +++ b/src/test/ref/irq-hardware-clobber-jsr.sym @@ -1,38 +1,101 @@ -(label) @6 +(label) @7 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte) BLACK (const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0 +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN (byte*) CIA1_INTERRUPT (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM (byte*) VIC_CONTROL (const byte*) VIC_CONTROL#0 VIC_CONTROL = ((byte*))(word/dword/signed dword) 53265 +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (void()) do_irq() (label) do_irq::@return interrupt(HARDWARE_CLOBBER)(void()) irq() diff --git a/src/test/ref/irq-hardware-clobber.log b/src/test/ref/irq-hardware-clobber.log index da086df7d..d2741e88d 100644 --- a/src/test/ref/irq-hardware-clobber.log +++ b/src/test/ref/irq-hardware-clobber.log @@ -2,12 +2,16 @@ Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq() CONTROL FLOW GRAPH SSA @begin: scope:[] from + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) FGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -72,12 +76,20 @@ SYMBOL TABLE SSA (byte*) FGCOL#0 (void()**) HARDWARE_IRQ (void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 (byte*) IRQ_ENABLE (byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 (byte) IRQ_RASTER (byte) IRQ_RASTER#0 (byte*) IRQ_STATUS (byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 (byte*) PROCPORT (byte*) PROCPORT#0 (byte*) PROCPORT_DDR @@ -102,12 +114,16 @@ interrupt(HARDWARE_CLOBBER)(void()) irq() Culled Empty Block (label) @3 Successful SSA optimization Pass2CullEmptyBlocks +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) BGCOL#0 = ((byte*))53280 Constant (const byte*) FGCOL#0 = ((byte*))53281 Constant (const byte) WHITE#0 = 1 @@ -122,6 +138,7 @@ Constant (const void()*) main::$0 = &irq Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Culled Empty Block (label) main::@1 @@ -181,9 +198,13 @@ VARIABLE REGISTER WEIGHTS (byte) CIA_INTERRUPT_CLEAR (byte*) FGCOL (void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte*) PROCPORT (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK @@ -453,12 +474,16 @@ FINAL SYMBOL TABLE (const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) 53281 (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) PROCPORT_DDR diff --git a/src/test/ref/irq-hardware-clobber.sym b/src/test/ref/irq-hardware-clobber.sym index 407379094..19d80eb08 100644 --- a/src/test/ref/irq-hardware-clobber.sym +++ b/src/test/ref/irq-hardware-clobber.sym @@ -13,12 +13,16 @@ (const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) 53281 (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) PROCPORT_DDR diff --git a/src/test/ref/irq-hardware.log b/src/test/ref/irq-hardware.log index 998478880..aeb6ad053 100644 --- a/src/test/ref/irq-hardware.log +++ b/src/test/ref/irq-hardware.log @@ -2,12 +2,16 @@ Resolved forward reference irq to interrupt(HARDWARE_ALL)(void()) irq() CONTROL FLOW GRAPH SSA @begin: scope:[] from + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) FGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -72,12 +76,20 @@ SYMBOL TABLE SSA (byte*) FGCOL#0 (void()**) HARDWARE_IRQ (void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 (byte*) IRQ_ENABLE (byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 (byte) IRQ_RASTER (byte) IRQ_RASTER#0 (byte*) IRQ_STATUS (byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 (byte*) PROCPORT (byte*) PROCPORT#0 (byte*) PROCPORT_DDR @@ -102,12 +114,16 @@ interrupt(HARDWARE_ALL)(void()) irq() Culled Empty Block (label) @3 Successful SSA optimization Pass2CullEmptyBlocks +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) BGCOL#0 = ((byte*))53280 Constant (const byte*) FGCOL#0 = ((byte*))53281 Constant (const byte) WHITE#0 = 1 @@ -122,6 +138,7 @@ Constant (const void()*) main::$0 = &irq Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@2 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Culled Empty Block (label) main::@1 @@ -181,9 +198,13 @@ VARIABLE REGISTER WEIGHTS (byte) CIA_INTERRUPT_CLEAR (byte*) FGCOL (void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte*) PROCPORT (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK @@ -452,12 +473,16 @@ FINAL SYMBOL TABLE (const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) 53281 (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) PROCPORT_DDR diff --git a/src/test/ref/irq-hardware.sym b/src/test/ref/irq-hardware.sym index 8405ac4a2..4f37eccdf 100644 --- a/src/test/ref/irq-hardware.sym +++ b/src/test/ref/irq-hardware.sym @@ -13,12 +13,16 @@ (const byte*) FGCOL#0 FGCOL = ((byte*))(word/dword/signed dword) 53281 (void()**) HARDWARE_IRQ (const void()**) HARDWARE_IRQ#0 HARDWARE_IRQ = ((void()**))(word/dword/signed dword) 65534 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS (const byte*) IRQ_STATUS#0 IRQ_STATUS = ((byte*))(word/dword/signed dword) 53273 +(void()**) KERNEL_IRQ (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) PROCPORT_DDR diff --git a/src/test/ref/irq-kernel.log b/src/test/ref/irq-kernel.log index 555b6078d..38a157d63 100644 --- a/src/test/ref/irq-kernel.log +++ b/src/test/ref/irq-kernel.log @@ -8,6 +8,9 @@ CONTROL FLOW GRAPH SSA (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -55,8 +58,14 @@ SYMBOL TABLE SSA (byte*) CIA1_INTERRUPT#0 (byte) CIA_INTERRUPT_CLEAR (byte) CIA_INTERRUPT_CLEAR#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 (byte*) IRQ_ENABLE (byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 (byte) IRQ_RASTER (byte) IRQ_RASTER#0 (byte*) IRQ_STATUS @@ -83,6 +92,9 @@ Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) BGCOL#0 = ((byte*))53280 Constant (const byte) WHITE#0 = 1 Constant (const byte) BLACK#0 = 0 @@ -90,6 +102,7 @@ Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 Constant (const void()*) main::$0 = &irq Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars Constant inlined main::$0 = &interrupt(KERNEL_KEYBOARD)(void()) irq() Successful SSA optimization Pass2ConstantInlining Adding NOP phi() at start of @begin @@ -141,7 +154,10 @@ VARIABLE REGISTER WEIGHTS (byte) BLACK (byte*) CIA1_INTERRUPT (byte) CIA_INTERRUPT_CLEAR +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (byte*) IRQ_STATUS (void()**) KERNEL_IRQ @@ -361,8 +377,11 @@ FINAL SYMBOL TABLE (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS diff --git a/src/test/ref/irq-kernel.sym b/src/test/ref/irq-kernel.sym index 25771a43c..901f34495 100644 --- a/src/test/ref/irq-kernel.sym +++ b/src/test/ref/irq-kernel.sym @@ -9,8 +9,11 @@ (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS diff --git a/src/test/ref/irq-raster.log b/src/test/ref/irq-raster.log index 9fb6e9350..8db9bfe12 100644 --- a/src/test/ref/irq-raster.log +++ b/src/test/ref/irq-raster.log @@ -8,6 +8,9 @@ CONTROL FLOW GRAPH SSA (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -55,8 +58,14 @@ SYMBOL TABLE SSA (byte*) CIA1_INTERRUPT#0 (byte) CIA_INTERRUPT_CLEAR (byte) CIA_INTERRUPT_CLEAR#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 (byte*) IRQ_ENABLE (byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 (byte) IRQ_RASTER (byte) IRQ_RASTER#0 (byte*) IRQ_STATUS @@ -83,6 +92,9 @@ Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 Constant (const byte*) BGCOL#0 = ((byte*))53280 Constant (const byte) WHITE#0 = 1 Constant (const byte) BLACK#0 = 0 @@ -90,6 +102,7 @@ Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 Constant (const void()*) main::$0 = &irq Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars Constant inlined main::$0 = &interrupt(KERNEL_MIN)(void()) irq() Successful SSA optimization Pass2ConstantInlining Adding NOP phi() at start of @begin @@ -141,7 +154,10 @@ VARIABLE REGISTER WEIGHTS (byte) BLACK (byte*) CIA1_INTERRUPT (byte) CIA_INTERRUPT_CLEAR +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (byte*) IRQ_STATUS (void()**) KERNEL_IRQ @@ -361,8 +377,11 @@ FINAL SYMBOL TABLE (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS diff --git a/src/test/ref/irq-raster.sym b/src/test/ref/irq-raster.sym index dda1bbb07..4c9bdc120 100644 --- a/src/test/ref/irq-raster.sym +++ b/src/test/ref/irq-raster.sym @@ -9,8 +9,11 @@ (const byte*) CIA1_INTERRUPT#0 CIA1_INTERRUPT = ((byte*))(word/dword/signed dword) 56333 (byte) CIA_INTERRUPT_CLEAR (const byte) CIA_INTERRUPT_CLEAR#0 CIA_INTERRUPT_CLEAR = (byte/signed byte/word/signed word/dword/signed dword) 127 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE (byte*) IRQ_ENABLE (const byte*) IRQ_ENABLE#0 IRQ_ENABLE = ((byte*))(word/dword/signed dword) 53274 +(byte) IRQ_LIGHTPEN (byte) IRQ_RASTER (const byte) IRQ_RASTER#0 IRQ_RASTER = (byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) IRQ_STATUS diff --git a/src/test/ref/keyboard-glitch.cfg b/src/test/ref/keyboard-glitch.cfg index 142d596ca..0d949d2c7 100644 --- a/src/test/ref/keyboard-glitch.cfg +++ b/src/test/ref/keyboard-glitch.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@13 -@13: scope:[] from @begin + to:@14 +@14: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @13 +@end: scope:[] from @14 [3] phi() -main: scope:[main] from @13 +main: scope:[main] from @14 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 to:main::@2 main::@2: scope:[main] from main main::@2 diff --git a/src/test/ref/keyboard-glitch.log b/src/test/ref/keyboard-glitch.log index 8b00eb25d..703e40c69 100644 --- a/src/test/ref/keyboard-glitch.log +++ b/src/test/ref/keyboard-glitch.log @@ -2,21 +2,155 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 + (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 - to:@3 -@3: scope:[] from @begin + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin + (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) KEY_4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) KEY_Z#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) KEY_S#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) KEY_E#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) KEY_5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) KEY_R#0 ← (byte/signed byte/word/signed word/dword/signed dword) 17 + (byte) KEY_D#0 ← (byte/signed byte/word/signed word/dword/signed dword) 18 + (byte) KEY_6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 19 (byte) KEY_C#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 + (byte) KEY_F#0 ← (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) KEY_T#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 + (byte) KEY_X#0 ← (byte/signed byte/word/signed word/dword/signed dword) 23 + (byte) KEY_7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) KEY_Y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 25 + (byte) KEY_G#0 ← (byte/signed byte/word/signed word/dword/signed dword) 26 + (byte) KEY_8#0 ← (byte/signed byte/word/signed word/dword/signed dword) 27 + (byte) KEY_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 28 + (byte) KEY_H#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 + (byte) KEY_U#0 ← (byte/signed byte/word/signed word/dword/signed dword) 30 + (byte) KEY_V#0 ← (byte/signed byte/word/signed word/dword/signed dword) 31 + (byte) KEY_9#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) KEY_I#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 + (byte) KEY_J#0 ← (byte/signed byte/word/signed word/dword/signed dword) 34 + (byte) KEY_0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 35 + (byte) KEY_M#0 ← (byte/signed byte/word/signed word/dword/signed dword) 36 + (byte) KEY_K#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 + (byte) KEY_O#0 ← (byte/signed byte/word/signed word/dword/signed dword) 38 + (byte) KEY_N#0 ← (byte/signed byte/word/signed word/dword/signed dword) 39 + (byte) KEY_PLUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) KEY_P#0 ← (byte/signed byte/word/signed word/dword/signed dword) 41 + (byte) KEY_L#0 ← (byte/signed byte/word/signed word/dword/signed dword) 42 + (byte) KEY_MINUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 43 + (byte) KEY_DOT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 44 + (byte) KEY_COLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 45 + (byte) KEY_AT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 46 + (byte) KEY_COMMA#0 ← (byte/signed byte/word/signed word/dword/signed dword) 47 + (byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 + (byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52 + (byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 57 + (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58 + (byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 + (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 + (byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62 + (byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 63 + (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@11 + to:@8 keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 ) *((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1) @@ -51,8 +185,20 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#6 return to:@return -main: scope:[main] from @13 - (byte*) SCREEN#12 ← phi( @13/(byte*) SCREEN#14 ) +@8: scope:[] from @4 + (byte[8]) keyboard_events#0 ← { fill( 8, 0) } + (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_MODIFIER_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 + (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 + (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } + to:@12 +main: scope:[main] from @14 + (byte*) SCREEN#12 ← phi( @14/(byte*) SCREEN#14 ) *((byte*) BORDERCOL#0) ← (byte) GREEN#0 to:main::@1 main::@1: scope:[main] from main main::@7 @@ -69,9 +215,9 @@ main::@7: scope:[main] from main::@2 main::@return: scope:[main] from main::@1 return to:@return -@11: scope:[] from @3 +@12: scope:[] from @8 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 - to:@13 + to:@14 menu: scope:[menu] from main::@2 (byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#10 ) to:menu::@1 @@ -164,39 +310,269 @@ pressed::@4: scope:[pressed] from pressed::@10 pressed::@return: scope:[pressed] from pressed::@1 pressed::@10 return to:@return -@13: scope:[] from @11 - (byte*) SCREEN#14 ← phi( @11/(byte*) SCREEN#0 ) +@14: scope:[] from @12 + (byte*) SCREEN#14 ← phi( @12/(byte*) SCREEN#0 ) call main - to:@14 -@14: scope:[] from @13 + to:@15 +@15: scope:[] from @14 to:@end -@end: scope:[] from @14 +@end: scope:[] from @15 SYMBOL TABLE SSA -(label) @11 -(label) @13 +(byte~) $0 +(label) @12 (label) @14 -(label) @3 +(label) @15 +(label) @4 +(label) @8 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 (byte*) CIA1_PORT_B (byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) GREEN (byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte) KEY_0 +(byte) KEY_0#0 +(byte) KEY_1 +(byte) KEY_1#0 +(byte) KEY_2 +(byte) KEY_2#0 +(byte) KEY_3 +(byte) KEY_3#0 +(byte) KEY_4 +(byte) KEY_4#0 +(byte) KEY_5 +(byte) KEY_5#0 +(byte) KEY_6 +(byte) KEY_6#0 +(byte) KEY_7 +(byte) KEY_7#0 +(byte) KEY_8 +(byte) KEY_8#0 +(byte) KEY_9 +(byte) KEY_9#0 +(byte) KEY_A +(byte) KEY_A#0 +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_LEFT#0 +(byte) KEY_ARROW_UP +(byte) KEY_ARROW_UP#0 +(byte) KEY_ASTERISK +(byte) KEY_ASTERISK#0 +(byte) KEY_AT +(byte) KEY_AT#0 +(byte) KEY_B +(byte) KEY_B#0 (byte) KEY_C (byte) KEY_C#0 +(byte) KEY_COLON +(byte) KEY_COLON#0 +(byte) KEY_COMMA +(byte) KEY_COMMA#0 +(byte) KEY_COMMODORE +(byte) KEY_COMMODORE#0 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_DOWN#0 +(byte) KEY_CRSR_RIGHT +(byte) KEY_CRSR_RIGHT#0 +(byte) KEY_CTRL +(byte) KEY_CTRL#0 +(byte) KEY_D +(byte) KEY_D#0 +(byte) KEY_DEL +(byte) KEY_DEL#0 +(byte) KEY_DOT +(byte) KEY_DOT#0 (byte) KEY_E (byte) KEY_E#0 +(byte) KEY_EQUALS +(byte) KEY_EQUALS#0 +(byte) KEY_F +(byte) KEY_F#0 +(byte) KEY_F1 +(byte) KEY_F1#0 +(byte) KEY_F3 +(byte) KEY_F3#0 +(byte) KEY_F5 +(byte) KEY_F5#0 +(byte) KEY_F7 +(byte) KEY_F7#0 +(byte) KEY_G +(byte) KEY_G#0 +(byte) KEY_H +(byte) KEY_H#0 +(byte) KEY_HOME +(byte) KEY_HOME#0 (byte) KEY_I (byte) KEY_I#0 +(byte) KEY_J +(byte) KEY_J#0 +(byte) KEY_K +(byte) KEY_K#0 +(byte) KEY_L +(byte) KEY_L#0 +(byte) KEY_LSHIFT +(byte) KEY_LSHIFT#0 +(byte) KEY_M +(byte) KEY_M#0 +(byte) KEY_MINUS +(byte) KEY_MINUS#0 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_COMMODORE#0 +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_CTRL#0 +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_LSHIFT#0 +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_MODIFIER_SHIFT#0 +(byte) KEY_N +(byte) KEY_N#0 +(byte) KEY_O +(byte) KEY_O#0 +(byte) KEY_P +(byte) KEY_P#0 +(byte) KEY_PLUS +(byte) KEY_PLUS#0 +(byte) KEY_POUND +(byte) KEY_POUND#0 +(byte) KEY_Q +(byte) KEY_Q#0 +(byte) KEY_R +(byte) KEY_R#0 +(byte) KEY_RETURN +(byte) KEY_RETURN#0 +(byte) KEY_RSHIFT +(byte) KEY_RSHIFT#0 +(byte) KEY_RUNSTOP +(byte) KEY_RUNSTOP#0 +(byte) KEY_S +(byte) KEY_S#0 +(byte) KEY_SEMICOLON +(byte) KEY_SEMICOLON#0 +(byte) KEY_SLASH +(byte) KEY_SLASH#0 (byte) KEY_SPACE (byte) KEY_SPACE#0 +(byte) KEY_T +(byte) KEY_T#0 +(byte) KEY_U +(byte) KEY_U#0 +(byte) KEY_V +(byte) KEY_V#0 +(byte) KEY_W +(byte) KEY_W#0 +(byte) KEY_X +(byte) KEY_X#0 +(byte) KEY_Y +(byte) KEY_Y#0 +(byte) KEY_Z +(byte) KEY_Z#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 +(byte*) RASTER +(byte*) RASTER#0 (byte) RED (byte) RED#0 (byte*) SCREEN @@ -215,6 +591,60 @@ SYMBOL TABLE SSA (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 +(byte[]) keyboard_char_keycodes +(byte[]) keyboard_char_keycodes#0 +(byte[8]) keyboard_events +(byte[8]) keyboard_events#0 +(byte) keyboard_events_size +(byte) keyboard_events_size#0 (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$0 (byte~) keyboard_key_pressed::$1 @@ -263,6 +693,10 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid#1 (byte[8]) keyboard_matrix_row_bitmask (byte[8]) keyboard_matrix_row_bitmask#0 +(byte) keyboard_modifiers +(byte) keyboard_modifiers#0 +(byte[8]) keyboard_scan_values +(byte[8]) keyboard_scan_values#0 (void()) main() (label) main::@1 (label) main::@2 @@ -303,7 +737,7 @@ SYMBOL TABLE SSA Culled Empty Block (label) menu::@18 Culled Empty Block (label) pressed::@4 -Culled Empty Block (label) @14 +Culled Empty Block (label) @15 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) menu::$2 ← (byte~) menu::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) menu::$1 ← (byte~) menu::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) menu::$6 ← (byte~) menu::$4 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) menu::$5 ← (byte~) menu::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -315,6 +749,7 @@ Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 ( Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#6 (byte) keyboard_key_pressed::return#1 +Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte*) SCREEN#10 = (byte*) SCREEN#11 (byte*) SCREEN#13 Alias (byte*) SCREEN#1 = (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#5 (byte*) SCREEN#4 (byte*) SCREEN#3 (byte*) SCREEN#2 Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#7 @@ -337,20 +772,163 @@ Simple Condition (bool~) menu::$6 if((byte~) menu::$4==(byte/signed byte/word/si Simple Condition (bool~) menu::$9 if((byte~) menu::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto menu::@6 Simple Condition (bool~) pressed::$2 if((byte~) pressed::$0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto pressed::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 +Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte) KEY_DEL#0 = 0 +Constant (const byte) KEY_RETURN#0 = 1 +Constant (const byte) KEY_CRSR_RIGHT#0 = 2 +Constant (const byte) KEY_F7#0 = 3 +Constant (const byte) KEY_F1#0 = 4 +Constant (const byte) KEY_F3#0 = 5 +Constant (const byte) KEY_F5#0 = 6 +Constant (const byte) KEY_CRSR_DOWN#0 = 7 +Constant (const byte) KEY_3#0 = 8 +Constant (const byte) KEY_W#0 = 9 +Constant (const byte) KEY_A#0 = 10 +Constant (const byte) KEY_4#0 = 11 +Constant (const byte) KEY_Z#0 = 12 +Constant (const byte) KEY_S#0 = 13 Constant (const byte) KEY_E#0 = 14 +Constant (const byte) KEY_LSHIFT#0 = 15 +Constant (const byte) KEY_5#0 = 16 +Constant (const byte) KEY_R#0 = 17 +Constant (const byte) KEY_D#0 = 18 +Constant (const byte) KEY_6#0 = 19 Constant (const byte) KEY_C#0 = 20 +Constant (const byte) KEY_F#0 = 21 +Constant (const byte) KEY_T#0 = 22 +Constant (const byte) KEY_X#0 = 23 +Constant (const byte) KEY_7#0 = 24 +Constant (const byte) KEY_Y#0 = 25 +Constant (const byte) KEY_G#0 = 26 +Constant (const byte) KEY_8#0 = 27 +Constant (const byte) KEY_B#0 = 28 +Constant (const byte) KEY_H#0 = 29 +Constant (const byte) KEY_U#0 = 30 +Constant (const byte) KEY_V#0 = 31 +Constant (const byte) KEY_9#0 = 32 Constant (const byte) KEY_I#0 = 33 +Constant (const byte) KEY_J#0 = 34 +Constant (const byte) KEY_0#0 = 35 +Constant (const byte) KEY_M#0 = 36 +Constant (const byte) KEY_K#0 = 37 +Constant (const byte) KEY_O#0 = 38 +Constant (const byte) KEY_N#0 = 39 +Constant (const byte) KEY_PLUS#0 = 40 +Constant (const byte) KEY_P#0 = 41 +Constant (const byte) KEY_L#0 = 42 +Constant (const byte) KEY_MINUS#0 = 43 +Constant (const byte) KEY_DOT#0 = 44 +Constant (const byte) KEY_COLON#0 = 45 +Constant (const byte) KEY_AT#0 = 46 +Constant (const byte) KEY_COMMA#0 = 47 +Constant (const byte) KEY_POUND#0 = 48 +Constant (const byte) KEY_ASTERISK#0 = 49 +Constant (const byte) KEY_SEMICOLON#0 = 50 +Constant (const byte) KEY_HOME#0 = 51 +Constant (const byte) KEY_RSHIFT#0 = 52 +Constant (const byte) KEY_EQUALS#0 = 53 +Constant (const byte) KEY_ARROW_UP#0 = 54 +Constant (const byte) KEY_SLASH#0 = 55 +Constant (const byte) KEY_1#0 = 56 +Constant (const byte) KEY_ARROW_LEFT#0 = 57 +Constant (const byte) KEY_CTRL#0 = 58 +Constant (const byte) KEY_2#0 = 59 Constant (const byte) KEY_SPACE#0 = 60 +Constant (const byte) KEY_COMMODORE#0 = 61 +Constant (const byte) KEY_Q#0 = 62 +Constant (const byte) KEY_RUNSTOP#0 = 63 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } +Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) } +Constant (const byte) keyboard_events_size#0 = 0 +Constant (const byte) keyboard_modifiers#0 = 0 +Constant (const byte) KEY_MODIFIER_LSHIFT#0 = 1 +Constant (const byte) KEY_MODIFIER_RSHIFT#0 = 2 +Constant (const byte) KEY_MODIFIER_CTRL#0 = 4 +Constant (const byte) KEY_MODIFIER_COMMODORE#0 = 8 +Constant (const byte[8]) keyboard_scan_values#0 = { fill( 8, 0) } Constant (const byte*) SCREEN#0 = ((byte*))1024 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } +Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 Constant (const byte) keyboard_key_pressed::key#0 = KEY_C#0 Constant (const byte) keyboard_key_pressed::key#1 = KEY_I#0 Constant (const byte) keyboard_key_pressed::key#2 = KEY_E#0 @@ -360,12 +938,15 @@ if() condition always true - replacing block destination if(true) goto main::@2 if() condition always true - replacing block destination if(true) goto menu::@2 if() condition always true - replacing block destination if(true) goto pressed::@2 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 +Culled Empty Block (label) @8 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@7 -Culled Empty Block (label) @11 +Culled Empty Block (label) @12 Culled Empty Block (label) menu::@1 Culled Empty Block (label) pressed::@1 Successful SSA optimization Pass2CullEmptyBlocks @@ -379,7 +960,7 @@ Constant inlined keyboard_key_pressed::key#2 = (const byte) KEY_E#0 Constant inlined keyboard_key_pressed::key#3 = (const byte) KEY_SPACE#0 Successful SSA optimization Pass2ConstantInlining Adding NOP phi() at start of @begin -Adding NOP phi() at start of @13 +Adding NOP phi() at start of @14 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu @@ -398,7 +979,7 @@ Calls in [pressed] to keyboard_key_pressed:45 Created 1 initial phi equivalence classes Coalesced down to 1 phi equivalence classes Adding NOP phi() at start of @begin -Adding NOP phi() at start of @13 +Adding NOP phi() at start of @14 Adding NOP phi() at start of @end Adding NOP phi() at start of main::@2 Adding NOP phi() at start of menu @@ -411,14 +992,14 @@ Adding NOP phi() at start of pressed::@2 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@13 -@13: scope:[] from @begin + to:@14 +@14: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @13 +@end: scope:[] from @14 [3] phi() -main: scope:[main] from @13 +main: scope:[main] from @14 [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 to:main::@2 main::@2: scope:[main] from main main::@2 @@ -515,16 +1096,157 @@ null depth in calling loop Loop head: pressed::@2 tails: pressed::@10 blocks: pr VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B (byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT (byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME (byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER (byte) RED (byte*) SCREEN +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$2 4.0 (byte) keyboard_key_pressed::colidx @@ -548,6 +1270,8 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_matrix_read::rowid (byte) keyboard_matrix_read::rowid#0 4.0 (byte[8]) keyboard_matrix_row_bitmask +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (void()) menu() (byte~) menu::$0 202.0 @@ -626,15 +1350,15 @@ INITIAL ASM .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] -b13_from_bbegin: - jmp b13 -//SEG4 @13 -b13: +//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +b14_from_bbegin: + jmp b14 +//SEG4 @14 +b14: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @13 to @end [phi:@13->@end] -bend_from_b13: +//SEG6 [3] phi from @14 to @end [phi:@14->@end] +bend_from_b14: jmp bend //SEG7 @end bend: @@ -958,15 +1682,15 @@ ASSEMBLER BEFORE OPTIMIZATION .label SCREEN = $400 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] -b13_from_bbegin: - jmp b13 -//SEG4 @13 -b13: +//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +b14_from_bbegin: + jmp b14 +//SEG4 @14 +b14: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @13 to @end [phi:@13->@end] -bend_from_b13: +//SEG6 [3] phi from @14 to @end [phi:@14->@end] +bend_from_b14: jmp bend //SEG7 @end bend: @@ -1169,7 +1893,7 @@ pressed: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b13 +Removing instruction jmp b14 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b2 @@ -1195,8 +1919,8 @@ Replacing label b5_from_b17 with b5 Replacing label b2_from_b6 with b2 Replacing label b2_from_b10 with b2 Removing instruction bbegin: -Removing instruction b13_from_bbegin: -Removing instruction bend_from_b13: +Removing instruction b14_from_bbegin: +Removing instruction bend_from_b14: Removing instruction b2_from_main: Removing instruction b2_from_b2: Removing instruction menu_from_b2: @@ -1212,7 +1936,7 @@ Removing instruction b2_from_pressed: Removing instruction b2_from_b10: Removing instruction keyboard_key_pressed_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b13: +Removing instruction b14: Removing instruction bend: Removing instruction b16: Removing instruction b9: @@ -1228,31 +1952,172 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @13 +(label) @14 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B (byte) KEY_C (const byte) KEY_C#0 KEY_C = (byte/signed byte/word/signed word/dword/signed dword) 20 +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT (byte) KEY_E (const byte) KEY_E#0 KEY_E = (byte/signed byte/word/signed word/dword/signed dword) 14 +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME (byte) KEY_I (const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) 33 +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER (byte) RED (const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$2 reg byte a 4.0 (label) keyboard_key_pressed::@2 @@ -1281,6 +2146,8 @@ FINAL SYMBOL TABLE (byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (label) main::@2 (void()) menu() @@ -1342,11 +2209,11 @@ Score: 2851 .const KEY_SPACE = $3c .label SCREEN = $400 //SEG2 @begin -//SEG3 [1] phi from @begin to @13 [phi:@begin->@13] -//SEG4 @13 +//SEG3 [1] phi from @begin to @14 [phi:@begin->@14] +//SEG4 @14 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @13 to @end [phi:@13->@end] +//SEG6 [3] phi from @14 to @end [phi:@14->@end] //SEG7 @end //SEG8 main main: { diff --git a/src/test/ref/keyboard-glitch.sym b/src/test/ref/keyboard-glitch.sym index 0cf478075..c42abf148 100644 --- a/src/test/ref/keyboard-glitch.sym +++ b/src/test/ref/keyboard-glitch.sym @@ -1,28 +1,169 @@ -(label) @13 +(label) @14 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 +(byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B (byte) KEY_C (const byte) KEY_C#0 KEY_C = (byte/signed byte/word/signed word/dword/signed dword) 20 +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT (byte) KEY_E (const byte) KEY_E#0 KEY_E = (byte/signed byte/word/signed word/dword/signed dword) 14 +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME (byte) KEY_I (const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) 33 +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE +(byte*) RASTER (byte) RED (const byte) RED#0 RED = (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$2 reg byte a 4.0 (label) keyboard_key_pressed::@2 @@ -51,6 +192,8 @@ (byte) keyboard_matrix_read::rowid#0 reg byte x 4.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (label) main::@2 (void()) menu() diff --git a/src/test/ref/line-anim.asm b/src/test/ref/line-anim.asm index a4bd08bcf..74ce93c3c 100644 --- a/src/test/ref/line-anim.asm +++ b/src/test/ref/line-anim.asm @@ -17,6 +17,8 @@ .label BITMAP = $a000 .label SCREEN = $8800 .const DELAY = 8 + .label rem16s = 3 + .label rem16u = 9 jsr main main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 @@ -38,7 +40,11 @@ main: { jsr bitmap_init jsr bitmap_clear jsr screen_fill - lda #0 + lda #<0 + sta rem16s + sta rem16s+1 + sta rem16u + sta rem16u+1 sta i b1: jsr point_init @@ -66,10 +72,10 @@ main: { jmp b5 } bitmap_plot: { - .label _1 = 7 - .label x = 3 - .label plotter = 5 - .label _3 = 5 + .label _1 = $b + .label x = 5 + .label plotter = 7 + .label _3 = 7 lda bitmap_plot_yhi,y sta _3+1 lda bitmap_plot_ylo,y @@ -96,20 +102,20 @@ bitmap_plot: { rts } point_init: { - .label _4 = 7 - .label _5 = 3 - .label _16 = 3 - .label _17 = 3 - .label _18 = 3 + .label _4 = $e + .label _5 = 5 + .label _16 = 5 + .label _17 = 5 + .label _18 = 5 .label point_idx = 2 - .label point_idx1 = $b - .label y_diff = 7 - .label abs16s1__2 = 3 - .label abs16s1_return = 3 - .label abs16s2__2 = 5 - .label abs16s2_return = 5 + .label point_idx1 = $d + .label y_diff = $e + .label abs16s1__2 = 5 + .label abs16s1_return = 5 + .label abs16s2__2 = 7 + .label abs16s2_return = 7 .label x_stepf = 5 - .label x_diff = 9 + .label x_diff = $b lda point_idx lsr sta point_idx1 @@ -210,6 +216,10 @@ point_init: { lda #$10 sta x_add,y b4: + lda y_diff + sta divr16s.rem + lda y_diff+1 + sta divr16s.rem+1 jsr divr16s lda x_stepf+1 lsr @@ -249,15 +259,15 @@ point_init: { } divr16s: { .const dividend = 0 - .label _7 = 7 - .label _11 = 9 + .label _7 = 9 + .label _11 = $b .label resultu = 5 .label return = 5 - .label divisor = 9 - .label rem = 7 + .label divisor = $b + .label rem = 9 .label dividendu = 3 - .label divisoru = 9 - .label remu = 7 + .label divisoru = $b + .label remu = 9 lda rem+1 bmi b1 lda #(word) point_init::abs16s2_return#2) goto point_init::@1 to:point_init::@2 point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 - [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 - [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 - [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) - [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 - [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 + [47] (signed word) rem16s#13 ← phi( point_init::@10/(signed word) rem16s#15 point_init::@11/(signed word) rem16s#3 ) + [47] (word) rem16u#18 ← phi( point_init::@10/(word) rem16u#21 point_init::@11/(word) divr16u::rem#10 ) + [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 + [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 + [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) + [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 + [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 to:point_init::@return point_init::@return: scope:[point_init] from point_init::@2 - [53] return + [54] return to:@return point_init::@1: scope:[point_init] from point_init::@10 - [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 + [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@1 - [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 + [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 to:point_init::@4 point_init::@4: scope:[point_init] from point_init::@3 point_init::@7 - [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - [58] call divr16s - [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + [59] call divr16s + [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@11 point_init::@11: scope:[point_init] from point_init::@4 - [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 - [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 + [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 + [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 to:point_init::@2 point_init::@3: scope:[point_init] from point_init::@1 - [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 + [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 to:point_init::@4 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 - [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 - [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 + [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 to:point_init::abs16s2_@return point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 - [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 - [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 + [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 to:point_init::abs16s1_@return divr16s: scope:[divr16s] from point_init::@4 - [69] phi() + [70] phi() to:divr16s::@16 divr16s::@16: scope:[divr16s] from divr16s - [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 + [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 to:divr16s::@17 divr16s::@17: scope:[divr16s] from divr16s::@16 - [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@17 - [72] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 ) - [72] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 ) - [72] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 + [73] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 ) + [73] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 ) + [73] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 to:divr16s::@18 divr16s::@18: scope:[divr16s] from divr16s::@2 - [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@18 divr16s::@3 - [75] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 ) - [75] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 ) - [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - [79] call divr16u - [80] (word) divr16u::return#2 ← (word) divr16u::return#0 + [76] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 ) + [76] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 ) + [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + [80] call divr16u + [81] (word) divr16u::return#2 ← (word) divr16u::return#0 to:divr16s::@15 divr16s::@15: scope:[divr16s] from divr16s::@4 - [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 + [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 to:divr16s::@11 divr16s::@11: scope:[divr16s] from divr16s::@15 - [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 + [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@19 - [84] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 ) - [85] return + [86] (signed word) rem16s#3 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@19/(signed word~) rem16s#57 ) + [86] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 ) + [87] return to:@return divr16s::@19: scope:[divr16s] from divr16s::@15 - [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 - [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 + [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s::@16 - [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 - [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 + [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 + [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 to:divr16s::@2 divr16u: scope:[divr16u] from divr16s::@4 - [92] phi() + [95] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [93] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [93] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [93] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) - [93] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) - [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [96] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [96] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [96] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) + [96] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#10 ) + [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [99] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 + [102] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 + [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [105] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [105] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [108] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [108] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [108] return + [111] return to:@return screen_fill: scope:[screen_fill] from main::@18 - [109] phi() + [112] phi() to:screen_fill::@1 screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 - [110] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) - [110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) + [113] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) + [113] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) to:screen_fill::@2 screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 - [111] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) - [111] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) - [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 - [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 - [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 - [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 + [114] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) + [114] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) + [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 + [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 + [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 + [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 to:screen_fill::@3 screen_fill::@3: scope:[screen_fill] from screen_fill::@2 - [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 - [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 + [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 + [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 to:screen_fill::@return screen_fill::@return: scope:[screen_fill] from screen_fill::@3 - [118] return + [121] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@17 - [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) - [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) + [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [121] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [121] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [124] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [124] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [122] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [122] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [125] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [125] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [129] return + [132] return to:@return bitmap_init: scope:[bitmap_init] from main::@16 - [130] phi() + [133] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [134] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [134] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [135] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [138] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [138] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) - [138] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [141] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) + [141] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [151] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [151] return + [154] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [152] phi() + [155] phi() to:bitmap_init::@2 diff --git a/src/test/ref/line-anim.log b/src/test/ref/line-anim.log index 2ff2740c3..1e4e39578 100644 --- a/src/test/ref/line-anim.log +++ b/src/test/ref/line-anim.log @@ -9,21 +9,93 @@ CONTROL FLOW GRAPH SSA (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 - to:@11 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @4 + (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@9 divr16u: scope:[divr16u] from divr16s::@4 (word) divr16u::divisor#5 ← phi( divr16s::@4/(word) divr16u::divisor#0 ) (word) divr16u::dividend#4 ← phi( divr16s::@4/(word) divr16u::dividend#1 ) - (word) divr16u::rem#8 ← phi( divr16s::@4/(word) divr16u::rem#3 ) + (word) divr16u::rem#9 ← phi( divr16s::@4/(word) divr16u::rem#3 ) (word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:divr16u::@1 @@ -32,7 +104,7 @@ divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 (word) divr16u::divisor#3 ← phi( divr16u/(word) divr16u::divisor#5 divr16u::@3/(word) divr16u::divisor#6 ) (word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 ) (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#4 divr16u::@3/(word) divr16u::dividend#5 ) - (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#8 divr16u::@3/(word) divr16u::rem#9 ) + (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#9 divr16u::@3/(word) divr16u::rem#10 ) (word~) divr16u::$0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 (word) divr16u::rem#0 ← (word~) divr16u::$0 (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 @@ -68,7 +140,7 @@ divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 (word) divr16u::divisor#6 ← phi( divr16u::@2/(word) divr16u::divisor#1 divr16u::@5/(word) divr16u::divisor#2 ) (word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) (word) divr16u::dividend#5 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#7 ) - (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) (byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 ) (byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,15) (bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,15) @@ -86,14 +158,27 @@ divr16u::@5: scope:[divr16u] from divr16u::@2 to:divr16u::@3 divr16u::@6: scope:[divr16u] from divr16u::@3 (word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 ) + (word) divr16u::rem#8 ← phi( divr16u::@3/(word) divr16u::rem#10 ) + (word) rem16u#1 ← (word) divr16u::rem#8 (word) divr16u::return#0 ← (word) divr16u::quotient#5 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 + (word) rem16u#10 ← phi( divr16u::@6/(word) rem16u#1 ) (word) divr16u::return#3 ← phi( divr16u::@6/(word) divr16u::return#0 ) (word) divr16u::return#1 ← (word) divr16u::return#3 + (word) rem16u#2 ← (word) rem16u#10 return to:@return +@9: scope:[] from @6 + (word) rem16u#49 ← phi( @6/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@10 +@10: scope:[] from @9 + (word) rem16u#43 ← phi( @9/(word) rem16u#49 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@12 divr16s: scope:[divr16s] from point_init::@4 + (word) rem16u#50 ← phi( point_init::@4/(word) rem16u#23 ) (signed word) divr16s::divisor#6 ← phi( point_init::@4/(signed word) divr16s::divisor#0 ) (signed word) divr16s::rem#1 ← phi( point_init::@4/(signed word) divr16s::rem#0 ) (signed word) divr16s::dividend#1 ← phi( point_init::@4/(signed word) divr16s::dividend#0 ) @@ -106,6 +191,7 @@ divr16s: scope:[divr16s] from point_init::@4 if((bool~) divr16s::$2) goto divr16s::@1 to:divr16s::@7 divr16s::@1: scope:[divr16s] from divr16s + (word) rem16u#41 ← phi( divr16s/(word) rem16u#50 ) (signed word) divr16s::divisor#4 ← phi( divr16s/(signed word) divr16s::divisor#6 ) (signed word) divr16s::rem#2 ← phi( divr16s/(signed word) divr16s::rem#1 ) (signed word) divr16s::dividend#2 ← phi( divr16s/(signed word) divr16s::dividend#1 ) @@ -118,6 +204,7 @@ divr16s::@1: scope:[divr16s] from divr16s (byte) divr16s::neg#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16s::@2 divr16s::@7: scope:[divr16s] from divr16s + (word) rem16u#42 ← phi( divr16s/(word) rem16u#50 ) (byte) divr16s::neg#7 ← phi( divr16s/(byte) divr16s::neg#0 ) (signed word) divr16s::divisor#5 ← phi( divr16s/(signed word) divr16s::divisor#6 ) (signed word) divr16s::rem#3 ← phi( divr16s/(signed word) divr16s::rem#1 ) @@ -128,6 +215,7 @@ divr16s::@7: scope:[divr16s] from divr16s (word) divr16s::remu#2 ← (word~) divr16s::$4 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7 + (word) rem16u#35 ← phi( divr16s::@1/(word) rem16u#41 divr16s::@7/(word) rem16u#42 ) (word) divr16s::remu#6 ← phi( divr16s::@1/(word) divr16s::remu#1 divr16s::@7/(word) divr16s::remu#2 ) (word) divr16s::dividendu#6 ← phi( divr16s::@1/(word) divr16s::dividendu#1 divr16s::@7/(word) divr16s::dividendu#2 ) (byte) divr16s::neg#5 ← phi( divr16s::@1/(byte) divr16s::neg#1 divr16s::@7/(byte) divr16s::neg#7 ) @@ -137,6 +225,7 @@ divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7 if((bool~) divr16s::$9) goto divr16s::@3 to:divr16s::@9 divr16s::@3: scope:[divr16s] from divr16s::@2 + (word) rem16u#26 ← phi( divr16s::@2/(word) rem16u#35 ) (word) divr16s::remu#4 ← phi( divr16s::@2/(word) divr16s::remu#6 ) (word) divr16s::dividendu#4 ← phi( divr16s::@2/(word) divr16s::dividendu#6 ) (byte) divr16s::neg#3 ← phi( divr16s::@2/(byte) divr16s::neg#5 ) @@ -149,6 +238,7 @@ divr16s::@3: scope:[divr16s] from divr16s::@2 to:divr16s::@4 divr16s::@9: scope:[divr16s] from divr16s::@2 (byte) divr16s::neg#8 ← phi( divr16s::@2/(byte) divr16s::neg#5 ) + (word) rem16u#27 ← phi( divr16s::@2/(word) rem16u#35 ) (word) divr16s::remu#5 ← phi( divr16s::@2/(word) divr16s::remu#6 ) (word) divr16s::dividendu#5 ← phi( divr16s::@2/(word) divr16s::dividendu#6 ) (signed word) divr16s::divisor#3 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 ) @@ -157,6 +247,7 @@ divr16s::@9: scope:[divr16s] from divr16s::@2 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9 (byte) divr16s::neg#6 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#8 ) + (word) rem16u#20 ← phi( divr16s::@3/(word) rem16u#26 divr16s::@9/(word) rem16u#27 ) (word) divr16s::remu#3 ← phi( divr16s::@3/(word) divr16s::remu#4 divr16s::@9/(word) divr16s::remu#5 ) (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#1 divr16s::@9/(word) divr16s::divisoru#2 ) (word) divr16s::dividendu#3 ← phi( divr16s::@3/(word) divr16s::dividendu#4 divr16s::@9/(word) divr16s::dividendu#5 ) @@ -168,31 +259,47 @@ divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9 to:divr16s::@15 divr16s::@15: scope:[divr16s] from divr16s::@4 (byte) divr16s::neg#4 ← phi( divr16s::@4/(byte) divr16s::neg#6 ) + (word) rem16u#11 ← phi( divr16s::@4/(word) rem16u#2 ) (word) divr16u::return#4 ← phi( divr16s::@4/(word) divr16u::return#2 ) (word~) divr16s::$14 ← (word) divr16u::return#4 + (word) rem16u#3 ← (word) rem16u#11 (word) divr16s::resultu#0 ← (word~) divr16s::$14 (bool~) divr16s::$15 ← (byte) divr16s::neg#4 == (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) divr16s::$15) goto divr16s::@5 to:divr16s::@11 divr16s::@5: scope:[divr16s] from divr16s::@15 (word) divr16s::resultu#1 ← phi( divr16s::@15/(word) divr16s::resultu#0 ) + (word) rem16u#12 ← phi( divr16s::@15/(word) rem16u#3 ) + (signed word~) divr16s::$20 ← ((signed word)) (word) rem16u#12 + (signed word) rem16s#1 ← (signed word~) divr16s::$20 (signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu#1 (signed word) divr16s::return#0 ← (signed word~) divr16s::$21 to:divr16s::@return divr16s::@11: scope:[divr16s] from divr16s::@15 (word) divr16s::resultu#2 ← phi( divr16s::@15/(word) divr16s::resultu#0 ) + (word) rem16u#13 ← phi( divr16s::@15/(word) rem16u#3 ) + (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u#13 + (signed word~) divr16s::$17 ← - (signed word~) divr16s::$16 + (signed word) rem16s#2 ← (signed word~) divr16s::$17 (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#2 (signed word~) divr16s::$19 ← - (signed word~) divr16s::$18 (signed word) divr16s::return#1 ← (signed word~) divr16s::$19 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@5 + (signed word) rem16s#9 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@5/(signed word) rem16s#1 ) + (word) rem16u#14 ← phi( divr16s::@11/(word) rem16u#13 divr16s::@5/(word) rem16u#12 ) (signed word) divr16s::return#4 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@5/(signed word) divr16s::return#0 ) (signed word) divr16s::return#2 ← (signed word) divr16s::return#4 + (word) rem16u#4 ← (word) rem16u#14 + (signed word) rem16s#3 ← (signed word) rem16s#9 return to:@return -@11: scope:[] from @begin +@12: scope:[] from @10 + (signed word) rem16s#31 ← phi( @10/(signed word) rem16s#0 ) + (word) rem16u#40 ← phi( @10/(word) rem16u#43 ) (byte*) BITMAP#0 ← ((byte*)) (word/dword/signed dword) 40960 (byte*) SCREEN#0 ← ((byte*)) (word/dword/signed dword) 34816 + (byte) SIZE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) DELAY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (word[4]) x_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 } (byte[4]) y_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } @@ -203,10 +310,13 @@ divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@5 (signed byte[4]) x_add#0 ← { fill( 4, 0) } (signed byte[4]) y_add#0 ← { fill( 4, 0) } (byte[4]) delay#0 ← { fill( 4, 0) } - to:@15 -main: scope:[main] from @18 - (byte*) BITMAP#9 ← phi( @18/(byte*) BITMAP#10 ) - (byte*) SCREEN#1 ← phi( @18/(byte*) SCREEN#4 ) + (byte[4]) frame#0 ← { fill( 4, 0) } + to:@16 +main: scope:[main] from @19 + (signed word) rem16s#52 ← phi( @19/(signed word) rem16s#19 ) + (word) rem16u#66 ← phi( @19/(word) rem16u#25 ) + (byte*) BITMAP#9 ← phi( @19/(byte*) BITMAP#10 ) + (byte*) SCREEN#1 ← phi( @19/(byte*) SCREEN#4 ) asm { sei } *((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0 *((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0 @@ -217,6 +327,8 @@ main: scope:[main] from @18 (byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) SCREEN#1 to:main::vicSelectGfxBank1 main::vicSelectGfxBank1: scope:[main] from main + (signed word) rem16s#51 ← phi( main/(signed word) rem16s#52 ) + (word) rem16u#65 ← phi( main/(word) rem16u#66 ) (byte*) BITMAP#8 ← phi( main/(byte*) BITMAP#9 ) (byte*) SCREEN#12 ← phi( main/(byte*) SCREEN#1 ) (byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 ) @@ -224,6 +336,8 @@ main::vicSelectGfxBank1: scope:[main] from main (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1 to:main::vicSelectGfxBank1_toDd001 main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 + (signed word) rem16s#50 ← phi( main::vicSelectGfxBank1/(signed word) rem16s#51 ) + (word) rem16u#64 ← phi( main::vicSelectGfxBank1/(word) rem16u#65 ) (byte*) BITMAP#7 ← phi( main::vicSelectGfxBank1/(byte*) BITMAP#8 ) (byte*) SCREEN#10 ← phi( main::vicSelectGfxBank1/(byte*) SCREEN#12 ) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ) @@ -234,12 +348,16 @@ main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1 (byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 to:main::vicSelectGfxBank1_toDd001_@return main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001 + (signed word) rem16s#48 ← phi( main::vicSelectGfxBank1_toDd001/(signed word) rem16s#50 ) + (word) rem16u#62 ← phi( main::vicSelectGfxBank1_toDd001/(word) rem16u#64 ) (byte*) BITMAP#5 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) BITMAP#7 ) (byte*) SCREEN#7 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SCREEN#10 ) (byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 ) (byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2 to:main::vicSelectGfxBank1_@1 main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return + (signed word) rem16s#46 ← phi( main::vicSelectGfxBank1_toDd001_@return/(signed word) rem16s#48 ) + (word) rem16u#60 ← phi( main::vicSelectGfxBank1_toDd001_@return/(word) rem16u#62 ) (byte*) BITMAP#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) BITMAP#5 ) (byte*) SCREEN#5 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SCREEN#7 ) (byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 ) @@ -247,12 +365,16 @@ main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@ *((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0 to:main::@15 main::@15: scope:[main] from main::vicSelectGfxBank1_@1 + (signed word) rem16s#43 ← phi( main::vicSelectGfxBank1_@1/(signed word) rem16s#46 ) + (word) rem16u#57 ← phi( main::vicSelectGfxBank1_@1/(word) rem16u#60 ) (byte*) BITMAP#1 ← phi( main::vicSelectGfxBank1_@1/(byte*) BITMAP#3 ) (byte*) SCREEN#2 ← phi( main::vicSelectGfxBank1_@1/(byte*) SCREEN#5 ) (byte*) main::toD0181_screen#0 ← (byte*) SCREEN#2 (byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#1 to:main::toD0181 main::toD0181: scope:[main] from main::@15 + (signed word) rem16s#41 ← phi( main::@15/(signed word) rem16s#43 ) + (word) rem16u#55 ← phi( main::@15/(word) rem16u#57 ) (byte*) SCREEN#13 ← phi( main::@15/(byte*) SCREEN#2 ) (byte*) BITMAP#6 ← phi( main::@15/(byte*) BITMAP#1 ) (byte*) main::toD0181_gfx#1 ← phi( main::@15/(byte*) main::toD0181_gfx#0 ) @@ -269,12 +391,16 @@ main::toD0181: scope:[main] from main::@15 (byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0 to:main::toD0181_@return main::toD0181_@return: scope:[main] from main::toD0181 + (signed word) rem16s#39 ← phi( main::toD0181/(signed word) rem16s#41 ) + (word) rem16u#53 ← phi( main::toD0181/(word) rem16u#55 ) (byte*) SCREEN#11 ← phi( main::toD0181/(byte*) SCREEN#13 ) (byte*) BITMAP#4 ← phi( main::toD0181/(byte*) BITMAP#6 ) (byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 ) (byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2 to:main::@16 main::@16: scope:[main] from main::toD0181_@return + (signed word) rem16s#37 ← phi( main::toD0181_@return/(signed word) rem16s#39 ) + (word) rem16u#51 ← phi( main::toD0181_@return/(word) rem16u#53 ) (byte*) SCREEN#8 ← phi( main::toD0181_@return/(byte*) SCREEN#11 ) (byte*) BITMAP#2 ← phi( main::toD0181_@return/(byte*) BITMAP#4 ) (byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 ) @@ -284,54 +410,84 @@ main::@16: scope:[main] from main::toD0181_@return call bitmap_init to:main::@17 main::@17: scope:[main] from main::@16 + (signed word) rem16s#32 ← phi( main::@16/(signed word) rem16s#37 ) + (word) rem16u#44 ← phi( main::@16/(word) rem16u#51 ) (byte*) SCREEN#6 ← phi( main::@16/(byte*) SCREEN#8 ) call bitmap_clear to:main::@18 main::@18: scope:[main] from main::@17 + (signed word) rem16s#27 ← phi( main::@17/(signed word) rem16s#32 ) + (word) rem16u#36 ← phi( main::@17/(word) rem16u#44 ) (byte*) SCREEN#3 ← phi( main::@17/(byte*) SCREEN#6 ) (byte*) screen_fill::screen#0 ← (byte*) SCREEN#3 (byte) screen_fill::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 call screen_fill to:main::@19 main::@19: scope:[main] from main::@18 + (signed word) rem16s#20 ← phi( main::@18/(signed word) rem16s#27 ) + (word) rem16u#28 ← phi( main::@18/(word) rem16u#36 ) (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 main::@1: scope:[main] from main::@19 main::@21 + (signed word) rem16s#15 ← phi( main::@19/(signed word) rem16s#20 main::@21/(signed word) rem16s#21 ) + (word) rem16u#21 ← phi( main::@19/(word) rem16u#28 main::@21/(word) rem16u#29 ) (byte) main::i#2 ← phi( main::@19/(byte) main::i#0 main::@21/(byte) main::i#1 ) (byte) point_init::point_idx#0 ← (byte) main::i#2 call point_init to:main::@20 main::@20: scope:[main] from main::@1 (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) + (signed word) rem16s#10 ← phi( main::@1/(signed word) rem16s#7 ) + (word) rem16u#15 ← phi( main::@1/(word) rem16u#8 ) + (word) rem16u#5 ← (word) rem16u#15 + (signed word) rem16s#4 ← (signed word) rem16s#10 (byte~) main::$9 ← (byte) main::i#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 (word) bitmap_plot::x#0 ← *((word[4]) x_start#0 + (byte) main::i#3) (byte) bitmap_plot::y#0 ← *((byte[4]) y_start#0 + (byte~) main::$9) call bitmap_plot to:main::@21 main::@21: scope:[main] from main::@20 + (signed word) rem16s#21 ← phi( main::@20/(signed word) rem16s#4 ) + (word) rem16u#29 ← phi( main::@20/(word) rem16u#5 ) (byte) main::i#4 ← phi( main::@20/(byte) main::i#3 ) (byte) main::i#1 ← (byte) main::i#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 (bool~) main::$11 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8 if((bool~) main::$11) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@21 main::@7 + (signed word) rem16s#16 ← phi( main::@21/(signed word) rem16s#21 main::@7/(signed word) rem16s#22 ) + (word) rem16u#22 ← phi( main::@21/(word) rem16u#29 main::@7/(word) rem16u#30 ) if(true) goto main::@3 to:main::@return main::@3: scope:[main] from main::@2 + (signed word) rem16s#33 ← phi( main::@2/(signed word) rem16s#16 ) + (word) rem16u#45 ← phi( main::@2/(word) rem16u#22 ) to:main::@5 main::@5: scope:[main] from main::@3 main::@6 + (signed word) rem16s#28 ← phi( main::@3/(signed word) rem16s#33 main::@6/(signed word) rem16s#34 ) + (word) rem16u#37 ← phi( main::@3/(word) rem16u#45 main::@6/(word) rem16u#46 ) (bool~) main::$12 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255 if((bool~) main::$12) goto main::@6 to:main::@7 main::@6: scope:[main] from main::@5 + (signed word) rem16s#34 ← phi( main::@5/(signed word) rem16s#28 ) + (word) rem16u#46 ← phi( main::@5/(word) rem16u#37 ) to:main::@5 main::@7: scope:[main] from main::@5 + (signed word) rem16s#22 ← phi( main::@5/(signed word) rem16s#28 ) + (word) rem16u#30 ← phi( main::@5/(word) rem16u#37 ) *((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0) to:main::@2 main::@return: scope:[main] from main::@2 + (signed word) rem16s#11 ← phi( main::@2/(signed word) rem16s#16 ) + (word) rem16u#16 ← phi( main::@2/(word) rem16u#22 ) + (word) rem16u#6 ← (word) rem16u#16 + (signed word) rem16s#5 ← (signed word) rem16s#11 return to:@return point_init: scope:[point_init] from main::@1 + (signed word) rem16s#49 ← phi( main::@1/(signed word) rem16s#15 ) + (word) rem16u#63 ← phi( main::@1/(word) rem16u#21 ) (byte) point_init::point_idx#1 ← phi( main::@1/(byte) point_init::point_idx#0 ) (byte~) point_init::$0 ← (byte) point_init::point_idx#1 >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) point_init::point_idx1#0 ← (byte~) point_init::$0 @@ -346,6 +502,8 @@ point_init: scope:[point_init] from main::@1 (signed word) point_init::abs16s1_w#0 ← (signed word) point_init::x_diff#0 to:point_init::abs16s1 point_init::abs16s1: scope:[point_init] from point_init + (signed word) rem16s#47 ← phi( point_init/(signed word) rem16s#49 ) + (word) rem16u#61 ← phi( point_init/(word) rem16u#63 ) (byte) point_init::point_idx1#16 ← phi( point_init/(byte) point_init::point_idx1#0 ) (byte) point_init::point_idx#17 ← phi( point_init/(byte) point_init::point_idx#1 ) (signed word) point_init::x_diff#14 ← phi( point_init/(signed word) point_init::x_diff#0 ) @@ -355,6 +513,8 @@ point_init::abs16s1: scope:[point_init] from point_init if((bool) point_init::abs16s1_$0#0) goto point_init::abs16s1_@1 to:point_init::abs16s1_@3 point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 + (signed word) rem16s#44 ← phi( point_init::abs16s1/(signed word) rem16s#47 ) + (word) rem16u#58 ← phi( point_init::abs16s1/(word) rem16u#61 ) (byte) point_init::point_idx1#14 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 ) (byte) point_init::point_idx#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) (signed word) point_init::x_diff#12 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 ) @@ -365,6 +525,8 @@ point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 (word) point_init::abs16s1_return#0 ← (word) point_init::abs16s1_$3#0 to:point_init::abs16s1_@return point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1 + (signed word) rem16s#45 ← phi( point_init::abs16s1/(signed word) rem16s#47 ) + (word) rem16u#59 ← phi( point_init::abs16s1/(word) rem16u#61 ) (byte) point_init::point_idx1#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 ) (byte) point_init::point_idx#16 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) (signed word) point_init::x_diff#13 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 ) @@ -374,6 +536,8 @@ point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1 (word) point_init::abs16s1_return#1 ← (word) point_init::abs16s1_$1#0 to:point_init::abs16s1_@return point_init::abs16s1_@return: scope:[point_init] from point_init::abs16s1_@1 point_init::abs16s1_@3 + (signed word) rem16s#42 ← phi( point_init::abs16s1_@1/(signed word) rem16s#44 point_init::abs16s1_@3/(signed word) rem16s#45 ) + (word) rem16u#56 ← phi( point_init::abs16s1_@1/(word) rem16u#58 point_init::abs16s1_@3/(word) rem16u#59 ) (byte) point_init::point_idx1#13 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx1#14 point_init::abs16s1_@3/(byte) point_init::point_idx1#15 ) (byte) point_init::point_idx#14 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx#15 point_init::abs16s1_@3/(byte) point_init::point_idx#16 ) (signed word) point_init::x_diff#11 ← phi( point_init::abs16s1_@1/(signed word) point_init::x_diff#12 point_init::abs16s1_@3/(signed word) point_init::x_diff#13 ) @@ -382,6 +546,8 @@ point_init::abs16s1_@return: scope:[point_init] from point_init::abs16s1_@1 poi (word) point_init::abs16s1_return#2 ← (word) point_init::abs16s1_return#3 to:point_init::@9 point_init::@9: scope:[point_init] from point_init::abs16s1_@return + (signed word) rem16s#40 ← phi( point_init::abs16s1_@return/(signed word) rem16s#42 ) + (word) rem16u#54 ← phi( point_init::abs16s1_@return/(word) rem16u#56 ) (byte) point_init::point_idx1#12 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx1#13 ) (byte) point_init::point_idx#13 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx#14 ) (signed word) point_init::x_diff#10 ← phi( point_init::abs16s1_@return/(signed word) point_init::x_diff#11 ) @@ -392,6 +558,8 @@ point_init::@9: scope:[point_init] from point_init::abs16s1_@return to:point_init::abs16s2 point_init::abs16s2: scope:[point_init] from point_init::@9 (signed word) point_init::y_diff#14 ← phi( point_init::@9/(signed word) point_init::y_diff#1 ) + (signed word) rem16s#38 ← phi( point_init::@9/(signed word) rem16s#40 ) + (word) rem16u#52 ← phi( point_init::@9/(word) rem16u#54 ) (byte) point_init::point_idx1#11 ← phi( point_init::@9/(byte) point_init::point_idx1#12 ) (byte) point_init::point_idx#12 ← phi( point_init::@9/(byte) point_init::point_idx#13 ) (signed word) point_init::x_diff#9 ← phi( point_init::@9/(signed word) point_init::x_diff#10 ) @@ -401,6 +569,8 @@ point_init::abs16s2: scope:[point_init] from point_init::@9 to:point_init::abs16s2_@3 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 (signed word) point_init::y_diff#12 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 ) + (signed word) rem16s#35 ← phi( point_init::abs16s2/(signed word) rem16s#38 ) + (word) rem16u#47 ← phi( point_init::abs16s2/(word) rem16u#52 ) (byte) point_init::point_idx1#8 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 ) (byte) point_init::point_idx#10 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 ) (signed word) point_init::x_diff#7 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 ) @@ -411,6 +581,8 @@ point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 to:point_init::abs16s2_@return point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2 (signed word) point_init::y_diff#13 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 ) + (signed word) rem16s#36 ← phi( point_init::abs16s2/(signed word) rem16s#38 ) + (word) rem16u#48 ← phi( point_init::abs16s2/(word) rem16u#52 ) (byte) point_init::point_idx1#9 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 ) (byte) point_init::point_idx#11 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 ) (signed word) point_init::x_diff#8 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 ) @@ -420,6 +592,8 @@ point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2 to:point_init::abs16s2_@return point_init::abs16s2_@return: scope:[point_init] from point_init::abs16s2_@1 point_init::abs16s2_@3 (signed word) point_init::y_diff#11 ← phi( point_init::abs16s2_@1/(signed word) point_init::y_diff#12 point_init::abs16s2_@3/(signed word) point_init::y_diff#13 ) + (signed word) rem16s#29 ← phi( point_init::abs16s2_@1/(signed word) rem16s#35 point_init::abs16s2_@3/(signed word) rem16s#36 ) + (word) rem16u#38 ← phi( point_init::abs16s2_@1/(word) rem16u#47 point_init::abs16s2_@3/(word) rem16u#48 ) (byte) point_init::point_idx1#5 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx1#8 point_init::abs16s2_@3/(byte) point_init::point_idx1#9 ) (byte) point_init::point_idx#8 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#10 point_init::abs16s2_@3/(byte) point_init::point_idx#11 ) (signed word) point_init::x_diff#6 ← phi( point_init::abs16s2_@1/(signed word) point_init::x_diff#7 point_init::abs16s2_@3/(signed word) point_init::x_diff#8 ) @@ -428,6 +602,8 @@ point_init::abs16s2_@return: scope:[point_init] from point_init::abs16s2_@1 poi to:point_init::@10 point_init::@10: scope:[point_init] from point_init::abs16s2_@return (signed word) point_init::y_diff#10 ← phi( point_init::abs16s2_@return/(signed word) point_init::y_diff#11 ) + (signed word) rem16s#23 ← phi( point_init::abs16s2_@return/(signed word) rem16s#29 ) + (word) rem16u#31 ← phi( point_init::abs16s2_@return/(word) rem16u#38 ) (byte) point_init::point_idx1#3 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx1#5 ) (byte) point_init::point_idx#5 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx#8 ) (signed word) point_init::x_diff#3 ← phi( point_init::abs16s2_@return/(signed word) point_init::x_diff#6 ) @@ -438,6 +614,8 @@ point_init::@10: scope:[point_init] from point_init::abs16s2_@return to:point_init::@2 point_init::@1: scope:[point_init] from point_init::@10 (byte) point_init::point_idx1#10 ← phi( point_init::@10/(byte) point_init::point_idx1#3 ) + (signed word) rem16s#30 ← phi( point_init::@10/(signed word) rem16s#23 ) + (word) rem16u#39 ← phi( point_init::@10/(word) rem16u#31 ) (signed word) point_init::y_diff#8 ← phi( point_init::@10/(signed word) point_init::y_diff#10 ) (byte) point_init::point_idx#7 ← phi( point_init::@10/(byte) point_init::point_idx#5 ) (signed word) point_init::x_diff#1 ← phi( point_init::@10/(signed word) point_init::x_diff#3 ) @@ -445,6 +623,8 @@ point_init::@1: scope:[point_init] from point_init::@10 if((bool~) point_init::$10) goto point_init::@3 to:point_init::@7 point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 + (signed word) rem16s#18 ← phi( point_init::@10/(signed word) rem16s#23 point_init::@11/(signed word) rem16s#6 ) + (word) rem16u#24 ← phi( point_init::@10/(word) rem16u#31 point_init::@11/(word) rem16u#7 ) (byte) point_init::point_idx1#1 ← phi( point_init::@10/(byte) point_init::point_idx1#3 point_init::@11/(byte) point_init::point_idx1#2 ) (byte) point_init::point_idx#2 ← phi( point_init::@10/(byte) point_init::point_idx#5 point_init::@11/(byte) point_init::point_idx#6 ) (word~) point_init::$16 ← *((word[4]) x_start#0 + (byte) point_init::point_idx#2) << (byte/signed byte/word/signed word/dword/signed dword) 4 @@ -456,6 +636,8 @@ point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 to:point_init::@return point_init::@3: scope:[point_init] from point_init::@1 (byte) point_init::point_idx1#6 ← phi( point_init::@1/(byte) point_init::point_idx1#10 ) + (signed word) rem16s#24 ← phi( point_init::@1/(signed word) rem16s#30 ) + (word) rem16u#32 ← phi( point_init::@1/(word) rem16u#39 ) (signed word) point_init::y_diff#4 ← phi( point_init::@1/(signed word) point_init::y_diff#8 ) (signed word) point_init::x_diff#4 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) (byte) point_init::point_idx#3 ← phi( point_init::@1/(byte) point_init::point_idx#7 ) @@ -464,6 +646,8 @@ point_init::@3: scope:[point_init] from point_init::@1 to:point_init::@4 point_init::@7: scope:[point_init] from point_init::@1 (byte) point_init::point_idx1#7 ← phi( point_init::@1/(byte) point_init::point_idx1#10 ) + (signed word) rem16s#25 ← phi( point_init::@1/(signed word) rem16s#30 ) + (word) rem16u#33 ← phi( point_init::@1/(word) rem16u#39 ) (signed word) point_init::y_diff#5 ← phi( point_init::@1/(signed word) point_init::y_diff#8 ) (signed word) point_init::x_diff#5 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) (byte) point_init::point_idx#4 ← phi( point_init::@1/(byte) point_init::point_idx#7 ) @@ -472,6 +656,8 @@ point_init::@7: scope:[point_init] from point_init::@1 point_init::@4: scope:[point_init] from point_init::@3 point_init::@7 (byte) point_init::point_idx#9 ← phi( point_init::@3/(byte) point_init::point_idx#3 point_init::@7/(byte) point_init::point_idx#4 ) (byte) point_init::point_idx1#4 ← phi( point_init::@3/(byte) point_init::point_idx1#6 point_init::@7/(byte) point_init::point_idx1#7 ) + (signed word) rem16s#17 ← phi( point_init::@3/(signed word) rem16s#24 point_init::@7/(signed word) rem16s#25 ) + (word) rem16u#23 ← phi( point_init::@3/(word) rem16u#32 point_init::@7/(word) rem16u#33 ) (signed word) point_init::y_diff#2 ← phi( point_init::@3/(signed word) point_init::y_diff#4 point_init::@7/(signed word) point_init::y_diff#5 ) (signed word) point_init::x_diff#2 ← phi( point_init::@3/(signed word) point_init::x_diff#4 point_init::@7/(signed word) point_init::x_diff#5 ) (signed word) divr16s::dividend#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -483,8 +669,12 @@ point_init::@4: scope:[point_init] from point_init::@3 point_init::@7 point_init::@11: scope:[point_init] from point_init::@4 (byte) point_init::point_idx#6 ← phi( point_init::@4/(byte) point_init::point_idx#9 ) (byte) point_init::point_idx1#2 ← phi( point_init::@4/(byte) point_init::point_idx1#4 ) + (signed word) rem16s#12 ← phi( point_init::@4/(signed word) rem16s#3 ) + (word) rem16u#17 ← phi( point_init::@4/(word) rem16u#4 ) (signed word) divr16s::return#5 ← phi( point_init::@4/(signed word) divr16s::return#3 ) (signed word~) point_init::$12 ← (signed word) divr16s::return#5 + (word) rem16u#7 ← (word) rem16u#17 + (signed word) rem16s#6 ← (signed word) rem16s#12 (signed word) point_init::x_stepf#0 ← (signed word~) point_init::$12 (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 @@ -492,6 +682,10 @@ point_init::@11: scope:[point_init] from point_init::@4 *((signed byte[4]) y_add#0 + (byte) point_init::point_idx1#2) ← (signed byte~) point_init::$15 to:point_init::@2 point_init::@return: scope:[point_init] from point_init::@2 + (signed word) rem16s#13 ← phi( point_init::@2/(signed word) rem16s#18 ) + (word) rem16u#18 ← phi( point_init::@2/(word) rem16u#24 ) + (word) rem16u#8 ← (word) rem16u#18 + (signed word) rem16s#7 ← (signed word) rem16s#13 return to:@return screen_fill: scope:[screen_fill] from main::@18 @@ -527,13 +721,15 @@ screen_fill::@3: scope:[screen_fill] from screen_fill::@2 screen_fill::@return: scope:[screen_fill] from screen_fill::@3 return to:@return -@15: scope:[] from @11 - (byte*) BITMAP#11 ← phi( @11/(byte*) BITMAP#0 ) - (byte*) SCREEN#9 ← phi( @11/(byte*) SCREEN#0 ) +@16: scope:[] from @12 + (byte*) BITMAP#11 ← phi( @12/(byte*) BITMAP#0 ) + (signed word) rem16s#26 ← phi( @12/(signed word) rem16s#31 ) + (word) rem16u#34 ← phi( @12/(word) rem16u#40 ) + (byte*) SCREEN#9 ← phi( @12/(byte*) SCREEN#0 ) (byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) } (byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) } - to:@18 + to:@19 bitmap_init: scope:[bitmap_init] from main::@16 (byte*) bitmap_init::bitmap#5 ← phi( main::@16/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128 @@ -641,22 +837,42 @@ bitmap_plot: scope:[bitmap_plot] from main::@20 bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return -@18: scope:[] from @15 - (byte*) BITMAP#10 ← phi( @15/(byte*) BITMAP#11 ) - (byte*) SCREEN#4 ← phi( @15/(byte*) SCREEN#9 ) +@19: scope:[] from @16 + (byte*) BITMAP#10 ← phi( @16/(byte*) BITMAP#11 ) + (signed word) rem16s#19 ← phi( @16/(signed word) rem16s#26 ) + (word) rem16u#25 ← phi( @16/(word) rem16u#34 ) + (byte*) SCREEN#4 ← phi( @16/(byte*) SCREEN#9 ) call main - to:@19 -@19: scope:[] from @18 + to:@20 +@20: scope:[] from @19 + (signed word) rem16s#14 ← phi( @19/(signed word) rem16s#5 ) + (word) rem16u#19 ← phi( @19/(word) rem16u#6 ) + (word) rem16u#9 ← (word) rem16u#19 + (signed word) rem16s#8 ← (signed word) rem16s#14 to:@end -@end: scope:[] from @19 +@end: scope:[] from @20 SYMBOL TABLE SSA -(label) @11 -(label) @15 -(label) @18 +(label) @10 +(label) @12 +(label) @16 (label) @19 +(label) @20 +(label) @4 +(label) @6 +(label) @9 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 (byte*) BITMAP (byte*) BITMAP#0 (byte*) BITMAP#1 @@ -670,28 +886,108 @@ SYMBOL TABLE SSA (byte*) BITMAP#7 (byte*) BITMAP#8 (byte*) BITMAP#9 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 (byte*) BORDERCOL (byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A#0 (byte*) CIA2_PORT_A_DDR (byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 (byte*) D011 (byte*) D011#0 +(byte*) D016 +(byte*) D016#0 (byte*) D018 (byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) DELAY (byte) DELAY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 (byte*) PROCPORT (byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 (byte*) PROCPORT_DDR (byte*) PROCPORT_DDR#0 (byte) PROCPORT_DDR_MEMORY_MASK (byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 (byte) PROCPORT_RAM_IO (byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SCREEN#1 @@ -707,12 +1003,56 @@ SYMBOL TABLE SSA (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 +(byte) SIZE +(byte) SIZE#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 (byte) VIC_BMM (byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 (byte) VIC_DEN (byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 (byte) VIC_RSEL (byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) bitmap_clear() (byte*~) bitmap_clear::$0 (bool~) bitmap_clear::$1 @@ -821,9 +1161,12 @@ SYMBOL TABLE SSA (byte/word/dword~) divr16s::$13 (word~) divr16s::$14 (bool~) divr16s::$15 +(signed word~) divr16s::$16 +(signed word~) divr16s::$17 (signed word~) divr16s::$18 (signed word~) divr16s::$19 (bool~) divr16s::$2 +(signed word~) divr16s::$20 (signed word~) divr16s::$21 (word~) divr16s::$3 (word~) divr16s::$4 @@ -960,6 +1303,7 @@ SYMBOL TABLE SSA (word) divr16u::rem (word) divr16u::rem#0 (word) divr16u::rem#1 +(word) divr16u::rem#10 (word) divr16u::rem#2 (word) divr16u::rem#3 (word) divr16u::rem#4 @@ -974,6 +1318,8 @@ SYMBOL TABLE SSA (word) divr16u::return#2 (word) divr16u::return#3 (word) divr16u::return#4 +(byte[4]) frame +(byte[4]) frame#0 (void()) main() (byte~) main::$0 (byte~) main::$1 @@ -1204,6 +1550,132 @@ SYMBOL TABLE SSA (signed word) point_init::y_diff#7 (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#9 +(signed word) rem16s +(signed word) rem16s#0 +(signed word) rem16s#1 +(signed word) rem16s#10 +(signed word) rem16s#11 +(signed word) rem16s#12 +(signed word) rem16s#13 +(signed word) rem16s#14 +(signed word) rem16s#15 +(signed word) rem16s#16 +(signed word) rem16s#17 +(signed word) rem16s#18 +(signed word) rem16s#19 +(signed word) rem16s#2 +(signed word) rem16s#20 +(signed word) rem16s#21 +(signed word) rem16s#22 +(signed word) rem16s#23 +(signed word) rem16s#24 +(signed word) rem16s#25 +(signed word) rem16s#26 +(signed word) rem16s#27 +(signed word) rem16s#28 +(signed word) rem16s#29 +(signed word) rem16s#3 +(signed word) rem16s#30 +(signed word) rem16s#31 +(signed word) rem16s#32 +(signed word) rem16s#33 +(signed word) rem16s#34 +(signed word) rem16s#35 +(signed word) rem16s#36 +(signed word) rem16s#37 +(signed word) rem16s#38 +(signed word) rem16s#39 +(signed word) rem16s#4 +(signed word) rem16s#40 +(signed word) rem16s#41 +(signed word) rem16s#42 +(signed word) rem16s#43 +(signed word) rem16s#44 +(signed word) rem16s#45 +(signed word) rem16s#46 +(signed word) rem16s#47 +(signed word) rem16s#48 +(signed word) rem16s#49 +(signed word) rem16s#5 +(signed word) rem16s#50 +(signed word) rem16s#51 +(signed word) rem16s#52 +(signed word) rem16s#6 +(signed word) rem16s#7 +(signed word) rem16s#8 +(signed word) rem16s#9 +(word) rem16u +(word) rem16u#0 +(word) rem16u#1 +(word) rem16u#10 +(word) rem16u#11 +(word) rem16u#12 +(word) rem16u#13 +(word) rem16u#14 +(word) rem16u#15 +(word) rem16u#16 +(word) rem16u#17 +(word) rem16u#18 +(word) rem16u#19 +(word) rem16u#2 +(word) rem16u#20 +(word) rem16u#21 +(word) rem16u#22 +(word) rem16u#23 +(word) rem16u#24 +(word) rem16u#25 +(word) rem16u#26 +(word) rem16u#27 +(word) rem16u#28 +(word) rem16u#29 +(word) rem16u#3 +(word) rem16u#30 +(word) rem16u#31 +(word) rem16u#32 +(word) rem16u#33 +(word) rem16u#34 +(word) rem16u#35 +(word) rem16u#36 +(word) rem16u#37 +(word) rem16u#38 +(word) rem16u#39 +(word) rem16u#4 +(word) rem16u#40 +(word) rem16u#41 +(word) rem16u#42 +(word) rem16u#43 +(word) rem16u#44 +(word) rem16u#45 +(word) rem16u#46 +(word) rem16u#47 +(word) rem16u#48 +(word) rem16u#49 +(word) rem16u#5 +(word) rem16u#50 +(word) rem16u#51 +(word) rem16u#52 +(word) rem16u#53 +(word) rem16u#54 +(word) rem16u#55 +(word) rem16u#56 +(word) rem16u#57 +(word) rem16u#58 +(word) rem16u#59 +(word) rem16u#6 +(word) rem16u#60 +(word) rem16u#61 +(word) rem16u#62 +(word) rem16u#63 +(word) rem16u#64 +(word) rem16u#65 +(word) rem16u#66 +(word) rem16u#7 +(word) rem16u#8 +(word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) (bool~) screen_fill::$0 (bool~) screen_fill::$1 @@ -1251,10 +1723,6 @@ SYMBOL TABLE SSA (byte[4]) y_start (byte[4]) y_start#0 -Culled Empty Block (label) main::@3 -Culled Empty Block (label) main::@6 -Culled Empty Block (label) @19 -Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1 Inversing boolean not (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1272,10 +1740,14 @@ Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 Alias (word) divr16u::rem#2 = (word~) divr16u::$10 +Alias (word) divr16u::rem#10 = (word) divr16u::rem#8 Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 +Alias (word) rem16u#1 = (word) rem16u#10 (word) rem16u#2 +Alias (word) rem16u#0 = (word) rem16u#49 (word) rem16u#43 (word) rem16u#40 (word) rem16u#34 (word) rem16u#25 Alias (signed word) divr16s::dividend#1 = (signed word) divr16s::dividend#2 (signed word) divr16s::dividend#3 Alias (signed word) divr16s::rem#1 = (signed word) divr16s::rem#2 (signed word) divr16s::rem#3 Alias (signed word) divr16s::divisor#4 = (signed word) divr16s::divisor#6 (signed word) divr16s::divisor#5 +Alias (word) rem16u#41 = (word) rem16u#50 (word) rem16u#42 Alias (word) divr16s::dividendu#1 = (word~) divr16s::$6 Alias (word) divr16s::remu#1 = (word~) divr16s::$8 Alias (byte) divr16s::neg#0 = (byte) divr16s::neg#7 @@ -1285,27 +1757,44 @@ Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#2 (signe Alias (byte) divr16s::neg#3 = (byte) divr16s::neg#5 (byte) divr16s::neg#8 Alias (word) divr16s::dividendu#4 = (word) divr16s::dividendu#6 (word) divr16s::dividendu#5 Alias (word) divr16s::remu#4 = (word) divr16s::remu#6 (word) divr16s::remu#5 +Alias (word) rem16u#26 = (word) rem16u#35 (word) rem16u#27 Alias (word) divr16s::divisoru#1 = (word~) divr16s::$12 Alias (byte) divr16s::neg#2 = (byte/word/dword~) divr16s::$13 Alias (word) divr16s::divisoru#2 = (word~) divr16s::$10 Alias (word) divr16u::return#2 = (word) divr16u::return#4 Alias (byte) divr16s::neg#4 = (byte) divr16s::neg#6 +Alias (word) rem16u#11 = (word) rem16u#3 (word) rem16u#12 (word) rem16u#13 Alias (word) divr16s::resultu#0 = (word~) divr16s::$14 (word) divr16s::resultu#1 (word) divr16s::resultu#2 +Alias (signed word) rem16s#1 = (signed word~) divr16s::$20 Alias (signed word) divr16s::return#0 = (signed word~) divr16s::$21 +Alias (signed word) rem16s#2 = (signed word~) divr16s::$17 Alias (signed word) divr16s::return#1 = (signed word~) divr16s::$19 Alias (signed word) divr16s::return#2 = (signed word) divr16s::return#4 +Alias (word) rem16u#14 = (word) rem16u#4 +Alias (signed word) rem16s#3 = (signed word) rem16s#9 +Alias (signed word) rem16s#0 = (signed word) rem16s#31 (signed word) rem16s#26 (signed word) rem16s#19 Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1 Alias (byte*) SCREEN#1 = (byte*) SCREEN#12 (byte*) SCREEN#10 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#2 (byte*) SCREEN#13 (byte*) SCREEN#11 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#3 Alias (byte*) BITMAP#1 = (byte*) BITMAP#8 (byte*) BITMAP#9 (byte*) BITMAP#7 (byte*) BITMAP#5 (byte*) BITMAP#3 (byte*) BITMAP#6 (byte*) BITMAP#4 (byte*) BITMAP#2 +Alias (word) rem16u#28 = (word) rem16u#65 (word) rem16u#66 (word) rem16u#64 (word) rem16u#62 (word) rem16u#60 (word) rem16u#57 (word) rem16u#55 (word) rem16u#53 (word) rem16u#51 (word) rem16u#44 (word) rem16u#36 +Alias (signed word) rem16s#20 = (signed word) rem16s#51 (signed word) rem16s#52 (signed word) rem16s#50 (signed word) rem16s#48 (signed word) rem16s#46 (signed word) rem16s#43 (signed word) rem16s#41 (signed word) rem16s#39 (signed word) rem16s#37 (signed word) rem16s#32 (signed word) rem16s#27 Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0 Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1 Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 +Alias (word) rem16u#15 = (word) rem16u#5 (word) rem16u#29 +Alias (signed word) rem16s#10 = (signed word) rem16s#4 (signed word) rem16s#21 +Alias (word) rem16u#16 = (word) rem16u#45 (word) rem16u#22 (word) rem16u#6 +Alias (signed word) rem16s#11 = (signed word) rem16s#33 (signed word) rem16s#16 (signed word) rem16s#5 +Alias (word) rem16u#30 = (word) rem16u#46 (word) rem16u#37 +Alias (signed word) rem16s#22 = (signed word) rem16s#34 (signed word) rem16s#28 Alias (byte) point_init::point_idx1#0 = (byte~) point_init::$0 (byte) point_init::point_idx1#16 (byte) point_init::point_idx1#14 (byte) point_init::point_idx1#15 Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$3 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#14 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#12 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#13 Alias (signed word) point_init::y_diff#0 = (signed word~) point_init::$6 (signed word) point_init::y_diff#9 (signed word) point_init::y_diff#6 (signed word) point_init::y_diff#7 Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#17 (byte) point_init::point_idx#15 (byte) point_init::point_idx#16 +Alias (word) rem16u#58 = (word) rem16u#61 (word) rem16u#63 (word) rem16u#59 +Alias (signed word) rem16s#44 = (signed word) rem16s#47 (signed word) rem16s#49 (signed word) rem16s#45 Alias (word) point_init::abs16s1_return#0 = (word) point_init::abs16s1_$3#0 Alias (word) point_init::abs16s1_return#1 = (word) point_init::abs16s1_$1#0 Alias (word) point_init::abs16s1_return#2 = (word) point_init::abs16s1_return#3 (word) point_init::abs16s1_return#4 (word~) point_init::$7 @@ -1313,17 +1802,25 @@ Alias (signed word) point_init::y_diff#1 = (signed word) point_init::y_diff#3 (s Alias (signed word) point_init::x_diff#10 = (signed word) point_init::x_diff#11 (signed word) point_init::x_diff#9 (signed word) point_init::x_diff#7 (signed word) point_init::x_diff#8 Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#13 (byte) point_init::point_idx#14 (byte) point_init::point_idx#12 (byte) point_init::point_idx#11 Alias (byte) point_init::point_idx1#11 = (byte) point_init::point_idx1#12 (byte) point_init::point_idx1#13 (byte) point_init::point_idx1#8 (byte) point_init::point_idx1#9 +Alias (word) rem16u#47 = (word) rem16u#54 (word) rem16u#56 (word) rem16u#52 (word) rem16u#48 +Alias (signed word) rem16s#35 = (signed word) rem16s#40 (signed word) rem16s#42 (signed word) rem16s#38 (signed word) rem16s#36 Alias (word) point_init::abs16s2_return#0 = (word) point_init::abs16s2_$3#0 Alias (word) point_init::abs16s2_return#1 = (word) point_init::abs16s2_$1#0 Alias (word) point_init::abs16s2_return#2 = (word) point_init::abs16s2_return#3 (word) point_init::abs16s2_return#4 (word~) point_init::$8 Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#3 (signed word) point_init::x_diff#6 (signed word) point_init::x_diff#4 (signed word) point_init::x_diff#5 Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#5 (byte) point_init::point_idx#8 (byte) point_init::point_idx#7 (byte) point_init::point_idx#4 Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#3 (byte) point_init::point_idx1#5 (byte) point_init::point_idx1#6 (byte) point_init::point_idx1#7 +Alias (word) rem16u#31 = (word) rem16u#38 (word) rem16u#39 (word) rem16u#32 (word) rem16u#33 +Alias (signed word) rem16s#23 = (signed word) rem16s#29 (signed word) rem16s#30 (signed word) rem16s#24 (signed word) rem16s#25 Alias (signed word) point_init::y_diff#10 = (signed word) point_init::y_diff#11 (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#4 (signed word) point_init::y_diff#5 Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5 Alias (byte) point_init::point_idx1#2 = (byte) point_init::point_idx1#4 Alias (byte) point_init::point_idx#6 = (byte) point_init::point_idx#9 +Alias (word) rem16u#17 = (word) rem16u#7 +Alias (signed word) rem16s#12 = (signed word) rem16s#6 Alias (signed word) point_init::x_stepf#0 = (signed word~) point_init::$12 +Alias (word) rem16u#18 = (word) rem16u#24 (word) rem16u#8 +Alias (signed word) rem16s#13 = (signed word) rem16s#18 (signed word) rem16s#7 Alias (byte) screen_fill::y#2 = (byte) screen_fill::y#3 Alias (byte) screen_fill::ch#1 = (byte) screen_fill::ch#4 Alias (byte*) screen_fill::screen#1 = (byte*) screen_fill::screen#5 @@ -1339,6 +1836,8 @@ Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0 Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3 Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4 Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0 +Alias (word) rem16u#19 = (word) rem16u#9 +Alias (signed word) rem16s#14 = (signed word) rem16s#8 Successful SSA optimization Pass2AliasElimination Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 @@ -1346,12 +1845,16 @@ Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divi Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5 Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#4 +Alias (word) rem16u#20 = (word) rem16u#26 (word) rem16u#41 Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4 Alias (word) divr16s::remu#3 = (word) divr16s::remu#4 +Alias (word) rem16u#11 = (word) rem16u#14 Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#1 (signed word) point_init::y_diff#10 (signed word) point_init::y_diff#2 Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#10 (signed word) point_init::abs16s1_w#0 (signed word) point_init::x_diff#2 Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 (byte) point_init::point_idx#3 (byte) point_init::point_idx#6 Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte) point_init::point_idx1#10 (byte) point_init::point_idx1#2 +Alias (word) rem16u#23 = (word) rem16u#47 (word) rem16u#58 (word) rem16u#31 +Alias (signed word) rem16s#17 = (signed word) rem16s#35 (signed word) rem16s#44 (signed word) rem16s#23 Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 @@ -1360,21 +1863,35 @@ Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#2 Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#1 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (word) divr16u::divisor#1 +Self Phi Eliminated (word) rem16u#30 +Self Phi Eliminated (signed word) rem16s#22 Self Phi Eliminated (byte) screen_fill::ch#1 Self Phi Eliminated (byte) screen_fill::y#2 Self Phi Eliminated (byte*) bitmap_init::bitmap#1 Self Phi Eliminated (byte) bitmap_clear::y#2 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (word) divr16u::rem#8 (word) divr16u::rem#3 +Redundant Phi (word) divr16u::rem#9 (word) divr16u::rem#3 Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1 Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0 Redundant Phi (word) divr16u::divisor#1 (word) divr16u::divisor#5 Redundant Phi (signed word) divr16s::dividend#1 (signed word) divr16s::dividend#0 Redundant Phi (signed word) divr16s::rem#1 (signed word) divr16s::rem#0 Redundant Phi (signed word) divr16s::divisor#1 (signed word) divr16s::divisor#0 +Redundant Phi (word) rem16u#20 (word) rem16u#23 +Redundant Phi (word) rem16u#11 (word) rem16u#1 Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Redundant Phi (byte*) BITMAP#1 (byte*) BITMAP#0 +Redundant Phi (word) rem16u#28 (word) rem16u#0 +Redundant Phi (signed word) rem16s#20 (signed word) rem16s#0 +Redundant Phi (word) rem16u#15 (word) rem16u#18 +Redundant Phi (signed word) rem16s#10 (signed word) rem16s#13 +Redundant Phi (word) rem16u#30 (word) rem16u#16 +Redundant Phi (signed word) rem16s#22 (signed word) rem16s#11 Redundant Phi (byte) point_init::point_idx#1 (byte) point_init::point_idx#0 +Redundant Phi (word) rem16u#23 (word) rem16u#21 +Redundant Phi (signed word) rem16s#17 (signed word) rem16s#15 +Redundant Phi (word) rem16u#17 (word) rem16u#11 +Redundant Phi (signed word) rem16s#12 (signed word) rem16s#3 Redundant Phi (byte) screen_fill::ch#3 (byte) screen_fill::ch#0 Redundant Phi (byte*) screen_fill::screen#4 (byte*) screen_fill::screen#0 Redundant Phi (byte) screen_fill::ch#1 (byte) screen_fill::ch#2 @@ -1384,6 +1901,8 @@ Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#5 Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4 Redundant Phi (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0 Redundant Phi (word) bitmap_plot::x#1 (word) bitmap_plot::x#0 +Redundant Phi (word) rem16u#19 (word) rem16u#16 +Redundant Phi (signed word) rem16s#14 (signed word) rem16s#11 Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) divr16u::$4 if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 Simple Condition (bool~) divr16u::$9 if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 @@ -1391,7 +1910,7 @@ Simple Condition (bool~) divr16u::$11 if((byte) divr16u::i#1!=rangelast(0,15)) g Simple Condition (bool~) divr16s::$9 if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 Simple Condition (bool~) divr16s::$15 if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@5 Simple Condition (bool~) main::$11 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -Simple Condition (bool~) main::$12 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 +Simple Condition (bool~) main::$12 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@6 Simple Condition (bool) point_init::abs16s1_$0#0 if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 Simple Condition (bool) point_init::abs16s2_$0#0 if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 Simple Condition (bool~) point_init::$9 if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 @@ -1410,18 +1929,88 @@ Successful SSA optimization Pass2ConditionalAndOrRewriting Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 Constant (const byte) VIC_BMM#0 = 32 Constant (const byte) VIC_DEN#0 = 16 Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte) rem8u#0 = 0 +Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const byte) divr16s::neg#0 = 0 Constant (const word) divr16s::dividendu#0 = 0 Constant (const word) divr16s::remu#0 = 0 @@ -1429,6 +2018,7 @@ Constant (const byte) divr16s::neg#1 = 1 Constant (const word) divr16s::divisoru#0 = 0 Constant (const byte*) BITMAP#0 = ((byte*))40960 Constant (const byte*) SCREEN#0 = ((byte*))34816 +Constant (const byte) SIZE#0 = 4 Constant (const byte) DELAY#0 = 8 Constant (const word[4]) x_start#0 = { 10, 20, 30, 30 } Constant (const byte[4]) y_start#0 = { 10, 10, 10, 20 } @@ -1439,6 +2029,7 @@ Constant (const word[4]) y_cur#0 = { fill( 4, 0) } Constant (const signed byte[4]) x_add#0 = { fill( 4, 0) } Constant (const signed byte[4]) y_add#0 = { fill( 4, 0) } Constant (const byte[4]) delay#0 = { fill( 4, 0) } +Constant (const byte[4]) frame#0 = { fill( 4, 0) } Constant (const byte) screen_fill::ch#0 = 16 Constant (const byte) main::i#0 = 0 Constant (const signed byte/signed word/signed dword) point_init::$11 = -16 @@ -1488,7 +2079,7 @@ Successful SSA optimization Pass2ConstantIdentification Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0 Successful SSA optimization Pass2ConstantIdentification if() condition always false - eliminating if((const bool) divr16s::$0) goto divr16s::@1 -if() condition always true - replacing block destination if(true) goto main::@5 +if() condition always true - replacing block destination if(true) goto main::@3 Successful SSA optimization Pass2ConstantIfs Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_yhi#0 + 0) w= *(bitmap_plot_ylo#0 + 0) Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#0) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#0) @@ -1498,7 +2089,9 @@ Eliminating Noop Cast (word) divr16s::remu#1 ← ((word)) (signed word~) divr16s Eliminating Noop Cast (word) divr16s::remu#2 ← ((word)) (signed word) divr16s::rem#0 Eliminating Noop Cast (word) divr16s::divisoru#1 ← ((word)) (signed word~) divr16s::$11 Eliminating Noop Cast (word) divr16s::divisoru#2 ← ((word)) (signed word) divr16s::divisor#0 +Eliminating Noop Cast (signed word) rem16s#1 ← ((signed word)) (word) rem16u#1 Eliminating Noop Cast (signed word) divr16s::return#0 ← ((signed word)) (word) divr16s::resultu#0 +Eliminating Noop Cast (signed word~) divr16s::$16 ← ((signed word)) (word) rem16u#1 Eliminating Noop Cast (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#0 Eliminating Noop Cast (signed word~) point_init::$1 ← ((signed word)) *((const word[4]) x_end#0 + (byte) point_init::point_idx#0) Eliminating Noop Cast (signed word~) point_init::$2 ← ((signed word)) *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) @@ -1526,21 +2119,26 @@ Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) 200 Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40 -Culled Empty Block (label) divr16u::@6 +Culled Empty Block (label) @4 +Culled Empty Block (label) @6 +Culled Empty Block (label) @9 +Culled Empty Block (label) @10 Culled Empty Block (label) divr16s::@7 Culled Empty Block (label) divr16s::@9 Culled Empty Block (label) divr16s::@5 -Culled Empty Block (label) @11 +Culled Empty Block (label) @12 Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return Culled Empty Block (label) main::@15 Culled Empty Block (label) main::toD0181_@return Culled Empty Block (label) main::@19 -Culled Empty Block (label) main::@2 +Culled Empty Block (label) main::@3 +Culled Empty Block (label) main::@6 Culled Empty Block (label) point_init::abs16s1_@3 Culled Empty Block (label) point_init::@9 Culled Empty Block (label) point_init::abs16s2_@3 -Culled Empty Block (label) @15 +Culled Empty Block (label) @16 Culled Empty Block (label) bitmap_init::@6 +Culled Empty Block (label) @20 Successful SSA optimization Pass2CullEmptyBlocks Self Phi Eliminated (byte) screen_fill::ch#2 Successful SSA optimization Pass2SelfPhiElimination @@ -1551,6 +2149,8 @@ Successful SSA optimization Pass2ConditionalJumpSimplification Consolidated array index constant in *(bitmap_plot_yhi#0+0) Consolidated array index constant in *(bitmap_plot_ylo#0+0) Successful SSA optimization Pass2ConstantAdditionElimination +Culled Empty Block (label) main::@2 +Successful SSA optimization Pass2CullEmptyBlocks Inlining constant with var siblings (const word) divr16u::quotient#0 Inlining constant with var siblings (const byte) divr16u::i#0 Inlining constant with var siblings (const byte) divr16s::neg#0 @@ -1567,6 +2167,8 @@ Inlining constant with var siblings (const byte) bitmap_init::bits#2 Inlining constant with var siblings (const byte) bitmap_init::y#0 Inlining constant with var siblings (const byte) bitmap_clear::y#0 Inlining constant with var siblings (const byte) bitmap_clear::x#0 +Inlining constant with var siblings (const word) rem16u#0 +Inlining constant with var siblings (const signed word) rem16s#0 Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN#0 Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP#0 Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -1586,8 +2188,10 @@ Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) S Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) SCREEN#0 Constant inlined bitmap_clear::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined bitmap_clear::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined rem16s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::toD0181_$0#0 = ((word))(const byte*) SCREEN#0 Constant inlined main::toD0181_$1#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383 +Constant inlined rem16u#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::toD0181_$6#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined main::toD0181_$7#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15 Constant inlined screen_fill::screen#0 = (const byte*) SCREEN#0 @@ -1610,6 +2214,7 @@ Simplifying constant plus zero bitmap_plot_ylo#0+0 Added new block during phi lifting main::@22(between main::@21 and main::@1) Added new block during phi lifting point_init::@12(between point_init::abs16s1 and point_init::abs16s1_@return) Added new block during phi lifting point_init::@13(between point_init::abs16s2 and point_init::abs16s2_@return) +Added new block during phi lifting point_init::@14(between point_init::@10 and point_init::@2) Added new block during phi lifting divr16s::@17(between divr16s::@16 and divr16s::@2) Fixing phi predecessor for divr16s::neg#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting. Fixing phi predecessor for divr16s::dividendu#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting. @@ -1627,7 +2232,7 @@ Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3) Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @18 +Adding NOP phi() at start of @19 Adding NOP phi() at start of @end Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of main::toD0181 @@ -1640,45 +2245,55 @@ Adding NOP phi() at start of bitmap_init::@5 CALL GRAPH Calls in [] to main:2 Calls in [main] to bitmap_init:13 bitmap_clear:15 screen_fill:17 point_init:20 bitmap_plot:24 -Calls in [point_init] to divr16s:59 -Calls in [divr16s] to divr16u:81 +Calls in [point_init] to divr16s:64 +Calls in [divr16s] to divr16u:88 -Created 30 initial phi equivalence classes +Created 35 initial phi equivalence classes Coalesced [29] main::i#5 ← main::i#1 -Coalesced [76] divr16s::neg#10 ← divr16s::neg#3 -Coalesced [86] divr16s::return#6 ← divr16s::return#1 -Coalesced [93] divr16s::neg#9 ← divr16s::neg#2 -Coalesced [96] divr16u::rem#10 ← divr16u::rem#3 -Coalesced [97] divr16u::dividend#8 ← divr16u::dividend#1 -Coalesced [104] divr16u::rem#13 ← divr16u::rem#1 -Coalesced [111] divr16u::rem#15 ← divr16u::rem#2 -Coalesced [112] divr16u::return#6 ← divr16u::quotient#2 -Coalesced [117] divr16u::rem#11 ← divr16u::rem#9 -Coalesced [118] divr16u::dividend#9 ← divr16u::dividend#0 -Coalesced [119] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [120] divr16u::i#7 ← divr16u::i#1 -Coalesced [121] divr16u::rem#14 ← divr16u::rem#5 -Coalesced [122] divr16u::return#5 ← divr16u::quotient#1 -Coalesced [123] divr16u::rem#12 ← divr16u::rem#0 -Coalesced [126] screen_fill::screen#7 ← screen_fill::screen#3 -Coalesced [135] screen_fill::screen#6 ← screen_fill::screen#1 -Coalesced [136] screen_fill::y#5 ← screen_fill::y#1 -Coalesced (already) [137] screen_fill::screen#8 ← screen_fill::screen#1 -Coalesced [138] screen_fill::x#3 ← screen_fill::x#1 -Coalesced [142] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 -Coalesced [151] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 -Coalesced [152] bitmap_clear::y#5 ← bitmap_clear::y#1 -Coalesced (already) [153] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 -Coalesced [154] bitmap_clear::x#3 ← bitmap_clear::x#1 -Coalesced [174] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 -Coalesced [179] bitmap_init::y#5 ← bitmap_init::y#1 -Coalesced [180] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 -Coalesced (already) [181] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 -Coalesced [182] bitmap_init::bits#5 ← bitmap_init::bits#4 -Coalesced [183] bitmap_init::x#5 ← bitmap_init::x#1 -Coalesced [184] bitmap_init::bits#6 ← bitmap_init::bits#1 -Coalesced down to 22 phi equivalence classes +Coalesced [30] rem16u#67 ← rem16u#18 +Coalesced [31] rem16s#53 ← rem16s#13 +Coalesced (already) [50] rem16u#68 ← rem16u#21 +Coalesced (already) [51] rem16s#54 ← rem16s#15 +Coalesced [70] rem16u#69 ← rem16u#1 +Coalesced [71] rem16s#55 ← rem16s#3 +Coalesced [83] divr16s::neg#10 ← divr16s::neg#3 +Coalesced [94] divr16s::return#6 ← divr16s::return#1 +Coalesced [95] rem16s#56 ← rem16s#2 +Coalesced [103] divr16s::neg#9 ← divr16s::neg#2 +Coalesced [106] divr16u::rem#11 ← divr16u::rem#3 +Coalesced [107] divr16u::dividend#8 ← divr16u::dividend#1 +Coalesced [114] divr16u::rem#14 ← divr16u::rem#1 +Coalesced [121] divr16u::rem#16 ← divr16u::rem#2 +Coalesced [122] divr16u::return#6 ← divr16u::quotient#2 +Coalesced [126] rem16u#1 ← divr16u::rem#10 +Coalesced [128] divr16u::rem#12 ← divr16u::rem#10 +Coalesced [129] divr16u::dividend#9 ← divr16u::dividend#0 +Coalesced [130] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [131] divr16u::i#7 ← divr16u::i#1 +Coalesced [132] divr16u::rem#15 ← divr16u::rem#5 +Coalesced [133] divr16u::return#5 ← divr16u::quotient#1 +Coalesced [134] divr16u::rem#13 ← divr16u::rem#0 +Coalesced [137] screen_fill::screen#7 ← screen_fill::screen#3 +Coalesced [146] screen_fill::screen#6 ← screen_fill::screen#1 +Coalesced [147] screen_fill::y#5 ← screen_fill::y#1 +Coalesced (already) [148] screen_fill::screen#8 ← screen_fill::screen#1 +Coalesced [149] screen_fill::x#3 ← screen_fill::x#1 +Coalesced [153] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 +Coalesced [162] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 +Coalesced [163] bitmap_clear::y#5 ← bitmap_clear::y#1 +Coalesced (already) [164] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 +Coalesced [165] bitmap_clear::x#3 ← bitmap_clear::x#1 +Coalesced [185] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 +Coalesced [190] bitmap_init::y#5 ← bitmap_init::y#1 +Coalesced [191] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 +Coalesced (already) [192] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 +Coalesced [193] bitmap_init::bits#5 ← bitmap_init::bits#4 +Coalesced [194] bitmap_init::x#5 ← bitmap_init::x#1 +Coalesced [195] bitmap_init::bits#6 ← bitmap_init::bits#1 +Coalesced down to 23 phi equivalence classes Culled Empty Block (label) main::@22 +Culled Empty Block (label) point_init::@14 +Culled Empty Block (label) divr16u::@6 Culled Empty Block (label) divr16u::@8 Culled Empty Block (label) divr16u::@10 Culled Empty Block (label) divr16u::@9 @@ -1691,7 +2306,7 @@ Culled Empty Block (label) bitmap_init::@11 Culled Empty Block (label) bitmap_init::@12 Culled Empty Block (label) bitmap_init::@9 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @18 +Adding NOP phi() at start of @19 Adding NOP phi() at start of @end Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001 Adding NOP phi() at start of main::toD0181 @@ -1706,14 +2321,14 @@ Adding NOP phi() at start of bitmap_init::@10 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@18 -@18: scope:[] from @begin + to:@19 +@19: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @18 +@end: scope:[] from @19 [3] phi() -main: scope:[main] from @18 +main: scope:[main] from @19 asm { sei } [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 @@ -1744,6 +2359,8 @@ main::@18: scope:[main] from main::@17 [17] call screen_fill to:main::@1 main::@1: scope:[main] from main::@18 main::@21 + [18] (signed word) rem16s#15 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(signed word) rem16s#13 ) + [18] (word) rem16u#21 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(word) rem16u#18 ) [18] (byte) main::i#2 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(byte) main::i#1 ) [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 [20] call point_init @@ -1803,235 +2420,307 @@ point_init::@10: scope:[point_init] from point_init::abs16s2_@return [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 to:point_init::@2 point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 - [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 - [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 - [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) - [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 - [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 - [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 + [47] (signed word) rem16s#13 ← phi( point_init::@10/(signed word) rem16s#15 point_init::@11/(signed word) rem16s#3 ) + [47] (word) rem16u#18 ← phi( point_init::@10/(word) rem16u#21 point_init::@11/(word) divr16u::rem#10 ) + [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 + [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 + [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) + [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 + [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 + [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 to:point_init::@return point_init::@return: scope:[point_init] from point_init::@2 - [53] return + [54] return to:@return point_init::@1: scope:[point_init] from point_init::@10 - [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 + [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@1 - [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 + [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 to:point_init::@4 point_init::@4: scope:[point_init] from point_init::@3 point_init::@7 - [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - [58] call divr16s - [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 + [59] call divr16s + [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@11 point_init::@11: scope:[point_init] from point_init::@4 - [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 - [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 - [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 + [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 + [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 to:point_init::@2 point_init::@3: scope:[point_init] from point_init::@1 - [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 + [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 to:point_init::@4 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 - [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 - [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 + [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 to:point_init::abs16s2_@return point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 - [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 - [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 + [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 to:point_init::abs16s1_@return divr16s: scope:[divr16s] from point_init::@4 - [69] phi() + [70] phi() to:divr16s::@16 divr16s::@16: scope:[divr16s] from divr16s - [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 + [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 to:divr16s::@17 divr16s::@17: scope:[divr16s] from divr16s::@16 - [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 to:divr16s::@2 divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@17 - [72] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 ) - [72] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 ) - [72] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 + [73] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 ) + [73] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 ) + [73] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 to:divr16s::@18 divr16s::@18: scope:[divr16s] from divr16s::@2 - [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 to:divr16s::@4 divr16s::@4: scope:[divr16s] from divr16s::@18 divr16s::@3 - [75] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 ) - [75] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 ) - [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 - [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - [79] call divr16u - [80] (word) divr16u::return#2 ← (word) divr16u::return#0 + [76] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 ) + [76] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 ) + [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + [80] call divr16u + [81] (word) divr16u::return#2 ← (word) divr16u::return#0 to:divr16s::@15 divr16s::@15: scope:[divr16s] from divr16s::@4 - [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 - [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 + [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 to:divr16s::@11 divr16s::@11: scope:[divr16s] from divr16s::@15 - [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 + [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 + [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 to:divr16s::@return divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@19 - [84] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 ) - [85] return + [86] (signed word) rem16s#3 ← phi( divr16s::@11/(signed word) rem16s#2 divr16s::@19/(signed word~) rem16s#57 ) + [86] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 ) + [87] return to:@return divr16s::@19: scope:[divr16s] from divr16s::@15 - [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 to:divr16s::@return divr16s::@3: scope:[divr16s] from divr16s::@2 - [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 - [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 - [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 + [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 + [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 to:divr16s::@4 divr16s::@1: scope:[divr16s] from divr16s::@16 - [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 - [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 + [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 + [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 to:divr16s::@2 divr16u: scope:[divr16u] from divr16s::@4 - [92] phi() + [95] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [93] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [93] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [93] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) - [93] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 ) - [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [96] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [96] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [96] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 ) + [96] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#10 ) + [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [99] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 + [102] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 + [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [105] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [105] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [108] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [108] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@3 - [108] return + [111] return to:@return screen_fill: scope:[screen_fill] from main::@18 - [109] phi() + [112] phi() to:screen_fill::@1 screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3 - [110] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) - [110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) + [113] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 ) + [113] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 ) to:screen_fill::@2 screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2 - [111] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) - [111] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) - [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 - [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 - [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 - [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 + [114] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 ) + [114] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 ) + [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 + [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 + [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 + [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 to:screen_fill::@3 screen_fill::@3: scope:[screen_fill] from screen_fill::@2 - [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 - [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 + [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 + [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 to:screen_fill::@return screen_fill::@return: scope:[screen_fill] from screen_fill::@3 - [118] return + [121] return to:@return bitmap_clear: scope:[bitmap_clear] from main::@17 - [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) - [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) + [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3 - [121] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) - [121] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) + [124] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) + [124] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 ) to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2 - [122] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) - [122] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) - [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 - [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 - [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 - [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 + [125] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) + [125] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) + [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 + [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 + [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 + [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 to:bitmap_clear::@3 bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2 - [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 - [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 + [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 + [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 - [129] return + [132] return to:@return bitmap_init: scope:[bitmap_init] from main::@16 - [130] phi() + [133] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 - [131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) - [131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) - [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 - [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 + [134] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) + [134] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 ) + [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 + [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10 - [135] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) - [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 - [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 + [138] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 ) + [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 + [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 - [138] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) - [138] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 - [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 - [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 - [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 - [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 - [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 - [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 + [141] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 ) + [141] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 + [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 + [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 + [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 + [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 + [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 + [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 to:bitmap_init::@7 bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3 - [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 + [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7 - [148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) - [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 - [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 + [151] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) + [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 + [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 - [151] return + [154] return to:@return bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1 - [152] phi() + [155] phi() to:bitmap_init::@2 VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte*) BITMAP +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 +(byte*) D016 (byte*) D018 +(byte) DARK_GREY (byte) DELAY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN +(byte) SIZE +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 2.0 (byte*) bitmap_clear::bitmap @@ -2103,12 +2792,12 @@ VARIABLE REGISTER WEIGHTS (word~) divr16s::remu#7 4.0 (word~) divr16s::remu#8 4.0 (word) divr16s::resultu -(word) divr16s::resultu#0 1.0 +(word) divr16s::resultu#0 0.6666666666666666 (signed word) divr16s::return (signed word) divr16s::return#1 4.0 (signed word) divr16s::return#2 2.0 (signed word) divr16s::return#3 4.0 -(signed word~) divr16s::return#7 4.0 +(signed word~) divr16s::return#7 2.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 202.0 (byte~) divr16u::$2 202.0 @@ -2128,14 +2817,15 @@ VARIABLE REGISTER WEIGHTS (word) divr16u::rem (word) divr16u::rem#0 75.75 (word) divr16u::rem#1 202.0 +(word) divr16u::rem#10 15.25 (word) divr16u::rem#2 202.0 (word) divr16u::rem#3 2.0 (word) divr16u::rem#4 204.0 (word) divr16u::rem#5 101.0 -(word) divr16u::rem#9 101.0 (word) divr16u::return (word) divr16u::return#0 61.0 (word) divr16u::return#2 4.0 +(byte[4]) frame (void()) main() (byte~) main::$9 11.0 (byte) main::i @@ -2190,15 +2880,26 @@ VARIABLE REGISTER WEIGHTS (word~) point_init::abs16s2_return#6 4.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 0.71875 +(byte) point_init::point_idx#0 0.6969696969696968 (byte) point_init::point_idx1 -(byte) point_init::point_idx1#0 0.375 +(byte) point_init::point_idx1#0 0.36363636363636365 (signed word) point_init::x_diff (signed word) point_init::x_diff#1 0.5555555555555556 (signed word) point_init::x_stepf (signed word) point_init::x_stepf#0 4.0 (signed word) point_init::y_diff (signed word) point_init::y_diff#0 0.5 +(signed word) rem16s +(signed word) rem16s#13 0.9999999999999999 +(signed word) rem16s#15 0.7222222222222223 +(signed word) rem16s#2 2.0 +(signed word) rem16s#3 0.75 +(signed word~) rem16s#57 4.0 +(word) rem16u +(word) rem16u#18 0.9999999999999999 +(word) rem16u#21 0.7222222222222223 +(signed byte) rem8s +(byte) rem8u (void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) (byte) screen_fill::ch (byte*) screen_fill::screen @@ -2222,6 +2923,7 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ main::i#2 main::i#1 ] +[ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] [ divr16s::dividendu#3 ] @@ -2229,7 +2931,7 @@ Initial phi equivalence classes [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] -[ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] @@ -2282,6 +2984,7 @@ Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ] Complete equivalence classes [ main::i#2 main::i#1 ] +[ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] [ divr16s::dividendu#3 ] @@ -2289,7 +2992,7 @@ Complete equivalence classes [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] -[ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] @@ -2341,64 +3044,65 @@ Complete equivalence classes [ bitmap_init::$6 ] [ bitmap_init::$7 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] -Allocated zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] -Allocated zp ZP_WORD:7 [ divr16s::dividendu#3 ] -Allocated zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] -Allocated zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] -Allocated zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Allocated zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] -Allocated zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] -Allocated zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] -Allocated zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] -Allocated zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] -Allocated zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Allocated zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] -Allocated zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] -Allocated zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Allocated zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] -Allocated zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Allocated zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] -Allocated zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] -Allocated zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] -Allocated zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] -Allocated zp ZP_BYTE:36 [ point_init::point_idx#0 ] -Allocated zp ZP_BYTE:37 [ main::$9 ] -Allocated zp ZP_WORD:38 [ bitmap_plot::x#0 ] -Allocated zp ZP_BYTE:40 [ bitmap_plot::y#0 ] -Allocated zp ZP_WORD:41 [ bitmap_plot::$3 ] -Allocated zp ZP_WORD:43 [ bitmap_plot::$1 ] -Allocated zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] -Allocated zp ZP_BYTE:47 [ bitmap_plot::$2 ] -Allocated zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Allocated zp ZP_WORD:49 [ point_init::x_diff#1 ] -Allocated zp ZP_WORD:51 [ point_init::$4 ] -Allocated zp ZP_WORD:53 [ point_init::$5 ] -Allocated zp ZP_WORD:55 [ point_init::y_diff#0 ] -Allocated zp ZP_WORD:57 [ point_init::$16 ] -Allocated zp ZP_WORD:59 [ point_init::$17 ] -Allocated zp ZP_WORD:61 [ point_init::$18 ] -Allocated zp ZP_WORD:63 [ divr16s::divisor#0 ] -Allocated zp ZP_WORD:65 [ divr16s::rem#0 ] -Allocated zp ZP_WORD:67 [ divr16s::return#3 ] -Allocated zp ZP_WORD:69 [ point_init::x_stepf#0 ] -Allocated zp ZP_BYTE:71 [ point_init::$13 ] -Allocated zp ZP_BYTE:72 [ point_init::$14 ] -Allocated zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] -Allocated zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] -Allocated zp ZP_WORD:77 [ divr16u::divisor#0 ] -Allocated zp ZP_WORD:79 [ divr16u::return#2 ] -Allocated zp ZP_WORD:81 [ divr16s::resultu#0 ] -Allocated zp ZP_WORD:83 [ divr16s::$11 ] -Allocated zp ZP_WORD:85 [ divr16s::$7 ] -Allocated zp ZP_BYTE:87 [ divr16u::$1 ] -Allocated zp ZP_BYTE:88 [ divr16u::$2 ] -Allocated zp ZP_WORD:89 [ bitmap_clear::$3 ] -Allocated zp ZP_BYTE:91 [ bitmap_init::$3 ] -Allocated zp ZP_BYTE:92 [ bitmap_init::$4 ] -Allocated zp ZP_BYTE:93 [ bitmap_init::$5 ] -Allocated zp ZP_BYTE:94 [ bitmap_init::$6 ] -Allocated zp ZP_BYTE:95 [ bitmap_init::$7 ] +Allocated zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] +Allocated zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] +Allocated zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] +Allocated zp ZP_WORD:9 [ divr16s::dividendu#3 ] +Allocated zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] +Allocated zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] +Allocated zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] +Allocated zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] +Allocated zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] +Allocated zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] +Allocated zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ] +Allocated zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] +Allocated zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] +Allocated zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ] +Allocated zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Allocated zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] +Allocated zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ] +Allocated zp ZP_BYTE:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] +Allocated zp ZP_BYTE:34 [ bitmap_init::x#2 bitmap_init::x#1 ] +Allocated zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ] +Allocated zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +Allocated zp ZP_BYTE:38 [ point_init::point_idx#0 ] +Allocated zp ZP_BYTE:39 [ main::$9 ] +Allocated zp ZP_WORD:40 [ bitmap_plot::x#0 ] +Allocated zp ZP_BYTE:42 [ bitmap_plot::y#0 ] +Allocated zp ZP_WORD:43 [ bitmap_plot::$3 ] +Allocated zp ZP_WORD:45 [ bitmap_plot::$1 ] +Allocated zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] +Allocated zp ZP_BYTE:49 [ bitmap_plot::$2 ] +Allocated zp ZP_BYTE:50 [ point_init::point_idx1#0 ] +Allocated zp ZP_WORD:51 [ point_init::x_diff#1 ] +Allocated zp ZP_WORD:53 [ point_init::$4 ] +Allocated zp ZP_WORD:55 [ point_init::$5 ] +Allocated zp ZP_WORD:57 [ point_init::y_diff#0 ] +Allocated zp ZP_WORD:59 [ point_init::$16 ] +Allocated zp ZP_WORD:61 [ point_init::$17 ] +Allocated zp ZP_WORD:63 [ point_init::$18 ] +Allocated zp ZP_WORD:65 [ divr16s::divisor#0 ] +Allocated zp ZP_WORD:67 [ divr16s::rem#0 ] +Allocated zp ZP_WORD:69 [ divr16s::return#3 ] +Allocated zp ZP_WORD:71 [ point_init::x_stepf#0 ] +Allocated zp ZP_BYTE:73 [ point_init::$13 ] +Allocated zp ZP_BYTE:74 [ point_init::$14 ] +Allocated zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] +Allocated zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] +Allocated zp ZP_WORD:79 [ divr16u::divisor#0 ] +Allocated zp ZP_WORD:81 [ divr16u::return#2 ] +Allocated zp ZP_WORD:83 [ divr16s::resultu#0 ] +Allocated zp ZP_WORD:85 [ divr16s::$11 ] +Allocated zp ZP_WORD:87 [ divr16s::$7 ] +Allocated zp ZP_BYTE:89 [ divr16u::$1 ] +Allocated zp ZP_BYTE:90 [ divr16u::$2 ] +Allocated zp ZP_WORD:91 [ bitmap_clear::$3 ] +Allocated zp ZP_BYTE:93 [ bitmap_init::$3 ] +Allocated zp ZP_BYTE:94 [ bitmap_init::$4 ] +Allocated zp ZP_BYTE:95 [ bitmap_init::$5 ] +Allocated zp ZP_BYTE:96 [ bitmap_init::$6 ] +Allocated zp ZP_BYTE:97 [ bitmap_init::$7 ] INITIAL ASM //SEG0 Basic Upstart @@ -2422,17 +3126,19 @@ INITIAL ASM .label BITMAP = $a000 .label SCREEN = $8800 .const DELAY = 8 + .label rem16s = 3 + .label rem16u = $12 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] -b18_from_bbegin: - jmp b18 -//SEG4 @18 -b18: +//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +b19_from_bbegin: + jmp b19 +//SEG4 @19 +b19: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @18 to @end [phi:@18->@end] -bend_from_b18: +//SEG6 [3] phi from @19 to @end [phi:@19->@end] +bend_from_b19: jmp bend //SEG7 @end bend: @@ -2440,7 +3146,7 @@ bend: main: { .const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6 .const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f - .label _9 = $25 + .label _9 = $27 .label i = 2 //SEG9 asm { sei } sei @@ -2482,7 +3188,7 @@ main: { lda #toD0181_return sta D018 //SEG23 [13] call bitmap_init - //SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] + //SEG24 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] bitmap_init_from_b16: jsr bitmap_init //SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17] @@ -2498,93 +3204,105 @@ main: { //SEG29 main::@18 b18: //SEG30 [17] call screen_fill - //SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] + //SEG31 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] screen_fill_from_b18: jsr screen_fill //SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1 + //SEG33 [18] phi (signed word) rem16s#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vwsz1=vbuc1 + lda #<0 + sta rem16s + lda #>0 + sta rem16s+1 + //SEG34 [18] phi (word) rem16u#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#1] -- vwuz1=vbuc1 + lda #<0 + sta rem16u + lda #>0 + sta rem16u+1 + //SEG35 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG36 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy + //SEG37 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy + //SEG38 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy + //SEG39 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy jmp b1 - //SEG36 main::@1 + //SEG40 main::@1 b1: - //SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2 + //SEG41 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2 lda i sta point_init.point_idx - //SEG38 [20] call point_init + //SEG42 [20] call point_init jsr point_init jmp b20 - //SEG39 main::@20 + //SEG43 main::@20 b20: - //SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + //SEG44 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda i lsr sta _9 - //SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG45 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda x_start,y sta bitmap_plot.x lda x_start+1,y sta bitmap_plot.x+1 - //SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG46 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _9 lda y_start,y sta bitmap_plot.y - //SEG43 [24] call bitmap_plot + //SEG47 [24] call bitmap_plot jsr bitmap_plot jmp b21 - //SEG44 main::@21 + //SEG48 main::@21 b21: - //SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG49 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG50 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b21 jmp b5 - //SEG47 main::@5 + //SEG51 main::@5 b5: - //SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG52 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b5 jmp b7 - //SEG49 main::@7 + //SEG53 main::@7 b7: - //SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG54 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 } -//SEG51 bitmap_plot +//SEG55 bitmap_plot bitmap_plot: { - .label _1 = $2b - .label _2 = $2f - .label x = $26 - .label y = $28 - .label plotter = $2d - .label _3 = $29 - //SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 + .label _1 = $2d + .label _2 = $31 + .label x = $28 + .label y = $2a + .label plotter = $2f + .label _3 = $2b + //SEG56 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy y lda bitmap_plot_yhi,y sta _3+1 lda bitmap_plot_ylo,y sta _3 - //SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG57 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 + //SEG58 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3 lda _3 clc adc _1 @@ -2592,10 +3310,10 @@ bitmap_plot: { lda _3+1 adc _1+1 sta plotter+1 - //SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 + //SEG59 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2 lda x sta _2 - //SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 + //SEG60 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2 ldy #0 lda (plotter),y ldy _2 @@ -2603,34 +3321,34 @@ bitmap_plot: { ldy #0 sta (plotter),y jmp breturn - //SEG57 bitmap_plot::@return + //SEG61 bitmap_plot::@return breturn: - //SEG58 [34] return + //SEG62 [34] return rts } -//SEG59 point_init +//SEG63 point_init point_init: { - .label _4 = $33 - .label _5 = $35 - .label _13 = $47 - .label _14 = $48 - .label _16 = $39 - .label _17 = $3b - .label _18 = $3d - .label point_idx = $24 - .label point_idx1 = $30 - .label y_diff = $37 - .label abs16s1__2 = $4b - .label abs16s1_return = 3 - .label abs16s2__2 = $49 - .label abs16s2_return = 5 - .label x_stepf = $45 - .label x_diff = $31 - //SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + .label _4 = $35 + .label _5 = $37 + .label _13 = $49 + .label _14 = $4a + .label _16 = $3b + .label _17 = $3d + .label _18 = $3f + .label point_idx = $26 + .label point_idx1 = $32 + .label y_diff = $39 + .label abs16s1__2 = $4d + .label abs16s1_return = 5 + .label abs16s2__2 = $4b + .label abs16s2_return = 7 + .label x_stepf = $47 + .label x_diff = $33 + //SEG64 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda point_idx lsr sta point_idx1 - //SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 + //SEG65 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 ldy point_idx sec lda x_end,y @@ -2639,19 +3357,19 @@ point_init: { lda x_end+1,y sbc x_start+1,y sta x_diff+1 - //SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + //SEG66 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_end,y sta _4 lda #0 sta _4+1 - //SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + //SEG67 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_start,y sta _5 lda #0 sta _5+1 - //SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz2_minus_vwsz3 + //SEG68 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz2_minus_vwsz3 lda _4 sec sbc _5 @@ -2660,51 +3378,51 @@ point_init: { sbc _5+1 sta y_diff+1 jmp abs16s1 - //SEG65 point_init::abs16s1 + //SEG69 point_init::abs16s1 abs16s1: - //SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 + //SEG70 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 lda x_diff+1 bmi abs16s1_b1 jmp b12 - //SEG67 point_init::@12 + //SEG71 point_init::@12 b12: - //SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG72 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 lda x_diff sta abs16s1_return lda x_diff+1 sta abs16s1_return+1 - //SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return] + //SEG73 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return] abs16s1_breturn_from_b12: abs16s1_breturn_from_abs16s1_b1: - //SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy + //SEG74 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy jmp abs16s1_breturn - //SEG71 point_init::abs16s1_@return + //SEG75 point_init::abs16s1_@return abs16s1_breturn: jmp abs16s2 - //SEG72 point_init::abs16s2 + //SEG76 point_init::abs16s2 abs16s2: - //SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 + //SEG77 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 lda y_diff+1 bmi abs16s2_b1 jmp b13 - //SEG74 point_init::@13 + //SEG78 point_init::@13 b13: - //SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG79 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 lda y_diff sta abs16s2_return lda y_diff+1 sta abs16s2_return+1 - //SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return] + //SEG80 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return] abs16s2_breturn_from_b13: abs16s2_breturn_from_abs16s2_b1: - //SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy + //SEG81 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy jmp abs16s2_breturn - //SEG78 point_init::abs16s2_@return + //SEG82 point_init::abs16s2_@return abs16s2_breturn: jmp b10 - //SEG79 point_init::@10 + //SEG83 point_init::@10 b10: - //SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG84 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s1_return cmp abs16s2_return lda abs16s1_return+1 @@ -2713,10 +3431,15 @@ point_init: { eor #$80 !: bpl b1 + //SEG85 [47] phi from point_init::@10 point_init::@11 to point_init::@2 [phi:point_init::@10/point_init::@11->point_init::@2] + b2_from_b10: + b2_from_b11: + //SEG86 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy + //SEG87 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy jmp b2 - //SEG81 point_init::@2 + //SEG88 point_init::@2 b2: - //SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 + //SEG89 [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 ldy point_idx lda x_start,y sta _16 @@ -2730,19 +3453,19 @@ point_init: { rol _16+1 asl _16 rol _16+1 - //SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG90 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 ldy point_idx lda _16 sta x_cur,y lda _16+1 sta x_cur+1,y - //SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + //SEG91 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_start,y sta _17 lda #0 sta _17+1 - //SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4 + //SEG92 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4 lda _17 asl sta _18 @@ -2755,88 +3478,88 @@ point_init: { rol _18+1 asl _18 rol _18+1 - //SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG93 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 ldy point_idx lda _18 sta y_cur,y lda _18+1 sta y_cur+1,y - //SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG94 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy point_idx1 lda #DELAY sta delay,y jmp breturn - //SEG88 point_init::@return + //SEG95 point_init::@return breturn: - //SEG89 [53] return + //SEG96 [54] return rts - //SEG90 point_init::@1 + //SEG97 point_init::@1 b1: - //SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 + //SEG98 [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 lda x_diff+1 bmi b3 jmp b7 - //SEG92 point_init::@7 + //SEG99 point_init::@7 b7: - //SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 + //SEG100 [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 ldy point_idx lda #$10 sta x_add,y jmp b4 - //SEG94 point_init::@4 + //SEG101 point_init::@4 b4: - //SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 + //SEG102 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2 lda x_diff sta divr16s.divisor lda x_diff+1 sta divr16s.divisor+1 - //SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + //SEG103 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 lda y_diff sta divr16s.rem lda y_diff+1 sta divr16s.rem+1 - //SEG97 [58] call divr16s - //SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] + //SEG104 [59] call divr16s + //SEG105 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] divr16s_from_b4: jsr divr16s - //SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 + //SEG106 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2 lda divr16s.return sta divr16s.return_3 lda divr16s.return+1 sta divr16s.return_3+1 jmp b11 - //SEG100 point_init::@11 + //SEG107 point_init::@11 b11: - //SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 + //SEG108 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2 lda divr16s.return_3 sta x_stepf lda divr16s.return_3+1 sta x_stepf+1 - //SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 + //SEG109 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2 lda x_stepf+1 sta _13 - //SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG110 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda _13 lsr lsr lsr lsr sta _14 - //SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsz2 + //SEG111 [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsz2 lda _14 ldy point_idx1 sta y_add,y - jmp b2 - //SEG105 point_init::@3 + jmp b2_from_b11 + //SEG112 point_init::@3 b3: - //SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 + //SEG113 [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 ldy point_idx lda #-$10 sta x_add,y jmp b4 - //SEG107 point_init::abs16s2_@1 + //SEG114 point_init::abs16s2_@1 abs16s2_b1: - //SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG115 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -2846,15 +3569,15 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2 + //SEG116 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2 lda abs16s2__2 sta abs16s2_return lda abs16s2__2+1 sta abs16s2_return+1 jmp abs16s2_breturn_from_abs16s2_b1 - //SEG110 point_init::abs16s1_@1 + //SEG117 point_init::abs16s1_@1 abs16s1_b1: - //SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG118 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -2864,114 +3587,124 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2 + //SEG119 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2 lda abs16s1__2 sta abs16s1_return lda abs16s1__2+1 sta abs16s1_return+1 jmp abs16s1_breturn_from_abs16s1_b1 } -//SEG113 divr16s +//SEG120 divr16s divr16s: { .const dividend = 0 - .label _7 = $55 - .label _11 = $53 - .label neg = $d - .label resultu = $51 - .label return = $e - .label divisor = $3f - .label rem = $41 - .label return_3 = $43 - .label dividendu = 7 - .label divisoru = $b - .label remu = 9 + .label _7 = $57 + .label _11 = $55 + .label neg = $f + .label resultu = $53 + .label return = $10 + .label divisor = $41 + .label rem = $43 + .label return_3 = $45 + .label dividendu = 9 + .label divisoru = $d + .label remu = $b jmp b16 - //SEG114 divr16s::@16 + //SEG121 divr16s::@16 b16: - //SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG122 [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda rem+1 bmi b1 jmp b17 - //SEG116 divr16s::@17 + //SEG123 divr16s::@17 b17: - //SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 + //SEG124 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2 lda rem sta remu lda rem+1 sta remu+1 - //SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG125 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] b2_from_b17: - //SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy - //SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG126 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy + //SEG127 [73] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 lda #dividend sta dividendu+1 - //SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG128 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuz1=vbuc1 lda #0 sta neg jmp b2 - //SEG122 divr16s::@2 + //SEG129 divr16s::@2 b2: - //SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG130 [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b18 - //SEG124 divr16s::@18 + //SEG131 divr16s::@18 b18: - //SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 + //SEG132 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2 lda divisor sta divisoru lda divisor+1 sta divisoru+1 - //SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG133 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] b4_from_b18: b4_from_b3: - //SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy - //SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy + //SEG134 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG135 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy jmp b4 - //SEG129 divr16s::@4 + //SEG136 divr16s::@4 b4: - //SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 + //SEG137 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2 lda dividendu sta divr16u.dividend lda dividendu+1 sta divr16u.dividend+1 - //SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 + //SEG138 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2 lda divisoru sta divr16u.divisor lda divisoru+1 sta divr16u.divisor+1 - //SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 + //SEG139 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2 lda remu sta divr16u.rem lda remu+1 sta divr16u.rem+1 - //SEG133 [79] call divr16u - //SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG140 [80] call divr16u + //SEG141 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: jsr divr16u - //SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG142 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b15 - //SEG136 divr16s::@15 + //SEG143 divr16s::@15 b15: - //SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG144 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta resultu lda divr16u.return_2+1 sta resultu+1 - //SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuz1_eq_0_then_la1 + //SEG145 [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuz1_eq_0_then_la1 lda neg cmp #0 beq b19 jmp b11 - //SEG139 divr16s::@11 + //SEG146 divr16s::@11 b11: - //SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 + //SEG147 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 + sec + lda divr16u.rem + eor #$ff + adc #0 + sta rem16s + lda divr16u.rem+1 + eor #$ff + adc #0 + sta rem16s+1 + //SEG148 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2 sec lda resultu eor #$ff @@ -2981,26 +3714,32 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG149 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] breturn_from_b11: breturn_from_b19: - //SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG150 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG151 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy jmp breturn - //SEG143 divr16s::@return + //SEG152 divr16s::@return breturn: - //SEG144 [85] return + //SEG153 [87] return rts - //SEG145 divr16s::@19 + //SEG154 divr16s::@19 b19: - //SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 + //SEG155 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2 lda resultu sta return lda resultu+1 sta return+1 + //SEG156 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 + lda divr16u.rem + sta rem16s + lda divr16u.rem+1 + sta rem16s+1 jmp breturn_from_b19 - //SEG147 divr16s::@3 + //SEG157 divr16s::@3 b3: - //SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 + //SEG158 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2 sec lda divisor eor #$ff @@ -3010,19 +3749,19 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 + //SEG159 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1 lda neg eor #1 sta neg - //SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2 + //SEG160 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2 lda _11 sta divisoru lda _11+1 sta divisoru+1 jmp b4_from_b3 - //SEG151 divr16s::@1 + //SEG161 divr16s::@1 b1: - //SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 + //SEG162 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2 sec lda rem eor #$ff @@ -3032,92 +3771,92 @@ divr16s: { eor #$ff adc #0 sta _7+1 - //SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 -- vwuz1=vwuz2 + //SEG163 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 -- vwuz1=vwuz2 lda _7 sta remu lda _7+1 sta remu+1 - //SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG164 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG165 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG166 [73] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 lda #<-dividend sta dividendu lda #>-dividend sta dividendu+1 - //SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 + //SEG167 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1 lda #1 sta neg jmp b2 } -//SEG158 divr16u +//SEG168 divr16u divr16u: { - .label _1 = $57 - .label _2 = $58 - .label rem = $10 - .label dividend = $12 - .label quotient = $14 - .label i = $16 - .label return = $14 - .label divisor = $4d - .label return_2 = $4f - //SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label _1 = $59 + .label _2 = $5a + .label rem = $12 + .label dividend = $14 + .label quotient = $16 + .label i = $18 + .label return = $16 + .label divisor = $4f + .label return_2 = $51 + //SEG169 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG170 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG171 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG172 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG173 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG174 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG175 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG176 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG177 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG178 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG169 divr16u::@1 + //SEG179 divr16u::@1 b1: - //SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG180 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG181 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG182 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG183 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG174 divr16u::@4 + //SEG184 divr16u::@4 b4: - //SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG185 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG186 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG187 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG178 divr16u::@2 + //SEG188 divr16u::@2 b2: - //SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG189 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG190 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG191 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -3127,14 +3866,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG182 divr16u::@5 + //SEG192 divr16u::@5 b5: - //SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG193 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG194 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -3142,271 +3881,271 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG195 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG196 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG197 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG188 divr16u::@3 + //SEG198 divr16u::@3 b3: - //SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG199 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG200 [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 jmp breturn - //SEG191 divr16u::@return + //SEG201 divr16u::@return breturn: - //SEG192 [108] return + //SEG202 [111] return rts } -//SEG193 screen_fill +//SEG203 screen_fill screen_fill: { .const ch = $10 - .label screen = $18 - .label x = $1a - .label y = $17 - //SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + .label screen = $1a + .label x = $1c + .label y = $19 + //SEG204 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] b1_from_screen_fill: - //SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + //SEG205 [113] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG206 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG207 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] b1_from_b3: - //SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy - //SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG208 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG209 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy jmp b1 - //SEG200 screen_fill::@1 + //SEG210 screen_fill::@1 b1: - //SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG211 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] b2_from_b1: - //SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1 + //SEG212 [114] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG213 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy jmp b2 - //SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG214 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] b2_from_b2: - //SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy - //SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG215 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG216 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy jmp b2 - //SEG207 screen_fill::@2 + //SEG217 screen_fill::@2 b2: - //SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG218 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG219 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1 + //SEG220 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG221 [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b2_from_b2 jmp b3 - //SEG212 screen_fill::@3 + //SEG222 screen_fill::@3 b3: - //SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG223 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG224 [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b3 jmp breturn - //SEG215 screen_fill::@return + //SEG225 screen_fill::@return breturn: - //SEG216 [118] return + //SEG226 [121] return rts } -//SEG217 bitmap_clear +//SEG227 bitmap_clear bitmap_clear: { - .label bitmap = $1c - .label x = $1e - .label y = $1b - .label _3 = $59 - //SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + .label bitmap = $1e + .label x = $20 + .label y = $1d + .label _3 = $5b + //SEG228 [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 + //SEG229 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2 lda _3 sta bitmap lda _3+1 sta bitmap+1 - //SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG230 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG231 [124] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG232 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG233 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG234 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG235 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG226 bitmap_clear::@1 + //SEG236 bitmap_clear::@1 b1: - //SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG237 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 + //SEG238 [125] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG239 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG240 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG241 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG242 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG233 bitmap_clear::@2 + //SEG243 bitmap_clear::@2 b2: - //SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG244 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG245 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 + //SEG246 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG247 [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$c8 bne b2_from_b2 jmp b3 - //SEG238 bitmap_clear::@3 + //SEG248 bitmap_clear::@3 b3: - //SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG249 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG250 [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG241 bitmap_clear::@return + //SEG251 bitmap_clear::@return breturn: - //SEG242 [129] return + //SEG252 [132] return rts } -//SEG243 bitmap_init +//SEG253 bitmap_init bitmap_init: { - .label _3 = $5b - .label _4 = $5c - .label _5 = $5d - .label _6 = $5e - .label _7 = $5f - .label bits = $1f - .label x = $20 - .label y = $21 - .label yoffs = $22 - //SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + .label _3 = $5d + .label _4 = $5e + .label _5 = $5f + .label _6 = $60 + .label _7 = $61 + .label bits = $21 + .label x = $22 + .label y = $23 + .label yoffs = $24 + //SEG254 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 + //SEG255 [134] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 + //SEG256 [134] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #$80 sta bits jmp b1 - //SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG257 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG258 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG259 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG250 bitmap_init::@1 + //SEG260 bitmap_init::@1 b1: - //SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG261 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldy x sta bitmap_plot_bit,y - //SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG262 [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr bits - //SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 + //SEG263 [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1 lda bits cmp #0 bne b10_from_b1 - //SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG264 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 + //SEG265 [138] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG256 bitmap_init::@2 + //SEG266 bitmap_init::@2 b2: - //SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 + //SEG267 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc x - //SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 + //SEG268 [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda x cmp #0 bne b1_from_b2 - //SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG269 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG270 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 + //SEG271 [141] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG272 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG273 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG274 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG265 bitmap_init::@3 + //SEG275 bitmap_init::@3 b3: - //SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG276 [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _3 - //SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 + //SEG277 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda yoffs sta _4 - //SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 + //SEG278 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3 lda _3 ora _4 sta _5 - //SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG279 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2 lda _5 ldy y sta bitmap_plot_ylo,y - //SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 + //SEG280 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _6 - //SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG281 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2 lda _6 ldy y sta bitmap_plot_yhi,y - //SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 + //SEG282 [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and y sta _7 - //SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 + //SEG283 [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda _7 cmp #7 bne b4_from_b3 jmp b7 - //SEG274 bitmap_init::@7 + //SEG284 bitmap_init::@7 b7: - //SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG285 [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -3414,32 +4153,32 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG286 [151] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG287 [151] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG278 bitmap_init::@4 + //SEG288 bitmap_init::@4 b4: - //SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 + //SEG289 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc y - //SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 + //SEG290 [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda y cmp #0 bne b3_from_b4 jmp breturn - //SEG281 bitmap_init::@return + //SEG291 bitmap_init::@return breturn: - //SEG282 [151] return + //SEG292 [154] return rts - //SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG293 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG284 bitmap_init::@10 + //SEG294 bitmap_init::@10 b10: - //SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG295 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG296 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } x_start: .word $a, $14, $1e, $1e @@ -3456,303 +4195,308 @@ bitmap_init: { bitmap_plot_bit: .fill $100, 0 REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:92 [ bitmap_init::$4 ] has ALU potential. +Equivalence Class zp ZP_BYTE:94 [ bitmap_init::$4 ] has ALU potential. Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a +Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ main::$9 ] +Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ main::$9 ] Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a -Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y +Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a +Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ point_init::point_idx#0 ] -Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a -Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a -Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a -Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a -Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a -Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a -Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a -Statement [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a -Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a -Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a -Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a -Statement [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ) always clobbers reg byte a -Statement [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ) always clobbers reg byte a -Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a -Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a -Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a -Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a -Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a -Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] -Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a -Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a -Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a -Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a -Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a -Statement [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a -Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a -Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a -Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a -Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] -Statement [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] -Statement [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] -Statement [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] -Statement [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ point_init::point_idx#0 ] +Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:50 [ point_init::point_idx1#0 ] +Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a +Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a +Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a +Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a +Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a +Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a +Statement [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a +Statement [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a +Statement [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a +Statement [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ rem16u#18 rem16s#13 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx1#0 ] ) always clobbers reg byte a +Statement [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a +Statement [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ) always clobbers reg byte a +Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ) always clobbers reg byte a +Statement [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ) always clobbers reg byte a +Statement [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ) always clobbers reg byte a +Statement [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a +Statement [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a +Statement [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a +Statement [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a +Statement [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a +Statement [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] +Statement [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a +Statement [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a +Statement [81] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a +Statement [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a +Statement [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 rem16s#2 divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 ] ) always clobbers reg byte a +Statement [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::return#7 rem16s#57 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 rem16s#57 ] ) always clobbers reg byte a +Statement [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a +Statement [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a +Statement [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a +Statement [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a +Statement [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ] +Statement [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ] +Statement [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ] +Statement [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ] +Statement [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a -Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a +Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 ] ) always clobbers reg byte a +Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 rem16u#18 rem16s#13 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a -Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a -Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a -Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a -Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y -Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a -Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a -Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a -Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a -Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a -Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a -Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a -Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a -Statement [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a -Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a -Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a -Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a -Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a -Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a -Statement [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ) always clobbers reg byte a -Statement [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ) always clobbers reg byte a -Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a -Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a -Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a -Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a -Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a -Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a -Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a -Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a -Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a -Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a -Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a -Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a -Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a -Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a -Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a -Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a -Statement [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a -Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a -Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a -Statement [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a -Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a -Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y -Statement [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a -Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a -Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y -Statement [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a -Statement [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a -Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a +Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a +Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a +Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a +Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a +Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a reg byte y +Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a +Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a +Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a +Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a +Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a +Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a +Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a +Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a +Statement [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a +Statement [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a +Statement [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a +Statement [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ rem16u#18 rem16s#13 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 point_init::point_idx1#0 ] ) always clobbers reg byte a +Statement [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ rem16u#18 rem16s#13 ] ( main:2::point_init:20 [ main::i#2 rem16u#18 rem16s#13 ] ) always clobbers reg byte a +Statement [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a +Statement [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 divr16s::return#3 ] ) always clobbers reg byte a +Statement [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::x_stepf#0 ] ) always clobbers reg byte a +Statement [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$13 ] ) always clobbers reg byte a +Statement [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#3 point_init::$14 ] ) always clobbers reg byte a +Statement [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a +Statement [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a +Statement [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a +Statement [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a +Statement [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 rem16u#21 rem16s#15 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a +Statement [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a +Statement [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a +Statement [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a +Statement [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a +Statement [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a +Statement [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a +Statement [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a +Statement [81] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a +Statement [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a +Statement [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::resultu#0 rem16s#2 ] ) always clobbers reg byte a +Statement [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 rem16s#2 divr16s::return#1 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 rem16s#2 divr16s::return#1 ] ) always clobbers reg byte a +Statement [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16u::rem#10 divr16s::return#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 ] ) always clobbers reg byte a +Statement [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 [ divr16u::rem#10 divr16s::return#7 rem16s#57 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16u::rem#10 divr16s::return#7 rem16s#57 ] ) always clobbers reg byte a +Statement [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a +Statement [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a +Statement [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a +Statement [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a +Statement [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:59 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a +Statement [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:59::divr16u:80 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y +Statement [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a +Statement [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a +Statement [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y +Statement [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a +Statement [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a +Statement [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , -Potential registers zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] : zp ZP_WORD:3 , -Potential registers zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] : zp ZP_WORD:5 , -Potential registers zp ZP_WORD:7 [ divr16s::dividendu#3 ] : zp ZP_WORD:7 , -Potential registers zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] : zp ZP_WORD:9 , -Potential registers zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] : zp ZP_WORD:11 , -Potential registers zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] : zp ZP_WORD:14 , -Potential registers zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:16 , -Potential registers zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] : zp ZP_WORD:18 , -Potential registers zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:20 , -Potential registers zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] : zp ZP_BYTE:23 , reg byte x , -Potential registers zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] : zp ZP_WORD:24 , -Potential registers zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] : zp ZP_BYTE:26 , reg byte x , -Potential registers zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp ZP_BYTE:27 , reg byte x , -Potential registers zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp ZP_WORD:28 , -Potential registers zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp ZP_BYTE:30 , reg byte x , -Potential registers zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:34 , -Potential registers zp ZP_BYTE:36 [ point_init::point_idx#0 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:37 [ main::$9 ] : zp ZP_BYTE:37 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:38 [ bitmap_plot::x#0 ] : zp ZP_WORD:38 , -Potential registers zp ZP_BYTE:40 [ bitmap_plot::y#0 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:41 [ bitmap_plot::$3 ] : zp ZP_WORD:41 , -Potential registers zp ZP_WORD:43 [ bitmap_plot::$1 ] : zp ZP_WORD:43 , -Potential registers zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:45 , -Potential registers zp ZP_BYTE:47 [ bitmap_plot::$2 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:48 [ point_init::point_idx1#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:49 [ point_init::x_diff#1 ] : zp ZP_WORD:49 , -Potential registers zp ZP_WORD:51 [ point_init::$4 ] : zp ZP_WORD:51 , -Potential registers zp ZP_WORD:53 [ point_init::$5 ] : zp ZP_WORD:53 , -Potential registers zp ZP_WORD:55 [ point_init::y_diff#0 ] : zp ZP_WORD:55 , -Potential registers zp ZP_WORD:57 [ point_init::$16 ] : zp ZP_WORD:57 , -Potential registers zp ZP_WORD:59 [ point_init::$17 ] : zp ZP_WORD:59 , -Potential registers zp ZP_WORD:61 [ point_init::$18 ] : zp ZP_WORD:61 , -Potential registers zp ZP_WORD:63 [ divr16s::divisor#0 ] : zp ZP_WORD:63 , -Potential registers zp ZP_WORD:65 [ divr16s::rem#0 ] : zp ZP_WORD:65 , -Potential registers zp ZP_WORD:67 [ divr16s::return#3 ] : zp ZP_WORD:67 , -Potential registers zp ZP_WORD:69 [ point_init::x_stepf#0 ] : zp ZP_WORD:69 , -Potential registers zp ZP_BYTE:71 [ point_init::$13 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ point_init::$14 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] : zp ZP_WORD:73 , -Potential registers zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] : zp ZP_WORD:75 , -Potential registers zp ZP_WORD:77 [ divr16u::divisor#0 ] : zp ZP_WORD:77 , -Potential registers zp ZP_WORD:79 [ divr16u::return#2 ] : zp ZP_WORD:79 , -Potential registers zp ZP_WORD:81 [ divr16s::resultu#0 ] : zp ZP_WORD:81 , -Potential registers zp ZP_WORD:83 [ divr16s::$11 ] : zp ZP_WORD:83 , -Potential registers zp ZP_WORD:85 [ divr16s::$7 ] : zp ZP_WORD:85 , -Potential registers zp ZP_BYTE:87 [ divr16u::$1 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:88 [ divr16u::$2 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:89 [ bitmap_clear::$3 ] : zp ZP_WORD:89 , -Potential registers zp ZP_BYTE:91 [ bitmap_init::$3 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ bitmap_init::$4 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:93 [ bitmap_init::$5 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ bitmap_init::$6 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ bitmap_init::$7 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] : zp ZP_WORD:3 , +Potential registers zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] : zp ZP_WORD:5 , +Potential registers zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] : zp ZP_WORD:7 , +Potential registers zp ZP_WORD:9 [ divr16s::dividendu#3 ] : zp ZP_WORD:9 , +Potential registers zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] : zp ZP_WORD:11 , +Potential registers zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] : zp ZP_WORD:13 , +Potential registers zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] : zp ZP_BYTE:15 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] : zp ZP_WORD:16 , +Potential registers zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:18 , +Potential registers zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] : zp ZP_WORD:20 , +Potential registers zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:22 , +Potential registers zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:24 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] : zp ZP_BYTE:25 , reg byte x , +Potential registers zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] : zp ZP_WORD:26 , +Potential registers zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ] : zp ZP_BYTE:28 , reg byte x , +Potential registers zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp ZP_BYTE:29 , reg byte x , +Potential registers zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp ZP_WORD:30 , +Potential registers zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp ZP_BYTE:32 , reg byte x , +Potential registers zp ZP_BYTE:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:35 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:36 , +Potential registers zp ZP_BYTE:38 [ point_init::point_idx#0 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:39 [ main::$9 ] : zp ZP_BYTE:39 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:40 [ bitmap_plot::x#0 ] : zp ZP_WORD:40 , +Potential registers zp ZP_BYTE:42 [ bitmap_plot::y#0 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:43 [ bitmap_plot::$3 ] : zp ZP_WORD:43 , +Potential registers zp ZP_WORD:45 [ bitmap_plot::$1 ] : zp ZP_WORD:45 , +Potential registers zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:47 , +Potential registers zp ZP_BYTE:49 [ bitmap_plot::$2 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:50 [ point_init::point_idx1#0 ] : zp ZP_BYTE:50 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:51 [ point_init::x_diff#1 ] : zp ZP_WORD:51 , +Potential registers zp ZP_WORD:53 [ point_init::$4 ] : zp ZP_WORD:53 , +Potential registers zp ZP_WORD:55 [ point_init::$5 ] : zp ZP_WORD:55 , +Potential registers zp ZP_WORD:57 [ point_init::y_diff#0 ] : zp ZP_WORD:57 , +Potential registers zp ZP_WORD:59 [ point_init::$16 ] : zp ZP_WORD:59 , +Potential registers zp ZP_WORD:61 [ point_init::$17 ] : zp ZP_WORD:61 , +Potential registers zp ZP_WORD:63 [ point_init::$18 ] : zp ZP_WORD:63 , +Potential registers zp ZP_WORD:65 [ divr16s::divisor#0 ] : zp ZP_WORD:65 , +Potential registers zp ZP_WORD:67 [ divr16s::rem#0 ] : zp ZP_WORD:67 , +Potential registers zp ZP_WORD:69 [ divr16s::return#3 ] : zp ZP_WORD:69 , +Potential registers zp ZP_WORD:71 [ point_init::x_stepf#0 ] : zp ZP_WORD:71 , +Potential registers zp ZP_BYTE:73 [ point_init::$13 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ point_init::$14 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] : zp ZP_WORD:75 , +Potential registers zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] : zp ZP_WORD:77 , +Potential registers zp ZP_WORD:79 [ divr16u::divisor#0 ] : zp ZP_WORD:79 , +Potential registers zp ZP_WORD:81 [ divr16u::return#2 ] : zp ZP_WORD:81 , +Potential registers zp ZP_WORD:83 [ divr16s::resultu#0 ] : zp ZP_WORD:83 , +Potential registers zp ZP_WORD:85 [ divr16s::$11 ] : zp ZP_WORD:85 , +Potential registers zp ZP_WORD:87 [ divr16s::$7 ] : zp ZP_WORD:87 , +Potential registers zp ZP_BYTE:89 [ divr16u::$1 ] : zp ZP_BYTE:89 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:90 [ divr16u::$2 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:91 [ bitmap_clear::$3 ] : zp ZP_WORD:91 , +Potential registers zp ZP_BYTE:93 [ bitmap_init::$3 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ bitmap_init::$4 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:95 [ bitmap_init::$5 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ bitmap_init::$6 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:97 [ bitmap_init::$7 ] : zp ZP_BYTE:97 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [divr16u] 887.75: zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:87 [ divr16u::$1 ] 202: zp ZP_BYTE:88 [ divr16u::$2 ] 167.04: zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] 69.82: zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 11.33: zp ZP_WORD:77 [ divr16u::divisor#0 ] 4: zp ZP_WORD:79 [ divr16u::return#2 ] -Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:89 [ bitmap_clear::$3 ] -Uplift Scope [screen_fill] 221.6: zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:92 [ bitmap_init::$4 ] 22: zp ZP_BYTE:93 [ bitmap_init::$5 ] 22: zp ZP_BYTE:94 [ bitmap_init::$6 ] 22: zp ZP_BYTE:95 [ bitmap_init::$7 ] 11: zp ZP_BYTE:91 [ bitmap_init::$3 ] -Uplift Scope [point_init] 14: zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp ZP_WORD:53 [ point_init::$5 ] 4: zp ZP_WORD:57 [ point_init::$16 ] 4: zp ZP_WORD:59 [ point_init::$17 ] 4: zp ZP_WORD:61 [ point_init::$18 ] 4: zp ZP_WORD:69 [ point_init::x_stepf#0 ] 4: zp ZP_BYTE:71 [ point_init::$13 ] 2: zp ZP_WORD:51 [ point_init::$4 ] 2: zp ZP_BYTE:72 [ point_init::$14 ] 2: zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] 2: zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] 0.72: zp ZP_BYTE:36 [ point_init::point_idx#0 ] 0.56: zp ZP_WORD:49 [ point_init::x_diff#1 ] 0.5: zp ZP_WORD:55 [ point_init::y_diff#0 ] 0.38: zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Uplift Scope [divr16s] 11: zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 10: zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 8.67: zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 4: zp ZP_WORD:67 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:65 [ divr16s::rem#0 ] 2: zp ZP_WORD:85 [ divr16s::$7 ] 1: zp ZP_WORD:81 [ divr16s::resultu#0 ] 1: zp ZP_WORD:83 [ divr16s::$11 ] 0.67: zp ZP_WORD:63 [ divr16s::divisor#0 ] 0.29: zp ZP_WORD:7 [ divr16s::dividendu#3 ] -Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 11: zp ZP_BYTE:37 [ main::$9 ] -Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:40 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:43 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:47 [ bitmap_plot::$2 ] 3: zp ZP_WORD:38 [ bitmap_plot::x#0 ] 3: zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:41 [ bitmap_plot::$3 ] -Uplift Scope [] +Uplift Scope [divr16u] 803.72: zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:89 [ divr16u::$1 ] 202: zp ZP_BYTE:90 [ divr16u::$2 ] 167.04: zp ZP_BYTE:24 [ divr16u::i#2 divr16u::i#1 ] 69.82: zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 11.33: zp ZP_WORD:79 [ divr16u::divisor#0 ] 4: zp ZP_WORD:81 [ divr16u::return#2 ] +Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:32 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:91 [ bitmap_clear::$3 ] +Uplift Scope [screen_fill] 221.6: zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp ZP_BYTE:28 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] +Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:33 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:35 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:34 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:94 [ bitmap_init::$4 ] 22: zp ZP_BYTE:95 [ bitmap_init::$5 ] 22: zp ZP_BYTE:96 [ bitmap_init::$6 ] 22: zp ZP_BYTE:97 [ bitmap_init::$7 ] 11: zp ZP_BYTE:93 [ bitmap_init::$3 ] +Uplift Scope [point_init] 14: zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp ZP_WORD:55 [ point_init::$5 ] 4: zp ZP_WORD:59 [ point_init::$16 ] 4: zp ZP_WORD:61 [ point_init::$17 ] 4: zp ZP_WORD:63 [ point_init::$18 ] 4: zp ZP_WORD:71 [ point_init::x_stepf#0 ] 4: zp ZP_BYTE:73 [ point_init::$13 ] 2: zp ZP_WORD:53 [ point_init::$4 ] 2: zp ZP_BYTE:74 [ point_init::$14 ] 2: zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] 2: zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] 0.7: zp ZP_BYTE:38 [ point_init::point_idx#0 ] 0.56: zp ZP_WORD:51 [ point_init::x_diff#1 ] 0.5: zp ZP_WORD:57 [ point_init::y_diff#0 ] 0.36: zp ZP_BYTE:50 [ point_init::point_idx1#0 ] +Uplift Scope [divr16s] 11: zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 8.67: zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 8: zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 4: zp ZP_WORD:69 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:15 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:67 [ divr16s::rem#0 ] 2: zp ZP_WORD:87 [ divr16s::$7 ] 1: zp ZP_WORD:85 [ divr16s::$11 ] 0.67: zp ZP_WORD:65 [ divr16s::divisor#0 ] 0.67: zp ZP_WORD:83 [ divr16s::resultu#0 ] 0.29: zp ZP_WORD:9 [ divr16s::dividendu#3 ] +Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 11: zp ZP_BYTE:39 [ main::$9 ] +Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:42 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:45 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:49 [ bitmap_plot::$2 ] 3: zp ZP_WORD:40 [ bitmap_plot::x#0 ] 3: zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:43 [ bitmap_plot::$3 ] +Uplift Scope [] 8.47: zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] -Uplifting [divr16u] best 29611 combination zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:77 [ divr16u::divisor#0 ] zp ZP_WORD:79 [ divr16u::return#2 ] -Uplifting [bitmap_clear] best 28711 combination zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:89 [ bitmap_clear::$3 ] -Uplifting [screen_fill] best 27811 combination zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [bitmap_init] best 27311 combination zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:93 [ bitmap_init::$5 ] zp ZP_BYTE:94 [ bitmap_init::$6 ] zp ZP_BYTE:95 [ bitmap_init::$7 ] zp ZP_BYTE:91 [ bitmap_init::$3 ] +Uplifting [divr16u] best 29845 combination zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:79 [ divr16u::divisor#0 ] zp ZP_WORD:81 [ divr16u::return#2 ] +Uplifting [bitmap_clear] best 28945 combination zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:91 [ bitmap_clear::$3 ] +Uplifting [screen_fill] best 28045 combination zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [bitmap_init] best 27545 combination zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:95 [ bitmap_init::$5 ] zp ZP_BYTE:96 [ bitmap_init::$6 ] zp ZP_BYTE:97 [ bitmap_init::$7 ] zp ZP_BYTE:93 [ bitmap_init::$3 ] Limited combination testing to 100 combinations of 61440 possible. -Uplifting [point_init] best 27299 combination zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp ZP_WORD:53 [ point_init::$5 ] zp ZP_WORD:57 [ point_init::$16 ] zp ZP_WORD:59 [ point_init::$17 ] zp ZP_WORD:61 [ point_init::$18 ] zp ZP_WORD:69 [ point_init::x_stepf#0 ] reg byte a [ point_init::$13 ] zp ZP_WORD:51 [ point_init::$4 ] reg byte a [ point_init::$14 ] zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] zp ZP_BYTE:36 [ point_init::point_idx#0 ] zp ZP_WORD:49 [ point_init::x_diff#1 ] zp ZP_WORD:55 [ point_init::y_diff#0 ] zp ZP_BYTE:48 [ point_init::point_idx1#0 ] +Uplifting [point_init] best 27533 combination zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp ZP_WORD:55 [ point_init::$5 ] zp ZP_WORD:59 [ point_init::$16 ] zp ZP_WORD:61 [ point_init::$17 ] zp ZP_WORD:63 [ point_init::$18 ] zp ZP_WORD:71 [ point_init::x_stepf#0 ] reg byte a [ point_init::$13 ] zp ZP_WORD:53 [ point_init::$4 ] reg byte a [ point_init::$14 ] zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] zp ZP_BYTE:38 [ point_init::point_idx#0 ] zp ZP_WORD:51 [ point_init::x_diff#1 ] zp ZP_WORD:57 [ point_init::y_diff#0 ] zp ZP_BYTE:50 [ point_init::point_idx1#0 ] Limited combination testing to 100 combinations of 144 possible. -Uplifting [divr16s] best 27288 combination zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] zp ZP_WORD:67 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:65 [ divr16s::rem#0 ] zp ZP_WORD:85 [ divr16s::$7 ] zp ZP_WORD:81 [ divr16s::resultu#0 ] zp ZP_WORD:83 [ divr16s::$11 ] zp ZP_WORD:63 [ divr16s::divisor#0 ] zp ZP_WORD:7 [ divr16s::dividendu#3 ] -Uplifting [main] best 27248 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::$9 ] -Uplifting [bitmap_plot] best 27211 combination reg byte y [ bitmap_plot::y#0 ] zp ZP_WORD:43 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:38 [ bitmap_plot::x#0 ] zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] zp ZP_WORD:41 [ bitmap_plot::$3 ] -Uplifting [] best 27211 combination +Uplifting [divr16s] best 27522 combination zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:69 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:67 [ divr16s::rem#0 ] zp ZP_WORD:87 [ divr16s::$7 ] zp ZP_WORD:85 [ divr16s::$11 ] zp ZP_WORD:65 [ divr16s::divisor#0 ] zp ZP_WORD:83 [ divr16s::resultu#0 ] zp ZP_WORD:9 [ divr16s::dividendu#3 ] +Uplifting [main] best 27482 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::$9 ] +Uplifting [bitmap_plot] best 27445 combination reg byte y [ bitmap_plot::y#0 ] zp ZP_WORD:45 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:40 [ bitmap_plot::x#0 ] zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] zp ZP_WORD:43 [ bitmap_plot::$3 ] +Uplifting [] best 27445 combination zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Uplifting [main] best 27211 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ bitmap_init::$5 ] -Uplifting [bitmap_init] best 27151 combination reg byte a [ bitmap_init::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:94 [ bitmap_init::$6 ] -Uplifting [bitmap_init] best 27091 combination reg byte a [ bitmap_init::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ bitmap_init::$7 ] -Uplifting [bitmap_init] best 27031 combination reg byte a [ bitmap_init::$7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Uplifting [screen_fill] best 27031 combination zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Uplifting [bitmap_clear] best 27031 combination zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:91 [ bitmap_init::$3 ] -Uplifting [bitmap_init] best 27031 combination zp ZP_BYTE:91 [ bitmap_init::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:36 [ point_init::point_idx#0 ] -Uplifting [point_init] best 27031 combination zp ZP_BYTE:36 [ point_init::point_idx#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Uplifting [point_init] best 27031 combination zp ZP_BYTE:48 [ point_init::point_idx1#0 ] -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:81 [ divr16s::resultu#0 ] ] - score: 2 -Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::i#2 main::i#1 ] ] with [ zp ZP_BYTE:36 [ point_init::point_idx#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ divr16s::dividendu#3 ] ] with [ zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] ] with [ zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:65 [ divr16s::rem#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp ZP_WORD:85 [ divr16s::$7 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:63 [ divr16s::divisor#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp ZP_WORD:77 [ divr16u::divisor#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp ZP_WORD:83 [ divr16s::$11 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:67 [ divr16s::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:79 [ divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:89 [ bitmap_clear::$3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ point_init::$4 ] ] with [ zp ZP_WORD:55 [ point_init::y_diff#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:59 [ point_init::$17 ] ] with [ zp ZP_WORD:61 [ point_init::$18 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ] ] with [ zp ZP_WORD:51 [ point_init::$4 point_init::y_diff#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 ] ] with [ zp ZP_WORD:49 [ point_init::x_diff#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:69 [ point_init::x_stepf#0 ] ] - score: 1 -Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 ] ] with [ zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 ] ] with [ zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:91 [ bitmap_init::$3 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 ] ] with [ zp ZP_WORD:7 [ divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] with [ zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD:38 [ bitmap_plot::x#0 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:53 [ point_init::$5 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 ] ] with [ zp ZP_WORD:57 [ point_init::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$16 ] ] with [ zp ZP_WORD:59 [ point_init::$17 point_init::$18 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 ] ] with [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] -Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] with [ zp ZP_WORD:41 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ] -Coalescing zero page register [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 ] ] with [ zp ZP_WORD:43 [ bitmap_plot::$1 ] ] -Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ] -Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ] -Allocated (was zp ZP_BYTE:48) zp ZP_BYTE:11 [ point_init::point_idx1#0 ] +Uplifting [main] best 27445 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ bitmap_init::$5 ] +Uplifting [bitmap_init] best 27385 combination reg byte a [ bitmap_init::$5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:96 [ bitmap_init::$6 ] +Uplifting [bitmap_init] best 27325 combination reg byte a [ bitmap_init::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:97 [ bitmap_init::$7 ] +Uplifting [bitmap_init] best 27265 combination reg byte a [ bitmap_init::$7 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] +Uplifting [screen_fill] best 27265 combination zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Uplifting [bitmap_clear] best 27265 combination zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:93 [ bitmap_init::$3 ] +Uplifting [bitmap_init] best 27265 combination zp ZP_BYTE:93 [ bitmap_init::$3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:38 [ point_init::point_idx#0 ] +Uplifting [point_init] best 27265 combination zp ZP_BYTE:38 [ point_init::point_idx#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:50 [ point_init::point_idx1#0 ] +Uplifting [point_init] best 27265 combination zp ZP_BYTE:50 [ point_init::point_idx1#0 ] +Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:83 [ divr16s::resultu#0 ] ] - score: 2 +Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::i#2 main::i#1 ] ] with [ zp ZP_BYTE:38 [ point_init::point_idx#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp ZP_WORD:77 [ point_init::abs16s1_$2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp ZP_WORD:75 [ point_init::abs16s2_$2#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::dividendu#3 ] ] with [ zp ZP_WORD:20 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] ] with [ zp ZP_WORD:18 [ divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:67 [ divr16s::rem#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp ZP_WORD:87 [ divr16s::$7 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:65 [ divr16s::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp ZP_WORD:79 [ divr16u::divisor#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp ZP_WORD:85 [ divr16s::$11 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:69 [ divr16s::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:81 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:91 [ bitmap_clear::$3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:43 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:47 [ bitmap_plot::plotter#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:53 [ point_init::$4 ] ] with [ zp ZP_WORD:57 [ point_init::y_diff#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:61 [ point_init::$17 ] ] with [ zp ZP_WORD:63 [ point_init::$18 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 ] ] with [ zp ZP_WORD:51 [ point_init::x_diff#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:22 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:71 [ point_init::x_stepf#0 ] ] - score: 1 +Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 ] ] with [ zp ZP_BYTE:25 [ screen_fill::y#4 screen_fill::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 ] ] with [ zp ZP_BYTE:29 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:93 [ bitmap_init::$3 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 ] ] with [ zp ZP_WORD:9 [ divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] with [ zp ZP_WORD:26 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp ZP_WORD:30 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:36 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 ] ] with [ zp ZP_WORD:16 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] with [ zp ZP_WORD:40 [ bitmap_plot::x#0 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:55 [ point_init::$5 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 ] ] with [ zp ZP_WORD:59 [ point_init::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 point_init::$16 ] ] with [ zp ZP_WORD:61 [ point_init::$17 point_init::$18 ] ] +Coalescing zero page register [ zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 ] ] with [ zp ZP_WORD:43 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ] +Coalescing zero page register [ zp ZP_WORD:13 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ] ] with [ zp ZP_WORD:45 [ bitmap_plot::$1 ] ] +Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ] +Allocated (was zp ZP_WORD:13) zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 bitmap_plot::$1 ] +Allocated (was zp ZP_BYTE:50) zp ZP_BYTE:13 [ point_init::point_idx1#0 ] +Allocated (was zp ZP_WORD:53) zp ZP_WORD:14 [ point_init::$4 point_init::y_diff#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -3776,17 +4520,19 @@ ASSEMBLER BEFORE OPTIMIZATION .label BITMAP = $a000 .label SCREEN = $8800 .const DELAY = 8 + .label rem16s = 3 + .label rem16u = 9 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] -b18_from_bbegin: - jmp b18 -//SEG4 @18 -b18: +//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +b19_from_bbegin: + jmp b19 +//SEG4 @19 +b19: //SEG5 [2] call main jsr main -//SEG6 [3] phi from @18 to @end [phi:@18->@end] -bend_from_b18: +//SEG6 [3] phi from @19 to @end [phi:@19->@end] +bend_from_b19: jmp bend //SEG7 @end bend: @@ -3835,7 +4581,7 @@ main: { lda #toD0181_return sta D018 //SEG23 [13] call bitmap_init - //SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] + //SEG24 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] bitmap_init_from_b16: jsr bitmap_init //SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17] @@ -3851,87 +4597,99 @@ main: { //SEG29 main::@18 b18: //SEG30 [17] call screen_fill - //SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] + //SEG31 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] screen_fill_from_b18: jsr screen_fill //SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1 + //SEG33 [18] phi (signed word) rem16s#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vwsz1=vbuc1 + lda #<0 + sta rem16s + lda #>0 + sta rem16s+1 + //SEG34 [18] phi (word) rem16u#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#1] -- vwuz1=vbuc1 + lda #<0 + sta rem16u + lda #>0 + sta rem16u+1 + //SEG35 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG36 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] b1_from_b21: - //SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy + //SEG37 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy + //SEG38 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy + //SEG39 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy jmp b1 - //SEG36 main::@1 + //SEG40 main::@1 b1: - //SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 + //SEG41 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 // (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy zp ZP_BYTE:2 - //SEG38 [20] call point_init + //SEG42 [20] call point_init jsr point_init jmp b20 - //SEG39 main::@20 + //SEG43 main::@20 b20: - //SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 + //SEG44 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 lda i lsr tax - //SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG45 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda x_start,y sta bitmap_plot.x lda x_start+1,y sta bitmap_plot.x+1 - //SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG46 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx ldy y_start,x - //SEG43 [24] call bitmap_plot + //SEG47 [24] call bitmap_plot jsr bitmap_plot jmp b21 - //SEG44 main::@21 + //SEG48 main::@21 b21: - //SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG49 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG50 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b1_from_b21 jmp b5 - //SEG47 main::@5 + //SEG51 main::@5 b5: - //SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG52 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b5 jmp b7 - //SEG49 main::@7 + //SEG53 main::@7 b7: - //SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG54 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 } -//SEG51 bitmap_plot +//SEG55 bitmap_plot bitmap_plot: { - .label _1 = 7 - .label x = 3 - .label plotter = 5 - .label _3 = 5 - //SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + .label _1 = $b + .label x = 5 + .label plotter = 7 + .label _3 = 7 + //SEG56 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta _3+1 lda bitmap_plot_ylo,y sta _3 - //SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG57 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG58 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -3939,9 +4697,9 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 + //SEG59 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 lda x - //SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + //SEG60 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa tay lda bitmap_plot_bit,y ldy #0 @@ -3949,32 +4707,32 @@ bitmap_plot: { ldy #0 sta (plotter),y jmp breturn - //SEG57 bitmap_plot::@return + //SEG61 bitmap_plot::@return breturn: - //SEG58 [34] return + //SEG62 [34] return rts } -//SEG59 point_init +//SEG63 point_init point_init: { - .label _4 = 7 - .label _5 = 3 - .label _16 = 3 - .label _17 = 3 - .label _18 = 3 + .label _4 = $e + .label _5 = 5 + .label _16 = 5 + .label _17 = 5 + .label _18 = 5 .label point_idx = 2 - .label point_idx1 = $b - .label y_diff = 7 - .label abs16s1__2 = 3 - .label abs16s1_return = 3 - .label abs16s2__2 = 5 - .label abs16s2_return = 5 + .label point_idx1 = $d + .label y_diff = $e + .label abs16s1__2 = 5 + .label abs16s1_return = 5 + .label abs16s2__2 = 7 + .label abs16s2_return = 7 .label x_stepf = 5 - .label x_diff = 9 - //SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + .label x_diff = $b + //SEG64 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda point_idx lsr sta point_idx1 - //SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 + //SEG65 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 ldy point_idx sec lda x_end,y @@ -3983,19 +4741,19 @@ point_init: { lda x_end+1,y sbc x_start+1,y sta x_diff+1 - //SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + //SEG66 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_end,y sta _4 lda #0 sta _4+1 - //SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + //SEG67 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_start,y sta _5 lda #0 sta _5+1 - //SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 + //SEG68 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 lda y_diff sec sbc _5 @@ -4004,51 +4762,51 @@ point_init: { sbc _5+1 sta y_diff+1 jmp abs16s1 - //SEG65 point_init::abs16s1 + //SEG69 point_init::abs16s1 abs16s1: - //SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 + //SEG70 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 lda x_diff+1 bmi abs16s1_b1 jmp b12 - //SEG67 point_init::@12 + //SEG71 point_init::@12 b12: - //SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG72 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 lda x_diff sta abs16s1_return lda x_diff+1 sta abs16s1_return+1 - //SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return] + //SEG73 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return] abs16s1_breturn_from_b12: abs16s1_breturn_from_abs16s1_b1: - //SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy + //SEG74 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy jmp abs16s1_breturn - //SEG71 point_init::abs16s1_@return + //SEG75 point_init::abs16s1_@return abs16s1_breturn: jmp abs16s2 - //SEG72 point_init::abs16s2 + //SEG76 point_init::abs16s2 abs16s2: - //SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 + //SEG77 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 lda y_diff+1 bmi abs16s2_b1 jmp b13 - //SEG74 point_init::@13 + //SEG78 point_init::@13 b13: - //SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG79 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 lda y_diff sta abs16s2_return lda y_diff+1 sta abs16s2_return+1 - //SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return] + //SEG80 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return] abs16s2_breturn_from_b13: abs16s2_breturn_from_abs16s2_b1: - //SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy + //SEG81 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy jmp abs16s2_breturn - //SEG78 point_init::abs16s2_@return + //SEG82 point_init::abs16s2_@return abs16s2_breturn: jmp b10 - //SEG79 point_init::@10 + //SEG83 point_init::@10 b10: - //SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG84 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s1_return cmp abs16s2_return lda abs16s1_return+1 @@ -4057,10 +4815,15 @@ point_init: { eor #$80 !: bpl b1 + //SEG85 [47] phi from point_init::@10 point_init::@11 to point_init::@2 [phi:point_init::@10/point_init::@11->point_init::@2] + b2_from_b10: + b2_from_b11: + //SEG86 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy + //SEG87 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy jmp b2 - //SEG81 point_init::@2 + //SEG88 point_init::@2 b2: - //SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 + //SEG89 [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 ldy point_idx lda x_start,y sta _16 @@ -4074,19 +4837,19 @@ point_init: { rol _16+1 asl _16 rol _16+1 - //SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG90 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 ldy point_idx lda _16 sta x_cur,y lda _16+1 sta x_cur+1,y - //SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + //SEG91 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_start,y sta _17 lda #0 sta _17+1 - //SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 + //SEG92 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 asl _18 rol _18+1 asl _18 @@ -4095,72 +4858,75 @@ point_init: { rol _18+1 asl _18 rol _18+1 - //SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG93 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 ldy point_idx lda _18 sta y_cur,y lda _18+1 sta y_cur+1,y - //SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG94 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy point_idx1 lda #DELAY sta delay,y jmp breturn - //SEG88 point_init::@return + //SEG95 point_init::@return breturn: - //SEG89 [53] return + //SEG96 [54] return rts - //SEG90 point_init::@1 + //SEG97 point_init::@1 b1: - //SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 + //SEG98 [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 lda x_diff+1 bmi b3 jmp b7 - //SEG92 point_init::@7 + //SEG99 point_init::@7 b7: - //SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 + //SEG100 [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 ldy point_idx lda #$10 sta x_add,y jmp b4 - //SEG94 point_init::@4 + //SEG101 point_init::@4 b4: - //SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - // (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:9 - //SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - // (signed word) divr16s::rem#0 = (signed word) point_init::y_diff#0 // register copy zp ZP_WORD:7 - //SEG97 [58] call divr16s - //SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] + //SEG102 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + // (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:11 + //SEG103 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + lda y_diff + sta divr16s.rem + lda y_diff+1 + sta divr16s.rem+1 + //SEG104 [59] call divr16s + //SEG105 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] divr16s_from_b4: jsr divr16s - //SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG106 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 // (signed word) divr16s::return#3 = (signed word) divr16s::return#2 // register copy zp ZP_WORD:5 jmp b11 - //SEG100 point_init::@11 + //SEG107 point_init::@11 b11: - //SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + //SEG108 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 // (signed word) point_init::x_stepf#0 = (signed word) divr16s::return#3 // register copy zp ZP_WORD:5 - //SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + //SEG109 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda x_stepf+1 - //SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG110 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa + //SEG111 [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa ldy point_idx1 sta y_add,y - jmp b2 - //SEG105 point_init::@3 + jmp b2_from_b11 + //SEG112 point_init::@3 b3: - //SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 + //SEG113 [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 ldy point_idx lda #-$10 sta x_add,y jmp b4 - //SEG107 point_init::abs16s2_@1 + //SEG114 point_init::abs16s2_@1 abs16s2_b1: - //SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG115 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -4170,12 +4936,12 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 - // (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:5 + //SEG116 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + // (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:7 jmp abs16s2_breturn_from_abs16s2_b1 - //SEG110 point_init::abs16s1_@1 + //SEG117 point_init::abs16s1_@1 abs16s1_b1: - //SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG118 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -4185,86 +4951,96 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 - // (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:3 + //SEG119 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + // (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:5 jmp abs16s1_breturn_from_abs16s1_b1 } -//SEG113 divr16s +//SEG120 divr16s divr16s: { .const dividend = 0 - .label _7 = 7 - .label _11 = 9 + .label _7 = 9 + .label _11 = $b .label resultu = 5 .label return = 5 - .label divisor = 9 - .label rem = 7 + .label divisor = $b + .label rem = 9 .label dividendu = 3 - .label divisoru = 9 - .label remu = 7 + .label divisoru = $b + .label remu = 9 jmp b16 - //SEG114 divr16s::@16 + //SEG121 divr16s::@16 b16: - //SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + //SEG122 [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda rem+1 bmi b1 jmp b17 - //SEG116 divr16s::@17 + //SEG123 divr16s::@17 b17: - //SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 - // (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:7 - //SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG124 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + // (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:9 + //SEG125 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] b2_from_b17: - //SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy - //SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG126 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy + //SEG127 [73] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 lda #dividend sta dividendu+1 - //SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG128 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG122 divr16s::@2 + //SEG129 divr16s::@2 b2: - //SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG130 [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 jmp b18 - //SEG124 divr16s::@18 + //SEG131 divr16s::@18 b18: - //SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - // (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:9 - //SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG132 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + // (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:11 + //SEG133 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] b4_from_b18: b4_from_b3: - //SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy - //SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy + //SEG134 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG135 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy jmp b4 - //SEG129 divr16s::@4 + //SEG136 divr16s::@4 b4: - //SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + //SEG137 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 // (word) divr16u::dividend#1 = (word) divr16s::dividendu#3 // register copy zp ZP_WORD:3 - //SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - // (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:9 - //SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - // (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:7 - //SEG133 [79] call divr16u - //SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG138 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + // (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:11 + //SEG139 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + // (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:9 + //SEG140 [80] call divr16u + //SEG141 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] divr16u_from_b4: jsr divr16u - //SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG142 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:5 jmp b15 - //SEG136 divr16s::@15 + //SEG143 divr16s::@15 b15: - //SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + //SEG144 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 // (word) divr16s::resultu#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:5 - //SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 + //SEG145 [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 cpy #0 beq b19 jmp b11 - //SEG139 divr16s::@11 + //SEG146 divr16s::@11 b11: - //SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + //SEG147 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 + sec + lda divr16u.rem + eor #$ff + adc #0 + sta rem16s + lda divr16u.rem+1 + eor #$ff + adc #0 + sta rem16s+1 + //SEG148 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -4274,23 +5050,29 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG149 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] breturn_from_b11: breturn_from_b19: - //SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG150 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG151 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy jmp breturn - //SEG143 divr16s::@return + //SEG152 divr16s::@return breturn: - //SEG144 [85] return + //SEG153 [87] return rts - //SEG145 divr16s::@19 + //SEG154 divr16s::@19 b19: - //SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG155 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 // (signed word~) divr16s::return#7 = (signed word)(word) divr16s::resultu#0 // register copy zp ZP_WORD:5 + //SEG156 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 + lda divr16u.rem + sta rem16s + lda divr16u.rem+1 + sta rem16s+1 jmp breturn_from_b19 - //SEG147 divr16s::@3 + //SEG157 divr16s::@3 b3: - //SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG158 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _11 eor #$ff @@ -4300,16 +5082,16 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG159 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 - // (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:9 + //SEG160 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + // (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:11 jmp b4_from_b3 - //SEG151 divr16s::@1 + //SEG161 divr16s::@1 b1: - //SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + //SEG162 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda _7 eor #$ff @@ -4319,79 +5101,79 @@ divr16s: { eor #$ff adc #0 sta _7+1 - //SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 - // (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:7 - //SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG163 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 + // (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:9 + //SEG164 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] b2_from_b1: - //SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG165 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG166 [73] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 lda #<-dividend sta dividendu lda #>-dividend sta dividendu+1 - //SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG167 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG158 divr16u +//SEG168 divr16u divr16u: { - .label rem = 7 + .label rem = 9 .label dividend = 3 .label quotient = 5 .label return = 5 - .label divisor = 9 - //SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label divisor = $b + //SEG169 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG170 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG171 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG172 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG173 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy jmp b1 - //SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG174 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG175 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG176 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG177 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG178 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG169 divr16u::@1 + //SEG179 divr16u::@1 b1: - //SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG180 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG181 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG182 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG183 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG174 divr16u::@4 + //SEG184 divr16u::@4 b4: - //SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG185 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG186 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG187 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG178 divr16u::@2 + //SEG188 divr16u::@2 b2: - //SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG189 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG190 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG191 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3_from_b2 @@ -4401,14 +5183,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG182 divr16u::@5 + //SEG192 divr16u::@5 b5: - //SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG193 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG194 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -4416,236 +5198,236 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG195 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG196 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG197 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG188 divr16u::@3 + //SEG198 divr16u::@3 b3: - //SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG199 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG200 [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 jmp breturn - //SEG191 divr16u::@return + //SEG201 divr16u::@return breturn: - //SEG192 [108] return + //SEG202 [111] return rts } -//SEG193 screen_fill +//SEG203 screen_fill screen_fill: { .const ch = $10 .label screen = 3 .label y = 2 - //SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG204 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] b1_from_screen_fill: - //SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + //SEG205 [113] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG206 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG207 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] b1_from_b3: - //SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy - //SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG208 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG209 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy jmp b1 - //SEG200 screen_fill::@1 + //SEG210 screen_fill::@1 b1: - //SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG211 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] b2_from_b1: - //SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 + //SEG212 [114] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG213 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy jmp b2 - //SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG214 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] b2_from_b2: - //SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy - //SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG215 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG216 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy jmp b2 - //SEG207 screen_fill::@2 + //SEG217 screen_fill::@2 b2: - //SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG218 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG219 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx + //SEG220 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx inx - //SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG221 [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2_from_b2 jmp b3 - //SEG212 screen_fill::@3 + //SEG222 screen_fill::@3 b3: - //SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG223 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG224 [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b3 jmp breturn - //SEG215 screen_fill::@return + //SEG225 screen_fill::@return breturn: - //SEG216 [118] return + //SEG226 [121] return rts } -//SEG217 bitmap_clear +//SEG227 bitmap_clear bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG228 [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG229 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3 - //SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG230 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] b1_from_bitmap_clear: - //SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG231 [124] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG232 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG233 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] b1_from_b3: - //SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG234 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG235 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp b1 - //SEG226 bitmap_clear::@1 + //SEG236 bitmap_clear::@1 b1: - //SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG237 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] b2_from_b1: - //SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG238 [125] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG239 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG240 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] b2_from_b2: - //SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG241 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG242 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp b2 - //SEG233 bitmap_clear::@2 + //SEG243 bitmap_clear::@2 b2: - //SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG244 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y - //SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG245 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG246 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG247 [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2_from_b2 jmp b3 - //SEG238 bitmap_clear::@3 + //SEG248 bitmap_clear::@3 b3: - //SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG249 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG250 [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1_from_b3 jmp breturn - //SEG241 bitmap_clear::@return + //SEG251 bitmap_clear::@return breturn: - //SEG242 [129] return + //SEG252 [132] return rts } -//SEG243 bitmap_init +//SEG253 bitmap_init bitmap_init: { .label _3 = 2 .label yoffs = 3 - //SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG254 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] b1_from_bitmap_init: - //SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG255 [134] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG256 [134] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 jmp b1 - //SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG257 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] b1_from_b2: - //SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG258 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG259 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp b1 - //SEG250 bitmap_init::@1 + //SEG260 bitmap_init::@1 b1: - //SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG261 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG262 [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 + //SEG263 [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 cmp #0 bne b10_from_b1 - //SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG264 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] b2_from_b1: - //SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG265 [138] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 jmp b2 - //SEG256 bitmap_init::@2 + //SEG266 bitmap_init::@2 b2: - //SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG267 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG268 [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG269 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] b3_from_b2: - //SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG270 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG271 [141] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG272 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] b3_from_b4: - //SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG273 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG274 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp b3 - //SEG265 bitmap_init::@3 + //SEG275 bitmap_init::@3 b3: - //SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG276 [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _3 - //SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG277 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG278 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG279 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG280 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG281 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG282 [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG283 [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG274 bitmap_init::@7 + //SEG284 bitmap_init::@7 b7: - //SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG285 [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -4653,31 +5435,31 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG286 [151] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] b4_from_b3: b4_from_b7: - //SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG287 [151] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy jmp b4 - //SEG278 bitmap_init::@4 + //SEG288 bitmap_init::@4 b4: - //SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG289 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG290 [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG281 bitmap_init::@return + //SEG291 bitmap_init::@return breturn: - //SEG282 [151] return + //SEG292 [154] return rts - //SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG293 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] b10_from_b1: jmp b10 - //SEG284 bitmap_init::@10 + //SEG294 bitmap_init::@10 b10: - //SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG295 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] b2_from_b10: - //SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG296 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy jmp b2 } x_start: .word $a, $14, $1e, $1e @@ -4694,7 +5476,7 @@ bitmap_init: { bitmap_plot_bit: .fill $100, 0 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b18 +Removing instruction jmp b19 Removing instruction jmp bend Removing instruction jmp vicSelectGfxBank1 Removing instruction jmp vicSelectGfxBank1_toDd001 @@ -4751,6 +5533,10 @@ Removing instruction jmp b4 Removing instruction jmp breturn Removing instruction jmp b10 Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #>0 +Removing instruction lda #<0 +Removing instruction lda #>0 +Removing instruction lda #0 Removing instruction lda i Removing instruction ldy #0 Removing instruction ldy point_idx1 @@ -4760,6 +5546,7 @@ Removing instruction lda #>0 Replacing instruction ldy #0 with TAY Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b21 with b1 +Replacing label b2_from_b11 with b2 Replacing label abs16s2_breturn_from_abs16s2_b1 with b10 Replacing label abs16s1_breturn_from_abs16s1_b1 with abs16s2 Replacing label breturn_from_b19 with breturn @@ -4777,8 +5564,8 @@ Replacing label b1_from_b2 with b1 Replacing label b4_from_b3 with b4 Replacing label b3_from_b4 with b3 Removing instruction bbegin: -Removing instruction b18_from_bbegin: -Removing instruction bend_from_b18: +Removing instruction b19_from_bbegin: +Removing instruction bend_from_b19: Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_toDd001: Removing instruction toD0181_from_vicSelectGfxBank1_b1: @@ -4793,6 +5580,8 @@ Removing instruction abs16s1_breturn: Removing instruction abs16s2_breturn_from_b13: Removing instruction abs16s2_breturn_from_abs16s2_b1: Removing instruction abs16s2_breturn: +Removing instruction b2_from_b10: +Removing instruction b2_from_b11: Removing instruction b4_from_b18: Removing instruction b4_from_b3: Removing instruction breturn_from_b11: @@ -4815,7 +5604,7 @@ Removing instruction b4_from_b7: Removing instruction b10_from_b1: Removing instruction b2_from_b10: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b18: +Removing instruction b19: Removing instruction bend: Removing instruction vicSelectGfxBank1: Removing instruction vicSelectGfxBank1_b1: @@ -4859,7 +5648,6 @@ Removing instruction b3_from_b2: Removing instruction b7: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Skipping double jump to breturn in beq b19 Skipping double jump to b2 in bne b10 Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp b1 @@ -4871,51 +5659,116 @@ Removing instruction jmp b2 Removing instruction jmp b1 Removing instruction jmp b3 Succesful ASM optimization Pass5NextJumpElimination -Removing instruction b19: Removing instruction b10: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp breturn Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [140] bmi abs16s1_b1 to bpl -Fixing long branch [149] bmi abs16s2_b1 to bpl +Fixing long branch [146] bmi abs16s1_b1 to bpl +Fixing long branch [155] bmi abs16s2_b1 to bpl FINAL SYMBOL TABLE -(label) @18 +(label) @19 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte*) BITMAP (const byte*) BITMAP#0 BITMAP = ((byte*))(word/dword/signed dword) 40960 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 (const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D016 (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 +(byte) DARK_GREY (byte) DELAY (const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 34816 +(byte) SIZE +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM (const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN (const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0 (label) bitmap_clear::@1 @@ -4962,14 +5815,14 @@ FINAL SYMBOL TABLE (byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 6.111111111111112 (byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 11.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 $1 zp ZP_WORD:7 4.0 +(word~) bitmap_plot::$1 $1 zp ZP_WORD:11 4.0 (byte~) bitmap_plot::$2 reg byte a 4.0 -(word~) bitmap_plot::$3 $3 zp ZP_WORD:5 1.0 +(word~) bitmap_plot::$3 $3 zp ZP_WORD:7 1.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:5 3.0 +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:7 3.0 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0 +(word) bitmap_plot::x#0 x zp ZP_WORD:5 3.0 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 reg byte y 15.0 (byte[256]) bitmap_plot_bit @@ -4981,8 +5834,8 @@ FINAL SYMBOL TABLE (byte[4]) delay (const byte[4]) delay#0 delay = { fill( 4, 0) } (signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) -(signed word~) divr16s::$11 $11 zp ZP_WORD:9 1.0 -(signed word~) divr16s::$7 $7 zp ZP_WORD:7 2.0 +(signed word~) divr16s::$11 $11 zp ZP_WORD:11 1.0 +(signed word~) divr16s::$7 $7 zp ZP_WORD:9 2.0 (label) divr16s::@1 (label) divr16s::@11 (label) divr16s::@15 @@ -4999,28 +5852,28 @@ FINAL SYMBOL TABLE (word) divr16s::dividendu (word) divr16s::dividendu#3 dividendu zp ZP_WORD:3 0.2857142857142857 (signed word) divr16s::divisor -(signed word) divr16s::divisor#0 divisor zp ZP_WORD:9 0.6666666666666666 +(signed word) divr16s::divisor#0 divisor zp ZP_WORD:11 0.6666666666666666 (word) divr16s::divisoru -(word) divr16s::divisoru#3 divisoru zp ZP_WORD:9 3.0 -(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:9 4.0 -(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:9 4.0 +(word) divr16s::divisoru#3 divisoru zp ZP_WORD:11 3.0 +(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:11 4.0 +(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:11 4.0 (byte) divr16s::neg (byte) divr16s::neg#2 reg byte y 2.0 (byte) divr16s::neg#3 reg byte y 1.0 (byte) divr16s::neg#4 reg byte y 0.8571428571428571 (signed word) divr16s::rem -(signed word) divr16s::rem#0 rem zp ZP_WORD:7 2.0 +(signed word) divr16s::rem#0 rem zp ZP_WORD:9 2.0 (word) divr16s::remu -(word) divr16s::remu#3 remu zp ZP_WORD:7 0.6666666666666666 -(word~) divr16s::remu#7 remu zp ZP_WORD:7 4.0 -(word~) divr16s::remu#8 remu zp ZP_WORD:7 4.0 +(word) divr16s::remu#3 remu zp ZP_WORD:9 0.6666666666666666 +(word~) divr16s::remu#7 remu zp ZP_WORD:9 4.0 +(word~) divr16s::remu#8 remu zp ZP_WORD:9 4.0 (word) divr16s::resultu -(word) divr16s::resultu#0 resultu zp ZP_WORD:5 1.0 +(word) divr16s::resultu#0 resultu zp ZP_WORD:5 0.6666666666666666 (signed word) divr16s::return (signed word) divr16s::return#1 return zp ZP_WORD:5 4.0 (signed word) divr16s::return#2 return zp ZP_WORD:5 2.0 (signed word) divr16s::return#3 return zp ZP_WORD:5 4.0 -(signed word~) divr16s::return#7 return zp ZP_WORD:5 4.0 +(signed word~) divr16s::return#7 return zp ZP_WORD:5 2.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 reg byte a 202.0 (byte~) divr16u::$2 reg byte a 202.0 @@ -5035,7 +5888,7 @@ FINAL SYMBOL TABLE (word) divr16u::dividend#1 dividend zp ZP_WORD:3 1.0 (word) divr16u::dividend#2 dividend zp ZP_WORD:3 43.57142857142858 (word) divr16u::divisor -(word) divr16u::divisor#0 divisor zp ZP_WORD:9 11.333333333333332 +(word) divr16u::divisor#0 divisor zp ZP_WORD:11 11.333333333333332 (byte) divr16u::i (byte) divr16u::i#1 reg byte x 151.5 (byte) divr16u::i#2 reg byte x 15.538461538461538 @@ -5044,16 +5897,17 @@ FINAL SYMBOL TABLE (word) divr16u::quotient#2 quotient zp ZP_WORD:5 101.0 (word) divr16u::quotient#3 quotient zp ZP_WORD:5 25.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp ZP_WORD:7 75.75 -(word) divr16u::rem#1 rem zp ZP_WORD:7 202.0 -(word) divr16u::rem#2 rem zp ZP_WORD:7 202.0 -(word) divr16u::rem#3 rem zp ZP_WORD:7 2.0 -(word) divr16u::rem#4 rem zp ZP_WORD:7 204.0 -(word) divr16u::rem#5 rem zp ZP_WORD:7 101.0 -(word) divr16u::rem#9 rem zp ZP_WORD:7 101.0 +(word) divr16u::rem#0 rem zp ZP_WORD:9 75.75 +(word) divr16u::rem#1 rem zp ZP_WORD:9 202.0 +(word) divr16u::rem#10 rem zp ZP_WORD:9 15.25 +(word) divr16u::rem#2 rem zp ZP_WORD:9 202.0 +(word) divr16u::rem#3 rem zp ZP_WORD:9 2.0 +(word) divr16u::rem#4 rem zp ZP_WORD:9 204.0 +(word) divr16u::rem#5 rem zp ZP_WORD:9 101.0 (word) divr16u::return (word) divr16u::return#0 return zp ZP_WORD:5 61.0 (word) divr16u::return#2 return zp ZP_WORD:5 4.0 +(byte[4]) frame (void()) main() (byte~) main::$9 reg byte x 11.0 (label) main::@1 @@ -5096,11 +5950,11 @@ FINAL SYMBOL TABLE (void()) point_init((byte) point_init::point_idx) (byte~) point_init::$13 reg byte a 4.0 (byte~) point_init::$14 reg byte a 2.0 -(word~) point_init::$16 $16 zp ZP_WORD:3 4.0 -(word~) point_init::$17 $17 zp ZP_WORD:3 4.0 -(word~) point_init::$18 $18 zp ZP_WORD:3 4.0 -(signed word~) point_init::$4 $4 zp ZP_WORD:7 2.0 -(signed word~) point_init::$5 $5 zp ZP_WORD:3 4.0 +(word~) point_init::$16 $16 zp ZP_WORD:5 4.0 +(word~) point_init::$17 $17 zp ZP_WORD:5 4.0 +(word~) point_init::$18 $18 zp ZP_WORD:5 4.0 +(signed word~) point_init::$4 $4 zp ZP_WORD:14 2.0 +(signed word~) point_init::$5 $5 zp ZP_WORD:5 4.0 (label) point_init::@1 (label) point_init::@10 (label) point_init::@11 @@ -5115,38 +5969,49 @@ FINAL SYMBOL TABLE (bool~) point_init::abs16s1_$0 (word~) point_init::abs16s1_$1 (signed word~) point_init::abs16s1_$2 -(signed word) point_init::abs16s1_$2#0 abs16s1_$2 zp ZP_WORD:3 2.0 +(signed word) point_init::abs16s1_$2#0 abs16s1_$2 zp ZP_WORD:5 2.0 (word~) point_init::abs16s1_$3 (label) point_init::abs16s1_@1 (label) point_init::abs16s1_@return (word) point_init::abs16s1_return -(word) point_init::abs16s1_return#2 abs16s1_return zp ZP_WORD:3 1.0 -(word~) point_init::abs16s1_return#5 abs16s1_return zp ZP_WORD:3 4.0 -(word~) point_init::abs16s1_return#6 abs16s1_return zp ZP_WORD:3 4.0 +(word) point_init::abs16s1_return#2 abs16s1_return zp ZP_WORD:5 1.0 +(word~) point_init::abs16s1_return#5 abs16s1_return zp ZP_WORD:5 4.0 +(word~) point_init::abs16s1_return#6 abs16s1_return zp ZP_WORD:5 4.0 (signed word) point_init::abs16s1_w (label) point_init::abs16s2 (bool~) point_init::abs16s2_$0 (word~) point_init::abs16s2_$1 (signed word~) point_init::abs16s2_$2 -(signed word) point_init::abs16s2_$2#0 abs16s2_$2 zp ZP_WORD:5 2.0 +(signed word) point_init::abs16s2_$2#0 abs16s2_$2 zp ZP_WORD:7 2.0 (word~) point_init::abs16s2_$3 (label) point_init::abs16s2_@1 (label) point_init::abs16s2_@return (word) point_init::abs16s2_return -(word) point_init::abs16s2_return#2 abs16s2_return zp ZP_WORD:5 6.0 -(word~) point_init::abs16s2_return#5 abs16s2_return zp ZP_WORD:5 4.0 -(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:5 4.0 +(word) point_init::abs16s2_return#2 abs16s2_return zp ZP_WORD:7 6.0 +(word~) point_init::abs16s2_return#5 abs16s2_return zp ZP_WORD:7 4.0 +(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:7 4.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.71875 +(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.6969696969696968 (byte) point_init::point_idx1 -(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:11 0.375 +(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:13 0.36363636363636365 (signed word) point_init::x_diff -(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:9 0.5555555555555556 +(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:11 0.5555555555555556 (signed word) point_init::x_stepf (signed word) point_init::x_stepf#0 x_stepf zp ZP_WORD:5 4.0 (signed word) point_init::y_diff -(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:7 0.5 +(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:14 0.5 +(signed word) rem16s +(signed word) rem16s#13 rem16s zp ZP_WORD:3 0.9999999999999999 +(signed word) rem16s#15 rem16s zp ZP_WORD:3 0.7222222222222223 +(signed word) rem16s#2 rem16s zp ZP_WORD:3 2.0 +(signed word) rem16s#3 rem16s zp ZP_WORD:3 0.75 +(signed word~) rem16s#57 rem16s zp ZP_WORD:3 4.0 +(word) rem16u +(word) rem16u#18 rem16u zp ZP_WORD:9 0.9999999999999999 +(word) rem16u#21 rem16u zp ZP_WORD:9 0.7222222222222223 +(signed byte) rem8s +(byte) rem8u (void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) (label) screen_fill::@1 (label) screen_fill::@2 @@ -5182,10 +6047,11 @@ FINAL SYMBOL TABLE (const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ] -zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ] -zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::$3 bitmap_plot::plotter#1 ] -zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ] -zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ] +zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ] +zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 bitmap_plot::$3 bitmap_plot::plotter#1 ] +zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ] +zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 bitmap_plot::$1 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] @@ -5196,7 +6062,8 @@ reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ main::$9 ] reg byte y [ bitmap_plot::y#0 ] reg byte a [ bitmap_plot::$2 ] -zp ZP_BYTE:11 [ point_init::point_idx1#0 ] +zp ZP_BYTE:13 [ point_init::point_idx1#0 ] +zp ZP_WORD:14 [ point_init::$4 point_init::y_diff#0 ] reg byte a [ point_init::$13 ] reg byte a [ point_init::$14 ] reg byte a [ divr16u::$1 ] @@ -5208,7 +6075,7 @@ reg byte a [ bitmap_init::$7 ] FINAL ASSEMBLER -Score: 21471 +Score: 21640 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -5231,12 +6098,14 @@ Score: 21471 .label BITMAP = $a000 .label SCREEN = $8800 .const DELAY = 8 + .label rem16s = 3 + .label rem16u = 9 //SEG2 @begin -//SEG3 [1] phi from @begin to @18 [phi:@begin->@18] -//SEG4 @18 +//SEG3 [1] phi from @begin to @19 [phi:@begin->@19] +//SEG4 @19 //SEG5 [2] call main jsr main -//SEG6 [3] phi from @18 to @end [phi:@18->@end] +//SEG6 [3] phi from @19 to @end [phi:@19->@end] //SEG7 @end //SEG8 main main: { @@ -5271,7 +6140,7 @@ main: { lda #toD0181_return sta D018 //SEG23 [13] call bitmap_init - //SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] + //SEG24 [133] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init] jsr bitmap_init //SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17] //SEG26 main::@17 @@ -5280,74 +6149,82 @@ main: { //SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18] //SEG29 main::@18 //SEG30 [17] call screen_fill - //SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] + //SEG31 [112] phi from main::@18 to screen_fill [phi:main::@18->screen_fill] jsr screen_fill //SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1] - //SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1 - lda #0 + //SEG33 [18] phi (signed word) rem16s#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vwsz1=vbuc1 + lda #<0 + sta rem16s + sta rem16s+1 + //SEG34 [18] phi (word) rem16u#21 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#1] -- vwuz1=vbuc1 + sta rem16u + sta rem16u+1 + //SEG35 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#2] -- vbuz1=vbuc1 sta i - //SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] - //SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy - //SEG36 main::@1 + //SEG36 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1] + //SEG37 [18] phi (signed word) rem16s#15 = (signed word) rem16s#13 [phi:main::@21->main::@1#0] -- register_copy + //SEG38 [18] phi (word) rem16u#21 = (word) rem16u#18 [phi:main::@21->main::@1#1] -- register_copy + //SEG39 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#2] -- register_copy + //SEG40 main::@1 b1: - //SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 + //SEG41 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 // (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy zp ZP_BYTE:2 - //SEG38 [20] call point_init + //SEG42 [20] call point_init jsr point_init - //SEG39 main::@20 - //SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 + //SEG43 main::@20 + //SEG44 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1 lda i lsr tax - //SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 + //SEG45 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2 ldy i lda x_start,y sta bitmap_plot.x lda x_start+1,y sta bitmap_plot.x+1 - //SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG46 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx ldy y_start,x - //SEG43 [24] call bitmap_plot + //SEG47 [24] call bitmap_plot jsr bitmap_plot - //SEG44 main::@21 - //SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + //SEG48 main::@21 + //SEG49 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 lda i clc adc #2 sta i - //SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG50 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1 cmp #8 bne b1 - //SEG47 main::@5 + //SEG51 main::@5 b5: - //SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 + //SEG52 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1 lda RASTER cmp #$ff bne b5 - //SEG49 main::@7 - //SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 + //SEG53 main::@7 + //SEG54 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1 inc BORDERCOL jmp b5 } -//SEG51 bitmap_plot +//SEG55 bitmap_plot bitmap_plot: { - .label _1 = 7 - .label x = 3 - .label plotter = 5 - .label _3 = 5 - //SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy + .label _1 = $b + .label x = 5 + .label plotter = 7 + .label _3 = 7 + //SEG56 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta _3+1 lda bitmap_plot_ylo,y sta _3 - //SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 + //SEG57 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1 lda x and #<$fff8 sta _1 lda x+1 and #>$fff8 sta _1+1 - //SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 + //SEG58 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 lda plotter clc adc _1 @@ -5355,39 +6232,39 @@ bitmap_plot: { lda plotter+1 adc _1+1 sta plotter+1 - //SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 + //SEG59 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1 lda x - //SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa + //SEG60 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa tay lda bitmap_plot_bit,y ldy #0 ora (plotter),y sta (plotter),y - //SEG57 bitmap_plot::@return - //SEG58 [34] return + //SEG61 bitmap_plot::@return + //SEG62 [34] return rts } -//SEG59 point_init +//SEG63 point_init point_init: { - .label _4 = 7 - .label _5 = 3 - .label _16 = 3 - .label _17 = 3 - .label _18 = 3 + .label _4 = $e + .label _5 = 5 + .label _16 = 5 + .label _17 = 5 + .label _18 = 5 .label point_idx = 2 - .label point_idx1 = $b - .label y_diff = 7 - .label abs16s1__2 = 3 - .label abs16s1_return = 3 - .label abs16s2__2 = 5 - .label abs16s2_return = 5 + .label point_idx1 = $d + .label y_diff = $e + .label abs16s1__2 = 5 + .label abs16s1_return = 5 + .label abs16s2__2 = 7 + .label abs16s2_return = 7 .label x_stepf = 5 - .label x_diff = 9 - //SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 + .label x_diff = $b + //SEG64 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1 lda point_idx lsr sta point_idx1 - //SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 + //SEG65 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2 ldy point_idx sec lda x_end,y @@ -5396,18 +6273,18 @@ point_init: { lda x_end+1,y sbc x_start+1,y sta x_diff+1 - //SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + //SEG66 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_end,y sta _4 lda #0 sta _4+1 - //SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 + //SEG67 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2 lda y_start,y sta _5 lda #0 sta _5+1 - //SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 + //SEG68 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2 lda y_diff sec sbc _5 @@ -5415,40 +6292,40 @@ point_init: { lda y_diff+1 sbc _5+1 sta y_diff+1 - //SEG65 point_init::abs16s1 - //SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 + //SEG69 point_init::abs16s1 + //SEG70 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1 lda x_diff+1 bpl !abs16s1_b1+ jmp abs16s1_b1 !abs16s1_b1: - //SEG67 point_init::@12 - //SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 + //SEG71 point_init::@12 + //SEG72 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2 lda x_diff sta abs16s1_return lda x_diff+1 sta abs16s1_return+1 - //SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return] - //SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy - //SEG71 point_init::abs16s1_@return - //SEG72 point_init::abs16s2 + //SEG73 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return] + //SEG74 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy + //SEG75 point_init::abs16s1_@return + //SEG76 point_init::abs16s2 abs16s2: - //SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 + //SEG77 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1 lda y_diff+1 bpl !abs16s2_b1+ jmp abs16s2_b1 !abs16s2_b1: - //SEG74 point_init::@13 - //SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 + //SEG78 point_init::@13 + //SEG79 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2 lda y_diff sta abs16s2_return lda y_diff+1 sta abs16s2_return+1 - //SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return] - //SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy - //SEG78 point_init::abs16s2_@return - //SEG79 point_init::@10 + //SEG80 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return] + //SEG81 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy + //SEG82 point_init::abs16s2_@return + //SEG83 point_init::@10 b10: - //SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 + //SEG84 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1 lda abs16s1_return cmp abs16s2_return lda abs16s1_return+1 @@ -5457,9 +6334,12 @@ point_init: { eor #$80 !: bpl b1 - //SEG81 point_init::@2 + //SEG85 [47] phi from point_init::@10 point_init::@11 to point_init::@2 [phi:point_init::@10/point_init::@11->point_init::@2] + //SEG86 [47] phi (signed word) rem16s#13 = (signed word) rem16s#15 [phi:point_init::@10/point_init::@11->point_init::@2#0] -- register_copy + //SEG87 [47] phi (word) rem16u#18 = (word) rem16u#21 [phi:point_init::@10/point_init::@11->point_init::@2#1] -- register_copy + //SEG88 point_init::@2 b2: - //SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 + //SEG89 [48] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4 ldy point_idx lda x_start,y sta _16 @@ -5473,18 +6353,18 @@ point_init: { rol _16+1 asl _16 rol _16+1 - //SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG90 [49] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2 lda _16 sta x_cur,y lda _16+1 sta x_cur+1,y - //SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 + //SEG91 [50] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy point_idx1 lda y_start,y sta _17 lda #0 sta _17+1 - //SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 + //SEG92 [51] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4 asl _18 rol _18+1 asl _18 @@ -5493,64 +6373,67 @@ point_init: { rol _18+1 asl _18 rol _18+1 - //SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 + //SEG93 [52] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2 ldy point_idx lda _18 sta y_cur,y lda _18+1 sta y_cur+1,y - //SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG94 [53] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2 ldy point_idx1 lda #DELAY sta delay,y - //SEG88 point_init::@return - //SEG89 [53] return + //SEG95 point_init::@return + //SEG96 [54] return rts - //SEG90 point_init::@1 + //SEG97 point_init::@1 b1: - //SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 + //SEG98 [55] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1 lda x_diff+1 bmi b3 - //SEG92 point_init::@7 - //SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 + //SEG99 point_init::@7 + //SEG100 [56] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2 ldy point_idx lda #$10 sta x_add,y - //SEG94 point_init::@4 + //SEG101 point_init::@4 b4: - //SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 - // (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:9 - //SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 - // (signed word) divr16s::rem#0 = (signed word) point_init::y_diff#0 // register copy zp ZP_WORD:7 - //SEG97 [58] call divr16s - //SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] + //SEG102 [57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 + // (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:11 + //SEG103 [58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2 + lda y_diff + sta divr16s.rem + lda y_diff+1 + sta divr16s.rem+1 + //SEG104 [59] call divr16s + //SEG105 [70] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s] jsr divr16s - //SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 + //SEG106 [60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 // (signed word) divr16s::return#3 = (signed word) divr16s::return#2 // register copy zp ZP_WORD:5 - //SEG100 point_init::@11 - //SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 + //SEG107 point_init::@11 + //SEG108 [61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 // (signed word) point_init::x_stepf#0 = (signed word) divr16s::return#3 // register copy zp ZP_WORD:5 - //SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 + //SEG109 [62] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1 lda x_stepf+1 - //SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG110 [63] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa + //SEG111 [64] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa ldy point_idx1 sta y_add,y jmp b2 - //SEG105 point_init::@3 + //SEG112 point_init::@3 b3: - //SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 + //SEG113 [65] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2 ldy point_idx lda #-$10 sta x_add,y jmp b4 - //SEG107 point_init::abs16s2_@1 + //SEG114 point_init::abs16s2_@1 abs16s2_b1: - //SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 + //SEG115 [66] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2 sec lda y_diff eor #$ff @@ -5560,12 +6443,12 @@ point_init: { eor #$ff adc #0 sta abs16s2__2+1 - //SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 - // (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:5 + //SEG116 [67] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 + // (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:7 jmp b10 - //SEG110 point_init::abs16s1_@1 + //SEG117 point_init::abs16s1_@1 abs16s1_b1: - //SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 + //SEG118 [68] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2 sec lda x_diff eor #$ff @@ -5575,70 +6458,80 @@ point_init: { eor #$ff adc #0 sta abs16s1__2+1 - //SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 - // (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:3 + //SEG119 [69] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 + // (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:5 jmp abs16s2 } -//SEG113 divr16s +//SEG120 divr16s divr16s: { .const dividend = 0 - .label _7 = 7 - .label _11 = 9 + .label _7 = 9 + .label _11 = $b .label resultu = 5 .label return = 5 - .label divisor = 9 - .label rem = 7 + .label divisor = $b + .label rem = 9 .label dividendu = 3 - .label divisoru = 9 - .label remu = 7 - //SEG114 divr16s::@16 - //SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 + .label divisoru = $b + .label remu = 9 + //SEG121 divr16s::@16 + //SEG122 [71] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1 lda rem+1 bmi b1 - //SEG116 divr16s::@17 - //SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 - // (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:7 - //SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] - //SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy - //SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG123 divr16s::@17 + //SEG124 [72] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 + // (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:9 + //SEG125 [73] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2] + //SEG126 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy + //SEG127 [73] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1 lda #dividend sta dividendu+1 - //SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG128 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1 ldy #0 - //SEG122 divr16s::@2 + //SEG129 divr16s::@2 b2: - //SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 + //SEG130 [74] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1 lda divisor+1 bmi b3 - //SEG124 divr16s::@18 - //SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 - // (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:9 - //SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] - //SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy - //SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy - //SEG129 divr16s::@4 + //SEG131 divr16s::@18 + //SEG132 [75] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 + // (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:11 + //SEG133 [76] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4] + //SEG134 [76] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy + //SEG135 [76] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy + //SEG136 divr16s::@4 b4: - //SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 + //SEG137 [77] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 // (word) divr16u::dividend#1 = (word) divr16s::dividendu#3 // register copy zp ZP_WORD:3 - //SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 - // (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:9 - //SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 - // (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:7 - //SEG133 [79] call divr16u - //SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] + //SEG138 [78] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 + // (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:11 + //SEG139 [79] (word) divr16u::rem#3 ← (word) divr16s::remu#3 + // (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:9 + //SEG140 [80] call divr16u + //SEG141 [95] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u] jsr divr16u - //SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG142 [81] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:5 - //SEG136 divr16s::@15 - //SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 + //SEG143 divr16s::@15 + //SEG144 [82] (word) divr16s::resultu#0 ← (word) divr16u::return#2 // (word) divr16s::resultu#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:5 - //SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 + //SEG145 [83] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1 cpy #0 - beq breturn - //SEG139 divr16s::@11 - //SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 + beq b19 + //SEG146 divr16s::@11 + //SEG147 [84] (signed word) rem16s#2 ← - (signed word)(word) divr16u::rem#10 -- vwsz1=_neg_vwsz2 + sec + lda divr16u.rem + eor #$ff + adc #0 + sta rem16s + lda divr16u.rem+1 + eor #$ff + adc #0 + sta rem16s+1 + //SEG148 [85] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1 sec lda return eor #$ff @@ -5648,18 +6541,26 @@ divr16s: { eor #$ff adc #0 sta return+1 - //SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] - //SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy - //SEG143 divr16s::@return + //SEG149 [86] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return] + //SEG150 [86] phi (signed word) rem16s#3 = (signed word) rem16s#2 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy + //SEG151 [86] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#1] -- register_copy + //SEG152 divr16s::@return breturn: - //SEG144 [85] return + //SEG153 [87] return rts - //SEG145 divr16s::@19 - //SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 + //SEG154 divr16s::@19 + b19: + //SEG155 [88] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 // (signed word~) divr16s::return#7 = (signed word)(word) divr16s::resultu#0 // register copy zp ZP_WORD:5 - //SEG147 divr16s::@3 + //SEG156 [89] (signed word~) rem16s#57 ← (signed word)(word) divr16u::rem#10 -- vwsz1=vwsz2 + lda divr16u.rem + sta rem16s + lda divr16u.rem+1 + sta rem16s+1 + jmp breturn + //SEG157 divr16s::@3 b3: - //SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 + //SEG158 [90] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1 sec lda _11 eor #$ff @@ -5669,16 +6570,16 @@ divr16s: { eor #$ff adc #0 sta _11+1 - //SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 + //SEG159 [91] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1 tya eor #1 tay - //SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 - // (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:9 + //SEG160 [92] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 + // (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:11 jmp b4 - //SEG151 divr16s::@1 + //SEG161 divr16s::@1 b1: - //SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 + //SEG162 [93] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1 sec lda _7 eor #$ff @@ -5688,68 +6589,68 @@ divr16s: { eor #$ff adc #0 sta _7+1 - //SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 - // (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:7 - //SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] - //SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy - //SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 + //SEG163 [94] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 + // (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:9 + //SEG164 [73] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2] + //SEG165 [73] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy + //SEG166 [73] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1 lda #<-dividend sta dividendu lda #>-dividend sta dividendu+1 - //SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 + //SEG167 [73] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1 ldy #1 jmp b2 } -//SEG158 divr16u +//SEG168 divr16u divr16u: { - .label rem = 7 + .label rem = 9 .label dividend = 3 .label quotient = 5 .label return = 5 - .label divisor = 9 - //SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + .label divisor = $b + //SEG169 [96] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG170 [96] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG171 [96] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy - //SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy - //SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG169 divr16u::@1 + //SEG172 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy + //SEG173 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy + //SEG174 [96] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG175 [96] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG176 [96] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG177 [96] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG178 [96] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG179 divr16u::@1 b1: - //SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG180 [97] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG181 [98] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG182 [99] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG183 [100] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG174 divr16u::@4 - //SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG184 divr16u::@4 + //SEG185 [101] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG178 divr16u::@2 + //SEG186 [102] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG187 [102] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG188 divr16u::@2 b2: - //SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG189 [103] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG190 [104] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 + //SEG191 [105] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1 lda rem+1 cmp divisor+1 bcc b3 @@ -5758,13 +6659,13 @@ divr16u: { cmp divisor bcc b3 !: - //SEG182 divr16u::@5 - //SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG192 divr16u::@5 + //SEG193 [106] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG194 [107] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2 lda rem sec sbc divisor @@ -5772,195 +6673,195 @@ divr16u: { lda rem+1 sbc divisor+1 sta rem+1 - //SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG188 divr16u::@3 + //SEG195 [108] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG196 [108] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG197 [108] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG198 divr16u::@3 b3: - //SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG199 [109] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG200 [110] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG191 divr16u::@return - //SEG192 [108] return + //SEG201 divr16u::@return + //SEG202 [111] return rts } -//SEG193 screen_fill +//SEG203 screen_fill screen_fill: { .const ch = $10 .label screen = 3 .label y = 2 - //SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] - //SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 + //SEG204 [113] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1] + //SEG205 [113] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 + //SEG206 [113] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 - //SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] - //SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy - //SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy - //SEG200 screen_fill::@1 + //SEG207 [113] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1] + //SEG208 [113] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy + //SEG209 [113] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy + //SEG210 screen_fill::@1 b1: - //SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] - //SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 + //SEG211 [114] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2] + //SEG212 [114] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy - //SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] - //SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy - //SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy - //SEG207 screen_fill::@2 + //SEG213 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy + //SEG214 [114] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2] + //SEG215 [114] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy + //SEG216 [114] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy + //SEG217 screen_fill::@2 b2: - //SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 + //SEG218 [115] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1 lda #ch ldy #0 sta (screen),y - //SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 + //SEG219 [116] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx + //SEG220 [117] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx inx - //SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG221 [118] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b2 - //SEG212 screen_fill::@3 - //SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 + //SEG222 screen_fill::@3 + //SEG223 [119] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG224 [120] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1 - //SEG215 screen_fill::@return - //SEG216 [118] return + //SEG225 screen_fill::@return + //SEG226 [121] return rts } -//SEG217 bitmap_clear +//SEG227 bitmap_clear bitmap_clear: { .label bitmap = 3 .label y = 2 .label _3 = 3 - //SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG228 [122] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_ylo sta _3 lda bitmap_plot_yhi sta _3+1 - //SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 + //SEG229 [123] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 // (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3 - //SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] - //SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 + //SEG230 [124] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] + //SEG231 [124] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta y - //SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy - //SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] - //SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy - //SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy - //SEG226 bitmap_clear::@1 + //SEG232 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy + //SEG233 [124] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] + //SEG234 [124] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy + //SEG235 [124] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy + //SEG236 bitmap_clear::@1 b1: - //SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] - //SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 + //SEG237 [125] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] + //SEG238 [125] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy - //SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] - //SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy - //SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy - //SEG233 bitmap_clear::@2 + //SEG239 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy + //SEG240 [125] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] + //SEG241 [125] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy + //SEG242 [125] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy + //SEG243 bitmap_clear::@2 b2: - //SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 + //SEG244 [126] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y - //SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 + //SEG245 [127] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc bitmap bne !+ inc bitmap+1 !: - //SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx + //SEG246 [128] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx - //SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 + //SEG247 [129] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne b2 - //SEG238 bitmap_clear::@3 - //SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 + //SEG248 bitmap_clear::@3 + //SEG249 [130] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc y - //SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG250 [131] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$28 bne b1 - //SEG241 bitmap_clear::@return - //SEG242 [129] return + //SEG251 bitmap_clear::@return + //SEG252 [132] return rts } -//SEG243 bitmap_init +//SEG253 bitmap_init bitmap_init: { .label _3 = 2 .label yoffs = 3 - //SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] - //SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 + //SEG254 [134] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] + //SEG255 [134] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 + //SEG256 [134] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 - //SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] - //SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy - //SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy - //SEG250 bitmap_init::@1 + //SEG257 [134] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] + //SEG258 [134] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy + //SEG259 [134] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy + //SEG260 bitmap_init::@1 b1: - //SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG261 [135] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x - //SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 + //SEG262 [136] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1 lsr - //SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 + //SEG263 [137] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] - //SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 + //SEG264 [138] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] + //SEG265 [138] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 - //SEG256 bitmap_init::@2 + //SEG266 bitmap_init::@2 b2: - //SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx + //SEG267 [139] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx - //SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 + //SEG268 [140] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] - //SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 + //SEG269 [141] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] + //SEG270 [141] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta yoffs+1 - //SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 + //SEG271 [141] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 - //SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] - //SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy - //SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy - //SEG265 bitmap_init::@3 + //SEG272 [141] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] + //SEG273 [141] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy + //SEG274 [141] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy + //SEG275 bitmap_init::@3 b3: - //SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 + //SEG276 [142] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _3 - //SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 + //SEG277 [143] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda yoffs - //SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa + //SEG278 [144] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora _3 - //SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG279 [145] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x - //SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 + //SEG280 [146] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa + //SEG281 [147] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x - //SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 + //SEG282 [148] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 + //SEG283 [149] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG274 bitmap_init::@7 - //SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 + //SEG284 bitmap_init::@7 + //SEG285 [150] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda yoffs adc #<$28*8 @@ -5968,22 +6869,22 @@ bitmap_init: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] - //SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy - //SEG278 bitmap_init::@4 + //SEG286 [151] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4] + //SEG287 [151] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy + //SEG288 bitmap_init::@4 b4: - //SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx + //SEG289 [152] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx - //SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 + //SEG290 [153] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG281 bitmap_init::@return - //SEG282 [151] return + //SEG291 bitmap_init::@return + //SEG292 [154] return rts - //SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] - //SEG284 bitmap_init::@10 - //SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] - //SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy + //SEG293 [155] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10] + //SEG294 bitmap_init::@10 + //SEG295 [138] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2] + //SEG296 [138] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy } x_start: .word $a, $14, $1e, $1e y_start: .byte $a, $a, $a, $14 diff --git a/src/test/ref/line-anim.sym b/src/test/ref/line-anim.sym index 692490052..83ae7590b 100644 --- a/src/test/ref/line-anim.sym +++ b/src/test/ref/line-anim.sym @@ -1,38 +1,105 @@ -(label) @18 +(label) @19 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 (byte*) BITMAP (const byte*) BITMAP#0 BITMAP = ((byte*))(word/dword/signed dword) 40960 +(byte) BLACK +(byte) BLUE (byte*) BORDERCOL (const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT (byte*) CIA2_PORT_A (const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576 (byte*) CIA2_PORT_A_DDR (const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN (byte*) D011 (const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265 +(byte*) D016 (byte*) D018 (const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272 +(byte) DARK_GREY (byte) DELAY (const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) PROCPORT_BASIC_KERNEL_IO (byte*) PROCPORT_DDR (const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 (byte) PROCPORT_DDR_MEMORY_MASK (const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM (byte) PROCPORT_RAM_IO (const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53 +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 34816 +(byte) SIZE +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS (byte) VIC_BMM (const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL (byte) VIC_DEN (const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16 +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY (byte) VIC_RSEL (const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8 +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (void()) bitmap_clear() (word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0 (label) bitmap_clear::@1 @@ -79,14 +146,14 @@ (byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 6.111111111111112 (byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 11.0 (void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y) -(word~) bitmap_plot::$1 $1 zp ZP_WORD:7 4.0 +(word~) bitmap_plot::$1 $1 zp ZP_WORD:11 4.0 (byte~) bitmap_plot::$2 reg byte a 4.0 -(word~) bitmap_plot::$3 $3 zp ZP_WORD:5 1.0 +(word~) bitmap_plot::$3 $3 zp ZP_WORD:7 1.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter -(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:5 3.0 +(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:7 3.0 (word) bitmap_plot::x -(word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0 +(word) bitmap_plot::x#0 x zp ZP_WORD:5 3.0 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 reg byte y 15.0 (byte[256]) bitmap_plot_bit @@ -98,8 +165,8 @@ (byte[4]) delay (const byte[4]) delay#0 delay = { fill( 4, 0) } (signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem) -(signed word~) divr16s::$11 $11 zp ZP_WORD:9 1.0 -(signed word~) divr16s::$7 $7 zp ZP_WORD:7 2.0 +(signed word~) divr16s::$11 $11 zp ZP_WORD:11 1.0 +(signed word~) divr16s::$7 $7 zp ZP_WORD:9 2.0 (label) divr16s::@1 (label) divr16s::@11 (label) divr16s::@15 @@ -116,28 +183,28 @@ (word) divr16s::dividendu (word) divr16s::dividendu#3 dividendu zp ZP_WORD:3 0.2857142857142857 (signed word) divr16s::divisor -(signed word) divr16s::divisor#0 divisor zp ZP_WORD:9 0.6666666666666666 +(signed word) divr16s::divisor#0 divisor zp ZP_WORD:11 0.6666666666666666 (word) divr16s::divisoru -(word) divr16s::divisoru#3 divisoru zp ZP_WORD:9 3.0 -(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:9 4.0 -(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:9 4.0 +(word) divr16s::divisoru#3 divisoru zp ZP_WORD:11 3.0 +(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:11 4.0 +(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:11 4.0 (byte) divr16s::neg (byte) divr16s::neg#2 reg byte y 2.0 (byte) divr16s::neg#3 reg byte y 1.0 (byte) divr16s::neg#4 reg byte y 0.8571428571428571 (signed word) divr16s::rem -(signed word) divr16s::rem#0 rem zp ZP_WORD:7 2.0 +(signed word) divr16s::rem#0 rem zp ZP_WORD:9 2.0 (word) divr16s::remu -(word) divr16s::remu#3 remu zp ZP_WORD:7 0.6666666666666666 -(word~) divr16s::remu#7 remu zp ZP_WORD:7 4.0 -(word~) divr16s::remu#8 remu zp ZP_WORD:7 4.0 +(word) divr16s::remu#3 remu zp ZP_WORD:9 0.6666666666666666 +(word~) divr16s::remu#7 remu zp ZP_WORD:9 4.0 +(word~) divr16s::remu#8 remu zp ZP_WORD:9 4.0 (word) divr16s::resultu -(word) divr16s::resultu#0 resultu zp ZP_WORD:5 1.0 +(word) divr16s::resultu#0 resultu zp ZP_WORD:5 0.6666666666666666 (signed word) divr16s::return (signed word) divr16s::return#1 return zp ZP_WORD:5 4.0 (signed word) divr16s::return#2 return zp ZP_WORD:5 2.0 (signed word) divr16s::return#3 return zp ZP_WORD:5 4.0 -(signed word~) divr16s::return#7 return zp ZP_WORD:5 4.0 +(signed word~) divr16s::return#7 return zp ZP_WORD:5 2.0 (word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem) (byte~) divr16u::$1 reg byte a 202.0 (byte~) divr16u::$2 reg byte a 202.0 @@ -152,7 +219,7 @@ (word) divr16u::dividend#1 dividend zp ZP_WORD:3 1.0 (word) divr16u::dividend#2 dividend zp ZP_WORD:3 43.57142857142858 (word) divr16u::divisor -(word) divr16u::divisor#0 divisor zp ZP_WORD:9 11.333333333333332 +(word) divr16u::divisor#0 divisor zp ZP_WORD:11 11.333333333333332 (byte) divr16u::i (byte) divr16u::i#1 reg byte x 151.5 (byte) divr16u::i#2 reg byte x 15.538461538461538 @@ -161,16 +228,17 @@ (word) divr16u::quotient#2 quotient zp ZP_WORD:5 101.0 (word) divr16u::quotient#3 quotient zp ZP_WORD:5 25.25 (word) divr16u::rem -(word) divr16u::rem#0 rem zp ZP_WORD:7 75.75 -(word) divr16u::rem#1 rem zp ZP_WORD:7 202.0 -(word) divr16u::rem#2 rem zp ZP_WORD:7 202.0 -(word) divr16u::rem#3 rem zp ZP_WORD:7 2.0 -(word) divr16u::rem#4 rem zp ZP_WORD:7 204.0 -(word) divr16u::rem#5 rem zp ZP_WORD:7 101.0 -(word) divr16u::rem#9 rem zp ZP_WORD:7 101.0 +(word) divr16u::rem#0 rem zp ZP_WORD:9 75.75 +(word) divr16u::rem#1 rem zp ZP_WORD:9 202.0 +(word) divr16u::rem#10 rem zp ZP_WORD:9 15.25 +(word) divr16u::rem#2 rem zp ZP_WORD:9 202.0 +(word) divr16u::rem#3 rem zp ZP_WORD:9 2.0 +(word) divr16u::rem#4 rem zp ZP_WORD:9 204.0 +(word) divr16u::rem#5 rem zp ZP_WORD:9 101.0 (word) divr16u::return (word) divr16u::return#0 return zp ZP_WORD:5 61.0 (word) divr16u::return#2 return zp ZP_WORD:5 4.0 +(byte[4]) frame (void()) main() (byte~) main::$9 reg byte x 11.0 (label) main::@1 @@ -213,11 +281,11 @@ (void()) point_init((byte) point_init::point_idx) (byte~) point_init::$13 reg byte a 4.0 (byte~) point_init::$14 reg byte a 2.0 -(word~) point_init::$16 $16 zp ZP_WORD:3 4.0 -(word~) point_init::$17 $17 zp ZP_WORD:3 4.0 -(word~) point_init::$18 $18 zp ZP_WORD:3 4.0 -(signed word~) point_init::$4 $4 zp ZP_WORD:7 2.0 -(signed word~) point_init::$5 $5 zp ZP_WORD:3 4.0 +(word~) point_init::$16 $16 zp ZP_WORD:5 4.0 +(word~) point_init::$17 $17 zp ZP_WORD:5 4.0 +(word~) point_init::$18 $18 zp ZP_WORD:5 4.0 +(signed word~) point_init::$4 $4 zp ZP_WORD:14 2.0 +(signed word~) point_init::$5 $5 zp ZP_WORD:5 4.0 (label) point_init::@1 (label) point_init::@10 (label) point_init::@11 @@ -232,38 +300,49 @@ (bool~) point_init::abs16s1_$0 (word~) point_init::abs16s1_$1 (signed word~) point_init::abs16s1_$2 -(signed word) point_init::abs16s1_$2#0 abs16s1_$2 zp ZP_WORD:3 2.0 +(signed word) point_init::abs16s1_$2#0 abs16s1_$2 zp ZP_WORD:5 2.0 (word~) point_init::abs16s1_$3 (label) point_init::abs16s1_@1 (label) point_init::abs16s1_@return (word) point_init::abs16s1_return -(word) point_init::abs16s1_return#2 abs16s1_return zp ZP_WORD:3 1.0 -(word~) point_init::abs16s1_return#5 abs16s1_return zp ZP_WORD:3 4.0 -(word~) point_init::abs16s1_return#6 abs16s1_return zp ZP_WORD:3 4.0 +(word) point_init::abs16s1_return#2 abs16s1_return zp ZP_WORD:5 1.0 +(word~) point_init::abs16s1_return#5 abs16s1_return zp ZP_WORD:5 4.0 +(word~) point_init::abs16s1_return#6 abs16s1_return zp ZP_WORD:5 4.0 (signed word) point_init::abs16s1_w (label) point_init::abs16s2 (bool~) point_init::abs16s2_$0 (word~) point_init::abs16s2_$1 (signed word~) point_init::abs16s2_$2 -(signed word) point_init::abs16s2_$2#0 abs16s2_$2 zp ZP_WORD:5 2.0 +(signed word) point_init::abs16s2_$2#0 abs16s2_$2 zp ZP_WORD:7 2.0 (word~) point_init::abs16s2_$3 (label) point_init::abs16s2_@1 (label) point_init::abs16s2_@return (word) point_init::abs16s2_return -(word) point_init::abs16s2_return#2 abs16s2_return zp ZP_WORD:5 6.0 -(word~) point_init::abs16s2_return#5 abs16s2_return zp ZP_WORD:5 4.0 -(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:5 4.0 +(word) point_init::abs16s2_return#2 abs16s2_return zp ZP_WORD:7 6.0 +(word~) point_init::abs16s2_return#5 abs16s2_return zp ZP_WORD:7 4.0 +(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:7 4.0 (signed word) point_init::abs16s2_w (byte) point_init::point_idx -(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.71875 +(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.6969696969696968 (byte) point_init::point_idx1 -(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:11 0.375 +(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:13 0.36363636363636365 (signed word) point_init::x_diff -(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:9 0.5555555555555556 +(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:11 0.5555555555555556 (signed word) point_init::x_stepf (signed word) point_init::x_stepf#0 x_stepf zp ZP_WORD:5 4.0 (signed word) point_init::y_diff -(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:7 0.5 +(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:14 0.5 +(signed word) rem16s +(signed word) rem16s#13 rem16s zp ZP_WORD:3 0.9999999999999999 +(signed word) rem16s#15 rem16s zp ZP_WORD:3 0.7222222222222223 +(signed word) rem16s#2 rem16s zp ZP_WORD:3 2.0 +(signed word) rem16s#3 rem16s zp ZP_WORD:3 0.75 +(signed word~) rem16s#57 rem16s zp ZP_WORD:3 4.0 +(word) rem16u +(word) rem16u#18 rem16u zp ZP_WORD:9 0.9999999999999999 +(word) rem16u#21 rem16u zp ZP_WORD:9 0.7222222222222223 +(signed byte) rem8s +(byte) rem8u (void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch) (label) screen_fill::@1 (label) screen_fill::@2 @@ -299,10 +378,11 @@ (const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 } zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ] -zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ] -zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::$3 bitmap_plot::plotter#1 ] -zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ] -zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ] +zp ZP_WORD:3 [ rem16s#15 rem16s#13 rem16s#3 rem16s#2 rem16s#57 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] +zp ZP_WORD:5 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ] +zp ZP_WORD:7 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 bitmap_plot::$3 bitmap_plot::plotter#1 ] +zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 rem16u#21 rem16u#18 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ] +zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 bitmap_plot::$1 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] @@ -313,7 +393,8 @@ reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ main::$9 ] reg byte y [ bitmap_plot::y#0 ] reg byte a [ bitmap_plot::$2 ] -zp ZP_BYTE:11 [ point_init::point_idx1#0 ] +zp ZP_BYTE:13 [ point_init::point_idx1#0 ] +zp ZP_WORD:14 [ point_init::$4 point_init::y_diff#0 ] reg byte a [ point_init::$13 ] reg byte a [ point_init::$14 ] reg byte a [ divr16u::$1 ] diff --git a/src/test/ref/linegen.log b/src/test/ref/linegen.log index 1827252f8..56604e44b 100644 --- a/src/test/ref/linegen.log +++ b/src/test/ref/linegen.log @@ -1,10 +1,11 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@2 @2: scope:[] from @begin (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@8 + to:@5 divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3 (word) divr16u::divisor#6 ← phi( lin16u_gen/(word) divr16u::divisor#0 lin16u_gen::@3/(word) divr16u::divisor#1 ) (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(word) divr16u::dividend#2 ) @@ -82,8 +83,16 @@ divr16u::@return: scope:[divr16u] from divr16u::@6 (word) rem16u#2 ← (word) rem16u#11 return to:@return -@8: scope:[] from @2 - (word) rem16u#27 ← phi( @2/(word) rem16u#0 ) +@5: scope:[] from @2 + (word) rem16u#31 ← phi( @2/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @5 + (word) rem16u#29 ← phi( @5/(word) rem16u#31 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@8 +@8: scope:[] from @6 + (word) rem16u#27 ← phi( @6/(word) rem16u#29 ) (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 @@ -271,7 +280,7 @@ main::@5: scope:[main] from main::@4 call print_cls to:main::@6 main::@6: scope:[main] from main::@5 - (word) rem16u#50 ← phi( main::@5/(word) rem16u#5 ) + (word) rem16u#52 ← phi( main::@5/(word) rem16u#5 ) (byte*) print_char_cursor#53 ← phi( main::@5/(byte*) print_char_cursor#14 ) (byte*) print_line_cursor#15 ← phi( main::@5/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#15 @@ -280,7 +289,7 @@ main::@6: scope:[main] from main::@5 call print_str to:main::@7 main::@7: scope:[main] from main::@6 - (word) rem16u#49 ← phi( main::@6/(word) rem16u#50 ) + (word) rem16u#51 ← phi( main::@6/(word) rem16u#52 ) (byte*) print_line_cursor#43 ← phi( main::@6/(byte*) print_line_cursor#5 ) (byte*) print_char_cursor#54 ← phi( main::@6/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#54 @@ -288,7 +297,7 @@ main::@7: scope:[main] from main::@6 call print_word to:main::@8 main::@8: scope:[main] from main::@7 - (word) rem16u#48 ← phi( main::@7/(word) rem16u#49 ) + (word) rem16u#50 ← phi( main::@7/(word) rem16u#51 ) (byte*) print_line_cursor#40 ← phi( main::@7/(byte*) print_line_cursor#43 ) (byte*) print_char_cursor#55 ← phi( main::@7/(byte*) print_char_cursor#7 ) (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#55 @@ -296,7 +305,7 @@ main::@8: scope:[main] from main::@7 call print_str to:main::@9 main::@9: scope:[main] from main::@8 - (word) rem16u#47 ← phi( main::@8/(word) rem16u#48 ) + (word) rem16u#49 ← phi( main::@8/(word) rem16u#50 ) (byte*) print_line_cursor#37 ← phi( main::@8/(byte*) print_line_cursor#40 ) (byte*) print_char_cursor#56 ← phi( main::@8/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#56 @@ -304,7 +313,7 @@ main::@9: scope:[main] from main::@8 call print_word to:main::@10 main::@10: scope:[main] from main::@9 - (word) rem16u#46 ← phi( main::@9/(word) rem16u#47 ) + (word) rem16u#48 ← phi( main::@9/(word) rem16u#49 ) (byte*) print_line_cursor#33 ← phi( main::@9/(byte*) print_line_cursor#37 ) (byte*) print_char_cursor#57 ← phi( main::@9/(byte*) print_char_cursor#7 ) (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#57 @@ -312,7 +321,7 @@ main::@10: scope:[main] from main::@9 call print_str to:main::@11 main::@11: scope:[main] from main::@10 - (word) rem16u#45 ← phi( main::@10/(word) rem16u#46 ) + (word) rem16u#47 ← phi( main::@10/(word) rem16u#48 ) (byte*) print_line_cursor#28 ← phi( main::@10/(byte*) print_line_cursor#33 ) (byte*) print_char_cursor#58 ← phi( main::@10/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#58 @@ -320,14 +329,14 @@ main::@11: scope:[main] from main::@10 call print_word to:main::@12 main::@12: scope:[main] from main::@11 - (word) rem16u#44 ← phi( main::@11/(word) rem16u#45 ) + (word) rem16u#46 ← phi( main::@11/(word) rem16u#47 ) (byte*) print_line_cursor#23 ← phi( main::@11/(byte*) print_line_cursor#28 ) (byte*) print_char_cursor#59 ← phi( main::@11/(byte*) print_char_cursor#7 ) (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#59 call print_ln to:main::@13 main::@13: scope:[main] from main::@12 - (word) rem16u#43 ← phi( main::@12/(word) rem16u#44 ) + (word) rem16u#45 ← phi( main::@12/(word) rem16u#46 ) (byte*) print_char_cursor#60 ← phi( main::@12/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#16 ← phi( main::@12/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#16 @@ -335,7 +344,7 @@ main::@13: scope:[main] from main::@12 (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 main::@1: scope:[main] from main::@13 main::@21 - (word) rem16u#42 ← phi( main::@13/(word) rem16u#43 main::@21/(word) rem16u#34 ) + (word) rem16u#44 ← phi( main::@13/(word) rem16u#45 main::@21/(word) rem16u#36 ) (byte*) print_line_cursor#48 ← phi( main::@13/(byte*) print_line_cursor#6 main::@21/(byte*) print_line_cursor#7 ) (byte*) print_char_cursor#83 ← phi( main::@13/(byte*) print_char_cursor#22 main::@21/(byte*) print_char_cursor#30 ) (byte) main::i#2 ← phi( main::@13/(byte) main::i#0 main::@21/(byte) main::i#1 ) @@ -343,7 +352,7 @@ main::@1: scope:[main] from main::@13 main::@21 call print_byte to:main::@14 main::@14: scope:[main] from main::@1 - (word) rem16u#41 ← phi( main::@1/(word) rem16u#42 ) + (word) rem16u#43 ← phi( main::@1/(word) rem16u#44 ) (byte*) print_line_cursor#46 ← phi( main::@1/(byte*) print_line_cursor#48 ) (byte) main::i#7 ← phi( main::@1/(byte) main::i#2 ) (byte*) print_char_cursor#61 ← phi( main::@1/(byte*) print_char_cursor#10 ) @@ -352,7 +361,7 @@ main::@14: scope:[main] from main::@1 call print_str to:main::@15 main::@15: scope:[main] from main::@14 - (word) rem16u#40 ← phi( main::@14/(word) rem16u#41 ) + (word) rem16u#42 ← phi( main::@14/(word) rem16u#43 ) (byte*) print_line_cursor#44 ← phi( main::@14/(byte*) print_line_cursor#46 ) (byte) main::i#3 ← phi( main::@14/(byte) main::i#7 ) (byte*) print_char_cursor#62 ← phi( main::@14/(byte*) print_char_cursor#2 ) @@ -361,7 +370,7 @@ main::@15: scope:[main] from main::@14 call print_word to:main::@16 main::@16: scope:[main] from main::@15 - (word) rem16u#39 ← phi( main::@15/(word) rem16u#40 ) + (word) rem16u#41 ← phi( main::@15/(word) rem16u#42 ) (byte*) print_line_cursor#41 ← phi( main::@15/(byte*) print_line_cursor#44 ) (byte) main::i#8 ← phi( main::@15/(byte) main::i#3 ) (byte*) print_char_cursor#63 ← phi( main::@15/(byte*) print_char_cursor#7 ) @@ -370,7 +379,7 @@ main::@16: scope:[main] from main::@15 call print_str to:main::@17 main::@17: scope:[main] from main::@16 - (word) rem16u#38 ← phi( main::@16/(word) rem16u#39 ) + (word) rem16u#40 ← phi( main::@16/(word) rem16u#41 ) (byte*) print_line_cursor#38 ← phi( main::@16/(byte*) print_line_cursor#41 ) (byte) main::i#4 ← phi( main::@16/(byte) main::i#8 ) (byte*) print_char_cursor#64 ← phi( main::@16/(byte*) print_char_cursor#2 ) @@ -379,7 +388,7 @@ main::@17: scope:[main] from main::@16 call print_word to:main::@18 main::@18: scope:[main] from main::@17 - (word) rem16u#37 ← phi( main::@17/(word) rem16u#38 ) + (word) rem16u#39 ← phi( main::@17/(word) rem16u#40 ) (byte*) print_line_cursor#34 ← phi( main::@17/(byte*) print_line_cursor#38 ) (byte) main::i#9 ← phi( main::@17/(byte) main::i#4 ) (byte*) print_char_cursor#65 ← phi( main::@17/(byte*) print_char_cursor#7 ) @@ -388,7 +397,7 @@ main::@18: scope:[main] from main::@17 call print_str to:main::@19 main::@19: scope:[main] from main::@18 - (word) rem16u#36 ← phi( main::@18/(word) rem16u#37 ) + (word) rem16u#38 ← phi( main::@18/(word) rem16u#39 ) (byte*) print_line_cursor#29 ← phi( main::@18/(byte*) print_line_cursor#34 ) (byte) main::i#5 ← phi( main::@18/(byte) main::i#9 ) (byte*) print_char_cursor#66 ← phi( main::@18/(byte*) print_char_cursor#2 ) @@ -397,7 +406,7 @@ main::@19: scope:[main] from main::@18 call print_word to:main::@20 main::@20: scope:[main] from main::@19 - (word) rem16u#35 ← phi( main::@19/(word) rem16u#36 ) + (word) rem16u#37 ← phi( main::@19/(word) rem16u#38 ) (byte) main::i#10 ← phi( main::@19/(byte) main::i#5 ) (byte*) print_line_cursor#24 ← phi( main::@19/(byte*) print_line_cursor#29 ) (byte*) print_char_cursor#67 ← phi( main::@19/(byte*) print_char_cursor#7 ) @@ -405,7 +414,7 @@ main::@20: scope:[main] from main::@19 call print_ln to:main::@21 main::@21: scope:[main] from main::@20 - (word) rem16u#34 ← phi( main::@20/(word) rem16u#35 ) + (word) rem16u#36 ← phi( main::@20/(word) rem16u#37 ) (byte) main::i#6 ← phi( main::@20/(byte) main::i#10 ) (byte*) print_char_cursor#68 ← phi( main::@20/(byte*) print_char_cursor#4 ) (byte*) print_line_cursor#17 ← phi( main::@20/(byte*) print_line_cursor#2 ) @@ -418,14 +427,14 @@ main::@21: scope:[main] from main::@20 if((bool~) main::$21) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@21 - (word) rem16u#33 ← phi( main::@21/(word) rem16u#34 ) + (word) rem16u#35 ← phi( main::@21/(word) rem16u#36 ) (byte*) print_line_cursor#47 ← phi( main::@21/(byte*) print_line_cursor#7 ) (byte*) print_char_cursor#84 ← phi( main::@21/(byte*) print_char_cursor#30 ) (byte*) print_str::str#7 ← (const string) main::str6 call print_str to:main::@22 main::@22: scope:[main] from main::@2 - (word) rem16u#32 ← phi( main::@2/(word) rem16u#33 ) + (word) rem16u#34 ← phi( main::@2/(word) rem16u#35 ) (byte*) print_line_cursor#45 ← phi( main::@2/(byte*) print_line_cursor#47 ) (byte*) print_char_cursor#69 ← phi( main::@2/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#31 ← (byte*) print_char_cursor#69 @@ -433,7 +442,7 @@ main::@22: scope:[main] from main::@2 call print_word to:main::@23 main::@23: scope:[main] from main::@22 - (word) rem16u#31 ← phi( main::@22/(word) rem16u#32 ) + (word) rem16u#33 ← phi( main::@22/(word) rem16u#34 ) (byte*) print_line_cursor#42 ← phi( main::@22/(byte*) print_line_cursor#45 ) (byte*) print_char_cursor#70 ← phi( main::@22/(byte*) print_char_cursor#7 ) (byte*) print_char_cursor#32 ← (byte*) print_char_cursor#70 @@ -441,7 +450,7 @@ main::@23: scope:[main] from main::@22 call print_str to:main::@24 main::@24: scope:[main] from main::@23 - (word) rem16u#30 ← phi( main::@23/(word) rem16u#31 ) + (word) rem16u#32 ← phi( main::@23/(word) rem16u#33 ) (byte*) print_line_cursor#39 ← phi( main::@23/(byte*) print_line_cursor#42 ) (byte*) print_char_cursor#71 ← phi( main::@23/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#33 ← (byte*) print_char_cursor#71 @@ -449,7 +458,7 @@ main::@24: scope:[main] from main::@23 call print_word to:main::@25 main::@25: scope:[main] from main::@24 - (word) rem16u#29 ← phi( main::@24/(word) rem16u#30 ) + (word) rem16u#30 ← phi( main::@24/(word) rem16u#32 ) (byte*) print_line_cursor#35 ← phi( main::@24/(byte*) print_line_cursor#39 ) (byte*) print_char_cursor#72 ← phi( main::@24/(byte*) print_char_cursor#7 ) (byte*) print_char_cursor#34 ← (byte*) print_char_cursor#72 @@ -457,7 +466,7 @@ main::@25: scope:[main] from main::@24 call print_str to:main::@26 main::@26: scope:[main] from main::@25 - (word) rem16u#28 ← phi( main::@25/(word) rem16u#29 ) + (word) rem16u#28 ← phi( main::@25/(word) rem16u#30 ) (byte*) print_line_cursor#30 ← phi( main::@25/(byte*) print_line_cursor#35 ) (byte*) print_char_cursor#73 ← phi( main::@25/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#35 ← (byte*) print_char_cursor#73 @@ -577,6 +586,8 @@ SYMBOL TABLE SSA (label) @20 (label) @29 (label) @30 +(label) @5 +(label) @6 (label) @8 (label) @begin (label) @end @@ -1005,6 +1016,8 @@ SYMBOL TABLE SSA (word) print_word::w#7 (word) print_word::w#8 (word) print_word::w#9 +(signed word) rem16s +(signed word) rem16s#0 (word) rem16u (word) rem16u#0 (word) rem16u#1 @@ -1053,10 +1066,16 @@ SYMBOL TABLE SSA (word) rem16u#49 (word) rem16u#5 (word) rem16u#50 +(word) rem16u#51 +(word) rem16u#52 (word) rem16u#6 (word) rem16u#7 (word) rem16u#8 (word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 Inversing boolean not (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2 @@ -1076,7 +1095,7 @@ Alias (word) divr16u::rem#2 = (word~) divr16u::$10 Alias (word) divr16u::rem#11 = (word) divr16u::rem#9 Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#4 (word) divr16u::return#1 Alias (word) rem16u#1 = (word) rem16u#11 (word) rem16u#2 -Alias (word) rem16u#0 = (word) rem16u#27 (word) rem16u#26 (word) rem16u#24 +Alias (word) rem16u#0 = (word) rem16u#31 (word) rem16u#29 (word) rem16u#27 (word) rem16u#26 (word) rem16u#24 Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#31 (byte*) print_char_cursor#88 (byte*) print_screen#9 (byte*) print_line_cursor#26 (byte*) print_char_cursor#85 (byte*) print_screen#8 Alias (byte*) print_str::str#10 = (byte*) print_str::str#11 Alias (byte*) print_char_cursor#2 = (byte*) print_char_cursor#40 (byte*) print_char_cursor#78 (byte*) print_char_cursor#41 @@ -1096,7 +1115,7 @@ Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#32 (byte*) print_ Alias (byte*) print_char_cursor#82 = (byte*) print_char_cursor#89 (byte*) print_char_cursor#90 (byte*) print_char_cursor#87 Alias (word) rem16u#12 = (word) rem16u#3 Alias (word) rem16u#13 = (word) rem16u#4 -Alias (word) rem16u#14 = (word) rem16u#5 (word) rem16u#50 (word) rem16u#49 (word) rem16u#48 (word) rem16u#47 (word) rem16u#46 (word) rem16u#45 (word) rem16u#44 (word) rem16u#43 +Alias (word) rem16u#14 = (word) rem16u#5 (word) rem16u#52 (word) rem16u#51 (word) rem16u#50 (word) rem16u#49 (word) rem16u#48 (word) rem16u#47 (word) rem16u#46 (word) rem16u#45 Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#43 (byte*) print_line_cursor#40 (byte*) print_line_cursor#37 (byte*) print_line_cursor#33 (byte*) print_line_cursor#28 (byte*) print_line_cursor#23 Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#53 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#54 @@ -1109,7 +1128,7 @@ Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#6 Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#60 Alias (byte) main::i#10 = (byte) main::i#7 (byte) main::i#2 (byte) main::i#3 (byte) main::i#8 (byte) main::i#4 (byte) main::i#9 (byte) main::i#5 (byte) main::i#6 Alias (byte*) print_line_cursor#24 = (byte*) print_line_cursor#46 (byte*) print_line_cursor#48 (byte*) print_line_cursor#44 (byte*) print_line_cursor#41 (byte*) print_line_cursor#38 (byte*) print_line_cursor#34 (byte*) print_line_cursor#29 -Alias (word) rem16u#15 = (word) rem16u#41 (word) rem16u#42 (word) rem16u#40 (word) rem16u#39 (word) rem16u#38 (word) rem16u#37 (word) rem16u#36 (word) rem16u#35 (word) rem16u#34 (word) rem16u#33 (word) rem16u#32 (word) rem16u#31 (word) rem16u#30 (word) rem16u#29 (word) rem16u#28 (word) rem16u#25 (word) rem16u#21 (word) rem16u#6 +Alias (word) rem16u#15 = (word) rem16u#43 (word) rem16u#44 (word) rem16u#42 (word) rem16u#41 (word) rem16u#40 (word) rem16u#39 (word) rem16u#38 (word) rem16u#37 (word) rem16u#36 (word) rem16u#35 (word) rem16u#34 (word) rem16u#33 (word) rem16u#32 (word) rem16u#30 (word) rem16u#28 (word) rem16u#25 (word) rem16u#21 (word) rem16u#6 Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#61 Alias (byte*) print_char_cursor#24 = (byte*) print_char_cursor#62 Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#63 @@ -1227,9 +1246,12 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$21 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword~) main::$20) goto main::@1 Simple Condition (bool~) lin16u_gen::$8 if((word) lin16u_gen::i#1<(word) lin16u_gen::length#3) goto lin16u_gen::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) rem8u#0 = 0 Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte[]) print_hextab#0 = $0 Constant (const word[20]) main::lintab1#0 = { fill( 20, 0) } @@ -1279,6 +1301,8 @@ Successful SSA optimization PassNEliminateUnusedVars Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16 Culled Empty Block (label) @2 +Culled Empty Block (label) @5 +Culled Empty Block (label) @6 Culled Empty Block (label) @8 Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_word::@2 @@ -1874,8 +1898,11 @@ VARIABLE REGISTER WEIGHTS (word) print_word::w#3 22.0 (word) print_word::w#4 22.0 (word) print_word::w#5 22.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 0.8 +(signed byte) rem8s +(byte) rem8u Initial phi equivalence classes [ main::i#10 main::i#1 ] @@ -4388,8 +4415,11 @@ FINAL SYMBOL TABLE (word) print_word::w#3 w zp ZP_WORD:5 22.0 (word) print_word::w#4 w zp ZP_WORD:5 22.0 (word) print_word::w#5 w zp ZP_WORD:5 22.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:15 0.8 +(signed byte) rem8s +(byte) rem8u zp ZP_BYTE:2 [ main::i#10 main::i#1 ] zp ZP_WORD:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 lin16u_gen::i#2 lin16u_gen::i#1 ] diff --git a/src/test/ref/linegen.sym b/src/test/ref/linegen.sym index e27b84e70..f87258d5f 100644 --- a/src/test/ref/linegen.sym +++ b/src/test/ref/linegen.sym @@ -171,8 +171,11 @@ (word) print_word::w#3 w zp ZP_WORD:5 22.0 (word) print_word::w#4 w zp ZP_WORD:5 22.0 (word) print_word::w#5 w zp ZP_WORD:5 22.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:15 0.8 +(signed byte) rem8s +(byte) rem8u zp ZP_BYTE:2 [ main::i#10 main::i#1 ] zp ZP_WORD:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 lin16u_gen::i#2 lin16u_gen::i#1 ] diff --git a/src/test/ref/liverange-call-problem.asm b/src/test/ref/liverange-call-problem.asm index 4248b15a1..aec4b65fb 100644 --- a/src/test/ref/liverange-call-problem.asm +++ b/src/test/ref/liverange-call-problem.asm @@ -1,17 +1,33 @@ .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" + .label w1 = 4 + .label w2 = 2 jsr main main: { + lda #<0 + sta w1 + sta w1+1 jsr incw1 + lda #<0 + sta w2 + sta w2+1 jsr incw2 jsr incw1 jsr incw2 rts } incw2: { + inc w2 + bne !+ + inc w2+1 + !: rts } incw1: { + inc w1 + bne !+ + inc w1+1 + !: rts } diff --git a/src/test/ref/liverange-call-problem.cfg b/src/test/ref/liverange-call-problem.cfg index 64e8cd5b0..9e17905b4 100644 --- a/src/test/ref/liverange-call-problem.cfg +++ b/src/test/ref/liverange-call-problem.cfg @@ -27,14 +27,16 @@ main::@return: scope:[main] from main::@3 [12] return to:@return incw2: scope:[incw2] from main::@1 main::@3 - [13] phi() + [13] (word) w2#10 ← phi( main::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(word) w2#11 ) + [14] (word) w2#11 ← ++ (word) w2#10 to:incw2::@return incw2::@return: scope:[incw2] from incw2 - [14] return + [15] return to:@return incw1: scope:[incw1] from main main::@2 - [15] phi() + [16] (word) w1#10 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(word) w1#11 ) + [17] (word) w1#11 ← ++ (word) w1#10 to:incw1::@return incw1::@return: scope:[incw1] from incw1 - [16] return + [18] return to:@return diff --git a/src/test/ref/liverange-call-problem.log b/src/test/ref/liverange-call-problem.log index c121d048a..2802f1441 100644 --- a/src/test/ref/liverange-call-problem.log +++ b/src/test/ref/liverange-call-problem.log @@ -1,38 +1,72 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from + (word) w1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) w2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@3 main: scope:[main] from @3 + (word) w2#16 ← phi( @3/(word) w2#15 ) + (word) w1#13 ← phi( @3/(word) w1#16 ) call incw1 to:main::@1 main::@1: scope:[main] from main + (word) w2#13 ← phi( main/(word) w2#16 ) + (word) w1#7 ← phi( main/(word) w1#5 ) + (word) w1#1 ← (word) w1#7 call incw2 to:main::@2 main::@2: scope:[main] from main::@1 + (word) w1#14 ← phi( main::@1/(word) w1#1 ) + (word) w2#7 ← phi( main::@1/(word) w2#5 ) + (word) w2#1 ← (word) w2#7 call incw1 to:main::@3 main::@3: scope:[main] from main::@2 + (word) w2#14 ← phi( main::@2/(word) w2#1 ) + (word) w1#8 ← phi( main::@2/(word) w1#5 ) + (word) w1#2 ← (word) w1#8 call incw2 to:main::@4 main::@4: scope:[main] from main::@3 + (word) w1#15 ← phi( main::@3/(word) w1#2 ) + (word) w2#8 ← phi( main::@3/(word) w2#5 ) + (word) w2#2 ← (word) w2#8 to:main::@return main::@return: scope:[main] from main::@4 + (word) w2#9 ← phi( main::@4/(word) w2#2 ) + (word) w1#9 ← phi( main::@4/(word) w1#15 ) + (word) w1#3 ← (word) w1#9 + (word) w2#3 ← (word) w2#9 return to:@return incw1: scope:[incw1] from main main::@2 + (word) w1#10 ← phi( main/(word) w1#13 main::@2/(word) w1#14 ) + (word) w1#4 ← ++ (word) w1#10 to:incw1::@return incw1::@return: scope:[incw1] from incw1 + (word) w1#11 ← phi( incw1/(word) w1#4 ) + (word) w1#5 ← (word) w1#11 return to:@return incw2: scope:[incw2] from main::@1 main::@3 + (word) w2#10 ← phi( main::@1/(word) w2#13 main::@3/(word) w2#14 ) + (word) w2#4 ← ++ (word) w2#10 to:incw2::@return incw2::@return: scope:[incw2] from incw2 + (word) w2#11 ← phi( incw2/(word) w2#4 ) + (word) w2#5 ← (word) w2#11 return to:@return @3: scope:[] from @begin + (word) w2#15 ← phi( @begin/(word) w2#0 ) + (word) w1#16 ← phi( @begin/(word) w1#0 ) call main to:@4 @4: scope:[] from @3 + (word) w2#12 ← phi( @3/(word) w2#3 ) + (word) w1#12 ← phi( @3/(word) w1#3 ) + (word) w1#6 ← (word) w1#12 + (word) w2#6 ← (word) w2#12 to:@end @end: scope:[] from @4 @@ -51,25 +85,88 @@ SYMBOL TABLE SSA (label) main::@3 (label) main::@4 (label) main::@return +(word) w1 +(word) w1#0 +(word) w1#1 +(word) w1#10 +(word) w1#11 +(word) w1#12 +(word) w1#13 +(word) w1#14 +(word) w1#15 +(word) w1#16 +(word) w1#2 +(word) w1#3 +(word) w1#4 +(word) w1#5 +(word) w1#6 +(word) w1#7 +(word) w1#8 +(word) w1#9 +(word) w2 +(word) w2#0 +(word) w2#1 +(word) w2#10 +(word) w2#11 +(word) w2#12 +(word) w2#13 +(word) w2#14 +(word) w2#15 +(word) w2#16 +(word) w2#2 +(word) w2#3 +(word) w2#4 +(word) w2#5 +(word) w2#6 +(word) w2#7 +(word) w2#8 +(word) w2#9 +Alias (word) w2#13 = (word) w2#16 +Alias (word) w1#1 = (word) w1#7 (word) w1#14 +Alias (word) w2#1 = (word) w2#7 (word) w2#14 +Alias (word) w1#15 = (word) w1#2 (word) w1#8 (word) w1#9 (word) w1#3 +Alias (word) w2#2 = (word) w2#8 (word) w2#9 (word) w2#3 +Alias (word) w1#11 = (word) w1#4 (word) w1#5 +Alias (word) w2#11 = (word) w2#4 (word) w2#5 +Alias (word) w1#0 = (word) w1#16 +Alias (word) w2#0 = (word) w2#15 +Alias (word) w1#12 = (word) w1#6 +Alias (word) w2#12 = (word) w2#6 +Successful SSA optimization Pass2AliasElimination +Redundant Phi (word) w1#13 (word) w1#0 +Redundant Phi (word) w2#13 (word) w2#0 +Redundant Phi (word) w1#1 (word) w1#11 +Redundant Phi (word) w2#1 (word) w2#11 +Redundant Phi (word) w1#15 (word) w1#11 +Redundant Phi (word) w2#2 (word) w2#11 +Redundant Phi (word) w1#12 (word) w1#15 +Redundant Phi (word) w2#12 (word) w2#2 +Successful SSA optimization Pass2RedundantPhiElimination +Constant (const word) w1#0 = 0 +Constant (const word) w2#0 = 0 +Successful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) main::@4 Culled Empty Block (label) @4 Successful SSA optimization Pass2CullEmptyBlocks +Inlining constant with var siblings (const word) w1#0 +Inlining constant with var siblings (const word) w2#0 +Constant inlined w1#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined w2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Successful SSA optimization Pass2ConstantInlining Adding NOP phi() at start of @begin Adding NOP phi() at start of @3 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 -Adding NOP phi() at start of main::@2 -Adding NOP phi() at start of main::@3 -Adding NOP phi() at start of incw2 -Adding NOP phi() at start of incw1 CALL GRAPH Calls in [] to main:2 Calls in [main] to incw1:5 incw2:7 incw1:9 incw2:11 -Created 0 initial phi equivalence classes -Coalesced down to 0 phi equivalence classes +Created 2 initial phi equivalence classes +Coalesced [8] w1#17 ← w1#11 +Coalesced [10] w2#17 ← w2#11 +Coalesced down to 2 phi equivalence classes Adding NOP phi() at start of @begin Adding NOP phi() at start of @3 Adding NOP phi() at start of @end @@ -77,8 +174,6 @@ Adding NOP phi() at start of main Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 -Adding NOP phi() at start of incw2 -Adding NOP phi() at start of incw1 FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -110,16 +205,18 @@ main::@return: scope:[main] from main::@3 [12] return to:@return incw2: scope:[incw2] from main::@1 main::@3 - [13] phi() + [13] (word) w2#10 ← phi( main::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(word) w2#11 ) + [14] (word) w2#11 ← ++ (word) w2#10 to:incw2::@return incw2::@return: scope:[incw2] from incw2 - [14] return + [15] return to:@return incw1: scope:[incw1] from main main::@2 - [15] phi() + [16] (word) w1#10 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(word) w1#11 ) + [17] (word) w1#11 ← ++ (word) w1#10 to:incw1::@return incw1::@return: scope:[incw1] from incw1 - [16] return + [18] return to:@return @@ -127,9 +224,21 @@ VARIABLE REGISTER WEIGHTS (void()) incw1() (void()) incw2() (void()) main() +(word) w1 +(word) w1#10 4.0 +(word) w1#11 0.6666666666666666 +(word) w2 +(word) w2#10 4.0 +(word) w2#11 0.6666666666666666 Initial phi equivalence classes +[ w2#10 w2#11 ] +[ w1#10 w1#11 ] Complete equivalence classes +[ w2#10 w2#11 ] +[ w1#10 w1#11 ] +Allocated zp ZP_WORD:2 [ w2#10 w2#11 ] +Allocated zp ZP_WORD:4 [ w1#10 w1#11 ] INITIAL ASM //SEG0 Basic Upstart @@ -137,6 +246,8 @@ INITIAL ASM :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels + .label w1 = 4 + .label w2 = 2 //SEG2 @begin bbegin: //SEG3 [1] phi from @begin to @3 [phi:@begin->@3] @@ -156,71 +267,95 @@ bend: //SEG9 main main: { //SEG10 [5] call incw1 - //SEG11 [15] phi from main to incw1 [phi:main->incw1] + //SEG11 [16] phi from main to incw1 [phi:main->incw1] incw1_from_main: + //SEG12 [16] phi (word) w1#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->incw1#0] -- vwuz1=vbuc1 + lda #<0 + sta w1 + lda #>0 + sta w1+1 jsr incw1 - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [7] call incw2 - //SEG15 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] + //SEG15 [7] call incw2 + //SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] incw2_from_b1: + //SEG17 [13] phi (word) w2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->incw2#0] -- vwuz1=vbuc1 + lda #<0 + sta w2 + lda #>0 + sta w2+1 jsr incw2 - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG19 main::@2 b2: - //SEG18 [9] call incw1 - //SEG19 [15] phi from main::@2 to incw1 [phi:main::@2->incw1] + //SEG20 [9] call incw1 + //SEG21 [16] phi from main::@2 to incw1 [phi:main::@2->incw1] incw1_from_b2: + //SEG22 [16] phi (word) w1#10 = (word) w1#11 [phi:main::@2->incw1#0] -- register_copy jsr incw1 - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG23 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG24 main::@3 b3: - //SEG22 [11] call incw2 - //SEG23 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] + //SEG25 [11] call incw2 + //SEG26 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] incw2_from_b3: + //SEG27 [13] phi (word) w2#10 = (word) w2#11 [phi:main::@3->incw2#0] -- register_copy jsr incw2 jmp breturn - //SEG24 main::@return + //SEG28 main::@return breturn: - //SEG25 [12] return + //SEG29 [12] return rts } -//SEG26 incw2 +//SEG30 incw2 incw2: { + //SEG31 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 + inc w2 + bne !+ + inc w2+1 + !: jmp breturn - //SEG27 incw2::@return + //SEG32 incw2::@return breturn: - //SEG28 [14] return + //SEG33 [15] return rts } -//SEG29 incw1 +//SEG34 incw1 incw1: { + //SEG35 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 + inc w1 + bne !+ + inc w1+1 + !: jmp breturn - //SEG30 incw1::@return + //SEG36 incw1::@return breturn: - //SEG31 [16] return + //SEG37 [18] return rts } REGISTER UPLIFT POTENTIAL REGISTERS +Potential registers zp ZP_WORD:2 [ w2#10 w2#11 ] : zp ZP_WORD:2 , +Potential registers zp ZP_WORD:4 [ w1#10 w1#11 ] : zp ZP_WORD:4 , REGISTER UPLIFT SCOPES +Uplift Scope [] 4.67: zp ZP_WORD:2 [ w2#10 w2#11 ] 4.67: zp ZP_WORD:4 [ w1#10 w1#11 ] Uplift Scope [main] Uplift Scope [incw1] Uplift Scope [incw2] -Uplift Scope [] -Uplifting [main] best 126 combination -Uplifting [incw1] best 126 combination -Uplifting [incw2] best 126 combination -Uplifting [] best 126 combination +Uplifting [] best 116 combination zp ZP_WORD:2 [ w2#10 w2#11 ] zp ZP_WORD:4 [ w1#10 w1#11 ] +Uplifting [main] best 116 combination +Uplifting [incw1] best 116 combination +Uplifting [incw2] best 116 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -228,6 +363,8 @@ ASSEMBLER BEFORE OPTIMIZATION :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels + .label w1 = 4 + .label w2 = 2 //SEG2 @begin bbegin: //SEG3 [1] phi from @begin to @3 [phi:@begin->@3] @@ -247,56 +384,78 @@ bend: //SEG9 main main: { //SEG10 [5] call incw1 - //SEG11 [15] phi from main to incw1 [phi:main->incw1] + //SEG11 [16] phi from main to incw1 [phi:main->incw1] incw1_from_main: + //SEG12 [16] phi (word) w1#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->incw1#0] -- vwuz1=vbuc1 + lda #<0 + sta w1 + lda #>0 + sta w1+1 jsr incw1 - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] b1_from_main: jmp b1 - //SEG13 main::@1 + //SEG14 main::@1 b1: - //SEG14 [7] call incw2 - //SEG15 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] + //SEG15 [7] call incw2 + //SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] incw2_from_b1: + //SEG17 [13] phi (word) w2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->incw2#0] -- vwuz1=vbuc1 + lda #<0 + sta w2 + lda #>0 + sta w2+1 jsr incw2 - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG17 main::@2 + //SEG19 main::@2 b2: - //SEG18 [9] call incw1 - //SEG19 [15] phi from main::@2 to incw1 [phi:main::@2->incw1] + //SEG20 [9] call incw1 + //SEG21 [16] phi from main::@2 to incw1 [phi:main::@2->incw1] incw1_from_b2: + //SEG22 [16] phi (word) w1#10 = (word) w1#11 [phi:main::@2->incw1#0] -- register_copy jsr incw1 - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG23 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG21 main::@3 + //SEG24 main::@3 b3: - //SEG22 [11] call incw2 - //SEG23 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] + //SEG25 [11] call incw2 + //SEG26 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] incw2_from_b3: + //SEG27 [13] phi (word) w2#10 = (word) w2#11 [phi:main::@3->incw2#0] -- register_copy jsr incw2 jmp breturn - //SEG24 main::@return + //SEG28 main::@return breturn: - //SEG25 [12] return + //SEG29 [12] return rts } -//SEG26 incw2 +//SEG30 incw2 incw2: { + //SEG31 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 + inc w2 + bne !+ + inc w2+1 + !: jmp breturn - //SEG27 incw2::@return + //SEG32 incw2::@return breturn: - //SEG28 [14] return + //SEG33 [15] return rts } -//SEG29 incw1 +//SEG34 incw1 incw1: { + //SEG35 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 + inc w1 + bne !+ + inc w1+1 + !: jmp breturn - //SEG30 incw1::@return + //SEG36 incw1::@return breturn: - //SEG31 [16] return + //SEG37 [18] return rts } @@ -310,6 +469,9 @@ Removing instruction jmp breturn Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #>0 +Removing instruction lda #>0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Removing instruction b3_from_bbegin: Removing instruction main_from_b3: @@ -345,17 +507,27 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@3 (label) main::@return +(word) w1 +(word) w1#10 w1 zp ZP_WORD:4 4.0 +(word) w1#11 w1 zp ZP_WORD:4 0.6666666666666666 +(word) w2 +(word) w2#10 w2 zp ZP_WORD:2 4.0 +(word) w2#11 w2 zp ZP_WORD:2 0.6666666666666666 +zp ZP_WORD:2 [ w2#10 w2#11 ] +zp ZP_WORD:4 [ w1#10 w1#11 ] FINAL ASSEMBLER -Score: 48 +Score: 88 //SEG0 Basic Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" //SEG1 Global Constants & labels + .label w1 = 4 + .label w2 = 2 //SEG2 @begin //SEG3 [1] phi from @begin to @3 [phi:@begin->@3] //SEG4 @3 @@ -367,37 +539,57 @@ Score: 48 //SEG9 main main: { //SEG10 [5] call incw1 - //SEG11 [15] phi from main to incw1 [phi:main->incw1] + //SEG11 [16] phi from main to incw1 [phi:main->incw1] + //SEG12 [16] phi (word) w1#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->incw1#0] -- vwuz1=vbuc1 + lda #<0 + sta w1 + sta w1+1 jsr incw1 - //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG13 main::@1 - //SEG14 [7] call incw2 - //SEG15 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] + //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] + //SEG14 main::@1 + //SEG15 [7] call incw2 + //SEG16 [13] phi from main::@1 to incw2 [phi:main::@1->incw2] + //SEG17 [13] phi (word) w2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->incw2#0] -- vwuz1=vbuc1 + lda #<0 + sta w2 + sta w2+1 jsr incw2 - //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG17 main::@2 - //SEG18 [9] call incw1 - //SEG19 [15] phi from main::@2 to incw1 [phi:main::@2->incw1] + //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG19 main::@2 + //SEG20 [9] call incw1 + //SEG21 [16] phi from main::@2 to incw1 [phi:main::@2->incw1] + //SEG22 [16] phi (word) w1#10 = (word) w1#11 [phi:main::@2->incw1#0] -- register_copy jsr incw1 - //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG21 main::@3 - //SEG22 [11] call incw2 - //SEG23 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] + //SEG23 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG24 main::@3 + //SEG25 [11] call incw2 + //SEG26 [13] phi from main::@3 to incw2 [phi:main::@3->incw2] + //SEG27 [13] phi (word) w2#10 = (word) w2#11 [phi:main::@3->incw2#0] -- register_copy jsr incw2 - //SEG24 main::@return - //SEG25 [12] return + //SEG28 main::@return + //SEG29 [12] return rts } -//SEG26 incw2 +//SEG30 incw2 incw2: { - //SEG27 incw2::@return - //SEG28 [14] return + //SEG31 [14] (word) w2#11 ← ++ (word) w2#10 -- vwuz1=_inc_vwuz1 + inc w2 + bne !+ + inc w2+1 + !: + //SEG32 incw2::@return + //SEG33 [15] return rts } -//SEG29 incw1 +//SEG34 incw1 incw1: { - //SEG30 incw1::@return - //SEG31 [16] return + //SEG35 [17] (word) w1#11 ← ++ (word) w1#10 -- vwuz1=_inc_vwuz1 + inc w1 + bne !+ + inc w1+1 + !: + //SEG36 incw1::@return + //SEG37 [18] return rts } diff --git a/src/test/ref/liverange-call-problem.sym b/src/test/ref/liverange-call-problem.sym index 4aa75c4eb..0348e9c0e 100644 --- a/src/test/ref/liverange-call-problem.sym +++ b/src/test/ref/liverange-call-problem.sym @@ -10,4 +10,12 @@ (label) main::@2 (label) main::@3 (label) main::@return +(word) w1 +(word) w1#10 w1 zp ZP_WORD:4 4.0 +(word) w1#11 w1 zp ZP_WORD:4 0.6666666666666666 +(word) w2 +(word) w2#10 w2 zp ZP_WORD:2 4.0 +(word) w2#11 w2 zp ZP_WORD:2 0.6666666666666666 +zp ZP_WORD:2 [ w2#10 w2#11 ] +zp ZP_WORD:4 [ w1#10 w1#11 ] diff --git a/src/test/ref/longbranch-interrupt-problem.asm b/src/test/ref/longbranch-interrupt-problem.asm new file mode 100644 index 000000000..28336c1b6 --- /dev/null +++ b/src/test/ref/longbranch-interrupt-problem.asm @@ -0,0 +1,34 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 + lda #0 + sta col + jsr main +main: { + lda #irq + sta KERNEL_IRQ+1 + b2: + lda #$a + cmp col + bcs b2 + lda #0 + sta col + jmp b2 +} +irq: { + lda $dc0d + lda col + sta BGCOL + lda col + cmp #0 + bne !_ea81+ + jmp $ea81 + !_ea81: + inc col + jmp $ea81 +} diff --git a/src/test/ref/longbranch-interrupt-problem.cfg b/src/test/ref/longbranch-interrupt-problem.cfg new file mode 100644 index 000000000..58bad3c0e --- /dev/null +++ b/src/test/ref/longbranch-interrupt-problem.cfg @@ -0,0 +1,32 @@ +@begin: scope:[] from + [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +@2: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @2 + [3] phi() +main: scope:[main] from @2 + [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() + to:main::@1 +main::@1: scope:[main] from main main::@2 main::@7 + [5] (byte) col#12 ← phi( main/(byte) col#0 main::@7/(byte) col#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [6] if((byte) col#12<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 + to:main::@7 +main::@7: scope:[main] from main::@2 + [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +irq: scope:[irq] from + asm { lda$dc0d } + [9] *((const byte*) BGCOL#0) ← (byte) col#0 + [10] if((byte) col#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@return + to:irq::@2 +irq::@2: scope:[irq] from irq + [11] (byte) col#3 ← ++ (byte) col#0 + to:irq::@return +irq::@return: scope:[irq] from irq irq::@2 + [12] return + to:@return diff --git a/src/test/ref/longbranch-interrupt-problem.log b/src/test/ref/longbranch-interrupt-problem.log new file mode 100644 index 000000000..f85aa2c59 --- /dev/null +++ b/src/test/ref/longbranch-interrupt-problem.log @@ -0,0 +1,526 @@ +Resolved forward reference irq to interrupt(KERNEL_MIN)(void()) irq() + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +main: scope:[main] from @2 + (byte) col#15 ← phi( @2/(byte) col#13 ) + (void()*~) main::$0 ← & interrupt(KERNEL_MIN)(void()) irq() + *((void()**) KERNEL_IRQ#0) ← (void()*~) main::$0 + to:main::@1 +main::@1: scope:[main] from main main::@4 main::@7 + (byte) col#12 ← phi( main/(byte) col#15 main::@4/(byte) col#16 main::@7/(byte) col#1 ) + if(true) goto main::@2 + to:main::@return +main::@2: scope:[main] from main::@1 + (byte) col#6 ← phi( main::@1/(byte) col#12 ) + (bool~) main::$1 ← (byte) col#6 > (byte/signed byte/word/signed word/dword/signed dword) 10 + (bool~) main::$2 ← ! (bool~) main::$1 + if((bool~) main::$2) goto main::@4 + to:main::@7 +main::@4: scope:[main] from main::@2 + (byte) col#16 ← phi( main::@2/(byte) col#6 ) + to:main::@1 +main::@7: scope:[main] from main::@2 + (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@return: scope:[main] from main::@1 + (byte) col#7 ← phi( main::@1/(byte) col#12 ) + (byte) col#2 ← (byte) col#7 + return + to:@return +irq: scope:[irq] from + (byte) col#8 ← phi( @2/(byte) col#13 ) + asm { lda$dc0d } + *((byte*) BGCOL#0) ← (byte) col#8 + (bool~) irq::$0 ← (byte) col#8 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (bool~) irq::$1 ← ! (bool~) irq::$0 + if((bool~) irq::$1) goto irq::@1 + to:irq::@2 +irq::@1: scope:[irq] from irq + (byte) col#14 ← phi( irq/(byte) col#8 ) + to:irq::@return +irq::@2: scope:[irq] from irq + (byte) col#9 ← phi( irq/(byte) col#8 ) + (byte) col#3 ← ++ (byte) col#9 + to:irq::@return +irq::@return: scope:[irq] from irq::@1 irq::@2 + (byte) col#10 ← phi( irq::@1/(byte) col#14 irq::@2/(byte) col#3 ) + (byte) col#4 ← (byte) col#10 + return + to:@return +@2: scope:[] from @begin + (byte) col#13 ← phi( @begin/(byte) col#0 ) + call main + to:@3 +@3: scope:[] from @2 + (byte) col#11 ← phi( @2/(byte) col#2 ) + (byte) col#5 ← (byte) col#11 + to:@end +@end: scope:[] from @3 + +SYMBOL TABLE SSA +(label) @2 +(label) @3 +(label) @begin +(label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte) col +(byte) col#0 +(byte) col#1 +(byte) col#10 +(byte) col#11 +(byte) col#12 +(byte) col#13 +(byte) col#14 +(byte) col#15 +(byte) col#16 +(byte) col#2 +(byte) col#3 +(byte) col#4 +(byte) col#5 +(byte) col#6 +(byte) col#7 +(byte) col#8 +(byte) col#9 +interrupt(KERNEL_MIN)(void()) irq() +(bool~) irq::$0 +(bool~) irq::$1 +(label) irq::@1 +(label) irq::@2 +(label) irq::@return +(void()) main() +(void()*~) main::$0 +(bool~) main::$1 +(bool~) main::$2 +(label) main::@1 +(label) main::@2 +(label) main::@4 +(label) main::@7 +(label) main::@return + +Inversing boolean not (bool~) main::$2 ← (byte) col#6 <= (byte/signed byte/word/signed word/dword/signed dword) 10 from (bool~) main::$1 ← (byte) col#6 > (byte/signed byte/word/signed word/dword/signed dword) 10 +Inversing boolean not (bool~) irq::$1 ← (byte) col#8 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) irq::$0 ← (byte) col#8 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Successful SSA optimization Pass2UnaryNotSimplification +Alias (byte) col#12 = (byte) col#6 (byte) col#16 (byte) col#7 (byte) col#2 +Alias (byte) col#14 = (byte) col#8 (byte) col#9 +Alias (byte) col#10 = (byte) col#4 +Alias (byte) col#0 = (byte) col#13 +Alias (byte) col#11 = (byte) col#5 +Successful SSA optimization Pass2AliasElimination +Self Phi Eliminated (byte) col#12 +Successful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte) col#15 (byte) col#0 +Redundant Phi (byte) col#14 (byte) col#0 +Redundant Phi (byte) col#11 (byte) col#12 +Successful SSA optimization Pass2RedundantPhiElimination +Simple Condition (bool~) main::$2 if((byte) col#12<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@4 +Simple Condition (bool~) irq::$1 if((byte) col#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const byte*) BGCOL#0 = ((byte*))53280 +Constant (const void()*) main::$0 = &irq +Successful SSA optimization Pass2ConstantIdentification +if() condition always true - replacing block destination if(true) goto main::@2 +Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars +Removing unused block main::@return +Successful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) main::@4 +Culled Empty Block (label) irq::@1 +Culled Empty Block (label) @3 +Successful SSA optimization Pass2CullEmptyBlocks +Constant inlined main::$0 = &interrupt(KERNEL_MIN)(void()) irq() +Successful SSA optimization Pass2ConstantInlining +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @end +CALL GRAPH +Calls in [] to main:2 + +Created 1 initial phi equivalence classes +Coalesced [5] col#17 ← col#0 +Coalesced [9] col#18 ← col#1 +Coalesced down to 1 phi equivalence classes +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @end + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +@2: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @2 + [3] phi() +main: scope:[main] from @2 + [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() + to:main::@1 +main::@1: scope:[main] from main main::@2 main::@7 + [5] (byte) col#12 ← phi( main/(byte) col#0 main::@7/(byte) col#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [6] if((byte) col#12<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 + to:main::@7 +main::@7: scope:[main] from main::@2 + [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +irq: scope:[irq] from + asm { lda$dc0d } + [9] *((const byte*) BGCOL#0) ← (byte) col#0 + [10] if((byte) col#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@return + to:irq::@2 +irq::@2: scope:[irq] from irq + [11] (byte) col#3 ← ++ (byte) col#0 + to:irq::@return +irq::@return: scope:[irq] from irq irq::@2 + [12] return + to:@return + + +VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(void()**) KERNEL_IRQ +(byte) col +(byte) col#0 1.6666666666666665 +(byte) col#1 22.0 +(byte) col#12 114.0 +(byte) col#3 20.0 +interrupt(KERNEL_MIN)(void()) irq() +(void()) main() + +Initial phi equivalence classes +[ col#12 col#0 col#1 ] +Added variable col#3 to zero page equivalence class [ col#3 ] +Complete equivalence classes +[ col#12 col#0 col#1 ] +[ col#3 ] +Allocated zp ZP_BYTE:2 [ col#12 col#0 col#1 ] +Allocated zp ZP_BYTE:3 [ col#3 ] + +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 + .label col_3 = 3 +//SEG2 @begin +bbegin: +//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +b2_from_bbegin: + jmp b2 +//SEG5 @2 +b2: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +bend_from_b2: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG11 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + b1_from_main: + b1_from_b7: + //SEG12 [5] phi (byte) col#12 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + jmp b1 + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + b1_from_b2: + jmp b1 + //SEG14 main::@1 + b1: + jmp b2 + //SEG15 main::@2 + b2: + //SEG16 [6] if((byte) col#12<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_le_vbuc1_then_la1 + lda #$a + cmp col + bcs b1_from_b2 + jmp b7 + //SEG17 main::@7 + b7: + //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col + jmp b1_from_b7 +} +//SEG19 irq +irq: { + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 asm { lda$dc0d } + lda $dc0d + //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + lda col + sta BGCOL + //SEG23 [10] if((byte) col#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@return -- vbuz1_eq_0_then_la1 + lda col + cmp #0 + beq breturn + jmp b2 + //SEG24 irq::@2 + b2: + //SEG25 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz2 + ldy col + iny + sty col_3 + jmp breturn + //SEG26 irq::@return + breturn: + //SEG27 [12] return - exit interrupt(KERNEL_MIN) + jmp $ea81 +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ col#0 ] ( ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() [ col#0 ] ( main:2 [ col#0 ] ) always clobbers reg byte a +Statement [6] if((byte) col#12<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ col#1 ] ( main:2 [ col#1 ] ) always clobbers reg byte a +Statement asm { lda$dc0d } always clobbers reg byte a +Statement [9] *((const byte*) BGCOL#0) ← (byte) col#0 [ col#0 ] ( ) always clobbers reg byte a +Statement [10] if((byte) col#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@return [ col#0 ] ( ) always clobbers reg byte a +Statement [11] (byte) col#3 ← ++ (byte) col#0 [ ] ( ) always clobbers reg byte y +Potential registers zp ZP_BYTE:2 [ col#12 col#0 col#1 ] : zp ZP_BYTE:2 , +Potential registers zp ZP_BYTE:3 [ col#3 ] : zp ZP_BYTE:3 , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 137.67: zp ZP_BYTE:2 [ col#12 col#0 col#1 ] 20: zp ZP_BYTE:3 [ col#3 ] +Uplift Scope [main] +Uplift Scope [irq] + +Uplifting [] best 1824 combination zp ZP_BYTE:2 [ col#12 col#0 col#1 ] zp ZP_BYTE:3 [ col#3 ] +Uplifting [main] best 1824 combination +Uplifting [irq] best 1824 combination +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ col#12 col#0 col#1 ] +Uplifting [] best 1824 combination zp ZP_BYTE:2 [ col#12 col#0 col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ col#3 ] +Uplifting [] best 1824 combination zp ZP_BYTE:3 [ col#3 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ col#12 col#0 col#1 ] ] with [ zp ZP_BYTE:3 [ col#3 ] ] - score: 1 + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 +//SEG2 @begin +bbegin: +//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +b2_from_bbegin: + jmp b2 +//SEG5 @2 +b2: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +bend_from_b2: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG11 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + b1_from_main: + b1_from_b7: + //SEG12 [5] phi (byte) col#12 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + jmp b1 + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + b1_from_b2: + jmp b1 + //SEG14 main::@1 + b1: + jmp b2 + //SEG15 main::@2 + b2: + //SEG16 [6] if((byte) col#12<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_le_vbuc1_then_la1 + lda #$a + cmp col + bcs b1_from_b2 + jmp b7 + //SEG17 main::@7 + b7: + //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col + jmp b1_from_b7 +} +//SEG19 irq +irq: { + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 asm { lda$dc0d } + lda $dc0d + //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + lda col + sta BGCOL + //SEG23 [10] if((byte) col#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@return -- vbuz1_eq_0_then_la1 + lda col + cmp #0 + beq breturn + jmp b2 + //SEG24 irq::@2 + b2: + //SEG25 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 + inc col + jmp breturn + //SEG26 irq::@return + breturn: + //SEG27 [12] return - exit interrupt(KERNEL_MIN) + jmp $ea81 +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b2 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b7 +Removing instruction jmp b2 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label b1 with b2 +Replacing label b1_from_b2 with b2 +Removing instruction b2_from_bbegin: +Removing instruction bend_from_b2: +Removing instruction b1_from_main: +Removing instruction b1_from_b2: +Removing instruction b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bbegin: +Removing instruction b2: +Removing instruction bend: +Removing instruction b7: +Removing instruction b2: +Succesful ASM optimization Pass5UnusedLabelElimination +Skipping double jump to b2 in jmp b1_from_b7 +Skipping double jump to $ea81 in beq breturn +Succesful ASM optimization Pass5DoubleJumpElimination +Relabelling long label b1_from_b7 to b1 +Succesful ASM optimization Pass5RelabelLongLabels +Removing instruction jmp b2 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Fixing long branch [28] beq $ea81 to bne + +FINAL SYMBOL TABLE +(label) @2 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53280 +(void()**) KERNEL_IRQ +(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte) col +(byte) col#0 col zp ZP_BYTE:2 1.6666666666666665 +(byte) col#1 col zp ZP_BYTE:2 22.0 +(byte) col#12 col zp ZP_BYTE:2 114.0 +(byte) col#3 col zp ZP_BYTE:2 20.0 +interrupt(KERNEL_MIN)(void()) irq() +(label) irq::@2 +(label) irq::@return +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@7 + +zp ZP_BYTE:2 [ col#12 col#0 col#1 col#3 ] + + +FINAL ASSEMBLER +Score: 882 + +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 +//SEG2 @begin +//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main +main: { + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG11 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + //SEG12 [5] phi (byte) col#12 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 main::@1 + //SEG15 main::@2 + b2: + //SEG16 [6] if((byte) col#12<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_le_vbuc1_then_la1 + lda #$a + cmp col + bcs b2 + //SEG17 main::@7 + //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col + jmp b2 +} +//SEG19 irq +irq: { + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 asm { lda$dc0d } + lda $dc0d + //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + lda col + sta BGCOL + //SEG23 [10] if((byte) col#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@return -- vbuz1_eq_0_then_la1 + lda col + cmp #0 + bne !_ea81+ + jmp $ea81 + !_ea81: + //SEG24 irq::@2 + //SEG25 [11] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 + inc col + //SEG26 irq::@return + //SEG27 [12] return - exit interrupt(KERNEL_MIN) + jmp $ea81 +} + diff --git a/src/test/ref/longbranch-interrupt-problem.sym b/src/test/ref/longbranch-interrupt-problem.sym new file mode 100644 index 000000000..7d03c743b --- /dev/null +++ b/src/test/ref/longbranch-interrupt-problem.sym @@ -0,0 +1,21 @@ +(label) @2 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53280 +(void()**) KERNEL_IRQ +(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte) col +(byte) col#0 col zp ZP_BYTE:2 1.6666666666666665 +(byte) col#1 col zp ZP_BYTE:2 22.0 +(byte) col#12 col zp ZP_BYTE:2 114.0 +(byte) col#3 col zp ZP_BYTE:2 20.0 +interrupt(KERNEL_MIN)(void()) irq() +(label) irq::@2 +(label) irq::@return +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@7 + +zp ZP_BYTE:2 [ col#12 col#0 col#1 col#3 ] diff --git a/src/test/ref/loopsplit.asm b/src/test/ref/loopsplit.asm index eaf34c26f..6b3267e0b 100644 --- a/src/test/ref/loopsplit.asm +++ b/src/test/ref/loopsplit.asm @@ -3,6 +3,7 @@ .pc = $80d "Program" jsr main main: { + ldx #0 lda #$64 b1: sec @@ -13,6 +14,11 @@ main: { b2: cmp #$32 beq !+ + bcs b4 !: + dex + jmp b1 + b4: + inx jmp b1 } diff --git a/src/test/ref/loopsplit.cfg b/src/test/ref/loopsplit.cfg index 27ff25a3b..50c0124ac 100644 --- a/src/test/ref/loopsplit.cfg +++ b/src/test/ref/loopsplit.cfg @@ -10,8 +10,9 @@ main: scope:[main] from @1 [4] phi() to:main::@1 -main::@1: scope:[main] from main main::@2 main::@4 - [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 100 main::@2/(byte) main::i#1 main::@4/(byte) main::i#1 ) +main::@1: scope:[main] from main main::@4 main::@8 + [5] (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [6] (byte) main::i#1 ← -- (byte) main::i#2 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 to:main::@return @@ -20,7 +21,10 @@ main::@return: scope:[main] from main::@1 to:@return main::@2: scope:[main] from main::@1 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 + to:main::@8 +main::@8: scope:[main] from main::@2 + [10] (byte) main::s#2 ← -- (byte) main::s#3 to:main::@1 main::@4: scope:[main] from main::@2 - [10] phi() + [11] (byte) main::s#1 ← ++ (byte) main::s#3 to:main::@1 diff --git a/src/test/ref/loopsplit.log b/src/test/ref/loopsplit.log index 05ee1d15c..999400871 100644 --- a/src/test/ref/loopsplit.log +++ b/src/test/ref/loopsplit.log @@ -4,20 +4,30 @@ CONTROL FLOW GRAPH SSA to:@1 main: scope:[main] from @1 (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 100 + (byte) main::s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 -main::@1: scope:[main] from main main::@2 main::@4 - (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#3 main::@4/(byte) main::i#4 ) +main::@1: scope:[main] from main main::@4 main::@8 + (byte) main::s#6 ← phi( main/(byte) main::s#0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@4/(byte) main::i#4 main::@8/(byte) main::i#5 ) (byte) main::i#1 ← -- (byte) main::i#2 (bool~) main::$0 ← (byte) main::i#1 > (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 + (byte) main::s#5 ← phi( main::@1/(byte) main::s#6 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#1 ) (bool~) main::$1 ← (byte) main::i#3 > (byte/signed byte/word/signed word/dword/signed dword) 50 if((bool~) main::$1) goto main::@4 - to:main::@1 + to:main::@8 main::@4: scope:[main] from main::@2 (byte) main::i#4 ← phi( main::@2/(byte) main::i#3 ) + (byte) main::s#3 ← phi( main::@2/(byte) main::s#5 ) + (byte) main::s#1 ← ++ (byte) main::s#3 + to:main::@1 +main::@8: scope:[main] from main::@2 + (byte) main::i#5 ← phi( main::@2/(byte) main::i#3 ) + (byte) main::s#4 ← phi( main::@2/(byte) main::s#5 ) + (byte) main::s#2 ← -- (byte) main::s#4 to:main::@1 main::@return: scope:[main] from main::@1 return @@ -40,6 +50,7 @@ SYMBOL TABLE SSA (label) main::@1 (label) main::@2 (label) main::@4 +(label) main::@8 (label) main::@return (byte) main::i (byte) main::i#0 @@ -47,20 +58,32 @@ SYMBOL TABLE SSA (byte) main::i#2 (byte) main::i#3 (byte) main::i#4 +(byte) main::i#5 +(byte) main::s +(byte) main::s#0 +(byte) main::s#1 +(byte) main::s#2 +(byte) main::s#3 +(byte) main::s#4 +(byte) main::s#5 +(byte) main::s#6 Culled Empty Block (label) @2 Successful SSA optimization Pass2CullEmptyBlocks -Alias (byte) main::i#1 = (byte) main::i#3 (byte) main::i#4 +Alias (byte) main::i#1 = (byte) main::i#3 (byte) main::i#4 (byte) main::i#5 +Alias (byte) main::s#3 = (byte) main::s#5 (byte) main::s#6 (byte) main::s#4 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 Simple Condition (bool~) main::$1 if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte) main::i#0 = 100 +Constant (const byte) main::s#0 = 0 Successful SSA optimization Pass2ConstantIdentification Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) main::s#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 100 +Constant inlined main::s#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2ConstantInlining -Added new block during phi lifting main::@11(between main::@2 and main::@1) Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end @@ -68,16 +91,16 @@ Adding NOP phi() at start of main CALL GRAPH Calls in [] to main:2 -Created 1 initial phi equivalence classes -Coalesced [10] main::i#5 ← main::i#1 -Coalesced (already) [11] main::i#6 ← main::i#1 -Coalesced down to 1 phi equivalence classes -Culled Empty Block (label) main::@11 +Created 2 initial phi equivalence classes +Coalesced [11] main::i#7 ← main::i#1 +Coalesced [12] main::s#8 ← main::s#2 +Coalesced (already) [14] main::i#6 ← main::i#1 +Coalesced [15] main::s#7 ← main::s#1 +Coalesced down to 2 phi equivalence classes Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@4 FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -92,8 +115,9 @@ FINAL CONTROL FLOW GRAPH main: scope:[main] from @1 [4] phi() to:main::@1 -main::@1: scope:[main] from main main::@2 main::@4 - [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 100 main::@2/(byte) main::i#1 main::@4/(byte) main::i#1 ) +main::@1: scope:[main] from main main::@4 main::@8 + [5] (byte) main::s#3 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@4/(byte) main::s#1 main::@8/(byte) main::s#2 ) + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 100 main::@4/(byte) main::i#1 main::@8/(byte) main::i#1 ) [6] (byte) main::i#1 ← -- (byte) main::i#2 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 to:main::@return @@ -102,23 +126,33 @@ main::@return: scope:[main] from main::@1 to:@return main::@2: scope:[main] from main::@1 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 + to:main::@8 +main::@8: scope:[main] from main::@2 + [10] (byte) main::s#2 ← -- (byte) main::s#3 to:main::@1 main::@4: scope:[main] from main::@2 - [10] phi() + [11] (byte) main::s#1 ← ++ (byte) main::s#3 to:main::@1 VARIABLE REGISTER WEIGHTS (void()) main() (byte) main::i -(byte) main::i#1 103.75 -(byte) main::i#2 213.0 +(byte) main::i#1 11.0 +(byte) main::i#2 33.0 +(byte) main::s +(byte) main::s#1 22.0 +(byte) main::s#2 22.0 +(byte) main::s#3 11.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] +[ main::s#3 main::s#1 main::s#2 ] Complete equivalence classes [ main::i#2 main::i#1 ] +[ main::s#3 main::s#1 main::s#2 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Allocated zp ZP_BYTE:3 [ main::s#3 main::s#1 main::s#2 ] INITIAL ASM //SEG0 Basic Upstart @@ -145,54 +179,64 @@ bend: //SEG9 main main: { .label i = 2 + .label s = 3 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuz1=vbuc1 + //SEG11 [5] phi (byte) main::s#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta s + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#1] -- vbuz1=vbuc1 lda #$64 sta i jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 + //SEG14 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuz1=_dec_vbuz1 dec i - //SEG14 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 + //SEG15 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuz1_gt_0_then_la1 lda i bne b2 jmp breturn - //SEG15 main::@return + //SEG16 main::@return breturn: - //SEG16 [8] return + //SEG17 [8] return rts - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 -- vbuz1_gt_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 -- vbuz1_gt_vbuc1_then_la1 lda i cmp #$32 beq !+ - bcs b4_from_b2 + bcs b4 !: - //SEG19 [5] phi from main::@2 main::@4 to main::@1 [phi:main::@2/main::@4->main::@1] - b1_from_b2: + jmp b8 + //SEG20 main::@8 + b8: + //SEG21 [10] (byte) main::s#2 ← -- (byte) main::s#3 -- vbuz1=_dec_vbuz1 + dec s + //SEG22 [5] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b4: - //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2/main::@4->main::@1#0] -- register_copy + b1_from_b8: + //SEG23 [5] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG24 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy jmp b1 - //SEG21 [10] phi from main::@2 to main::@4 [phi:main::@2->main::@4] - b4_from_b2: - jmp b4 - //SEG22 main::@4 + //SEG25 main::@4 b4: + //SEG26 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuz1=_inc_vbuz1 + inc s jmp b1_from_b4 } REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ main::s#3 main::s#1 main::s#2 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 316.75: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 55: zp ZP_BYTE:3 [ main::s#3 main::s#1 main::s#2 ] 44: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 2728 combination reg byte a [ main::i#2 main::i#1 ] -Uplifting [] best 2728 combination +Uplifting [main] best 403 combination reg byte x [ main::s#3 main::s#1 main::s#2 ] reg byte a [ main::i#2 main::i#1 ] +Uplifting [] best 403 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -220,39 +264,46 @@ bend: main: { //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuaa=vbuc1 + //SEG11 [5] phi (byte) main::s#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#1] -- vbuaa=vbuc1 lda #$64 jmp b1 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa + //SEG14 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa sec sbc #1 - //SEG14 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_gt_0_then_la1 + //SEG15 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_gt_0_then_la1 cmp #0 bne b2 jmp breturn - //SEG15 main::@return + //SEG16 main::@return breturn: - //SEG16 [8] return + //SEG17 [8] return rts - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 -- vbuaa_gt_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 -- vbuaa_gt_vbuc1_then_la1 cmp #$32 beq !+ - bcs b4_from_b2 + bcs b4 !: - //SEG19 [5] phi from main::@2 main::@4 to main::@1 [phi:main::@2/main::@4->main::@1] - b1_from_b2: + jmp b8 + //SEG20 main::@8 + b8: + //SEG21 [10] (byte) main::s#2 ← -- (byte) main::s#3 -- vbuxx=_dec_vbuxx + dex + //SEG22 [5] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b4: - //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2/main::@4->main::@1#0] -- register_copy + b1_from_b8: + //SEG23 [5] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG24 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy jmp b1 - //SEG21 [10] phi from main::@2 to main::@4 [phi:main::@2->main::@4] - b4_from_b2: - jmp b4 - //SEG22 main::@4 + //SEG25 main::@4 b4: + //SEG26 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuxx=_inc_vbuxx + inx jmp b1_from_b4 } @@ -261,33 +312,27 @@ Removing instruction jmp b1 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp breturn -Removing instruction jmp b4 +Removing instruction jmp b8 Succesful ASM optimization Pass5NextJumpElimination -Replacing label b4_from_b2 with b4 +Replacing label b1_from_b4 with b1_from_b8 Removing instruction bbegin: Removing instruction b1_from_bbegin: Removing instruction main_from_b1: Removing instruction bend_from_b1: -Removing instruction b1_from_b2: -Removing instruction b4_from_b2: +Removing instruction b1_from_b4: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction b1: Removing instruction bend: Removing instruction b1_from_main: Removing instruction breturn: +Removing instruction b8: Succesful ASM optimization Pass5UnusedLabelElimination -Skipping double jump to b1_from_b4 in bcs b4 -Skipping double jump to b1 in jmp b1_from_b4 +Skipping double jump to b1 in jmp b1_from_b8 Succesful ASM optimization Pass5DoubleJumpElimination -Relabelling long label b1_from_b4 to b3 +Relabelling long label b1_from_b8 to b3 Succesful ASM optimization Pass5RelabelLongLabels -Removing instruction bcs b3 -Succesful ASM optimization Pass5NextJumpElimination Removing instruction b3: -Removing instruction b4: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp b1 -Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE (label) @1 @@ -297,16 +342,22 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@4 +(label) main::@8 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte a 103.75 -(byte) main::i#2 reg byte a 213.0 +(byte) main::i#1 reg byte a 11.0 +(byte) main::i#2 reg byte a 33.0 +(byte) main::s +(byte) main::s#1 reg byte x 22.0 +(byte) main::s#2 reg byte x 22.0 +(byte) main::s#3 reg byte x 11.0 reg byte a [ main::i#2 main::i#1 ] +reg byte x [ main::s#3 main::s#1 main::s#2 ] FINAL ASSEMBLER -Score: 1812 +Score: 307 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -324,29 +375,39 @@ Score: 1812 //SEG9 main main: { //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#0] -- vbuaa=vbuc1 + //SEG11 [5] phi (byte) main::s#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG12 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 100 [phi:main->main::@1#1] -- vbuaa=vbuc1 lda #$64 - //SEG12 main::@1 + //SEG13 main::@1 b1: - //SEG13 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa + //SEG14 [6] (byte) main::i#1 ← -- (byte) main::i#2 -- vbuaa=_dec_vbuaa sec sbc #1 - //SEG14 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_gt_0_then_la1 + //SEG15 [7] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 -- vbuaa_gt_0_then_la1 cmp #0 bne b2 - //SEG15 main::@return - //SEG16 [8] return + //SEG16 main::@return + //SEG17 [8] return rts - //SEG17 main::@2 + //SEG18 main::@2 b2: - //SEG18 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 -- vbuaa_gt_vbuc1_then_la1 + //SEG19 [9] if((byte) main::i#1>(byte/signed byte/word/signed word/dword/signed dword) 50) goto main::@4 -- vbuaa_gt_vbuc1_then_la1 cmp #$32 beq !+ + bcs b4 !: - //SEG19 [5] phi from main::@2 main::@4 to main::@1 [phi:main::@2/main::@4->main::@1] - //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2/main::@4->main::@1#0] -- register_copy + //SEG20 main::@8 + //SEG21 [10] (byte) main::s#2 ← -- (byte) main::s#3 -- vbuxx=_dec_vbuxx + dex + //SEG22 [5] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] + //SEG23 [5] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG24 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy + jmp b1 + //SEG25 main::@4 + b4: + //SEG26 [11] (byte) main::s#1 ← ++ (byte) main::s#3 -- vbuxx=_inc_vbuxx + inx jmp b1 - //SEG21 [10] phi from main::@2 to main::@4 [phi:main::@2->main::@4] - //SEG22 main::@4 } diff --git a/src/test/ref/loopsplit.sym b/src/test/ref/loopsplit.sym index 5bfad23c0..ced3b13db 100644 --- a/src/test/ref/loopsplit.sym +++ b/src/test/ref/loopsplit.sym @@ -5,9 +5,15 @@ (label) main::@1 (label) main::@2 (label) main::@4 +(label) main::@8 (label) main::@return (byte) main::i -(byte) main::i#1 reg byte a 103.75 -(byte) main::i#2 reg byte a 213.0 +(byte) main::i#1 reg byte a 11.0 +(byte) main::i#2 reg byte a 33.0 +(byte) main::s +(byte) main::s#1 reg byte x 22.0 +(byte) main::s#2 reg byte x 22.0 +(byte) main::s#3 reg byte x 11.0 reg byte a [ main::i#2 main::i#1 ] +reg byte x [ main::s#3 main::s#1 main::s#2 ] diff --git a/src/test/ref/modglobal.asm b/src/test/ref/modglobal.asm index 4279f6975..e286ab51b 100644 --- a/src/test/ref/modglobal.asm +++ b/src/test/ref/modglobal.asm @@ -2,18 +2,26 @@ :BasicUpstart(main) .pc = $80d "Program" .label SCREEN = $400 + .label cnt = 2 jsr main main: { ldx #0 + ldy #0 + txa jsr inccnt sta SCREEN - inx + lda cnt + clc + adc #1 jsr inccnt sta SCREEN+1 rts } inccnt: { + clc + adc #1 + sta cnt + iny inx - txa rts } diff --git a/src/test/ref/modglobal.cfg b/src/test/ref/modglobal.cfg index 7cf57a777..63be22d62 100644 --- a/src/test/ref/modglobal.cfg +++ b/src/test/ref/modglobal.cfg @@ -27,10 +27,14 @@ main::@return: scope:[main] from main::@2 [14] return to:@return inccnt: scope:[inccnt] from main main::@1 + [15] (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) cnt3#11 ) + [15] (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) cnt2#11 ) [15] (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) cnt#2 ) [16] (byte) cnt#12 ← ++ (byte) cnt#11 - [17] (byte) inccnt::return#2 ← (byte) cnt#12 + [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 + [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 + [19] (byte) inccnt::return#2 ← (byte) cnt#12 to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt - [18] return + [20] return to:@return diff --git a/src/test/ref/modglobal.log b/src/test/ref/modglobal.log index fa556f9ad..18aebfc0f 100644 --- a/src/test/ref/modglobal.log +++ b/src/test/ref/modglobal.log @@ -2,54 +2,84 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte) cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) cnt2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) cnt3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte[256]) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:@2 main: scope:[main] from @2 + (byte) cnt3#13 ← phi( @2/(byte) cnt3#14 ) + (byte) cnt2#13 ← phi( @2/(byte) cnt2#14 ) (byte) cnt#14 ← phi( @2/(byte) cnt#15 ) call inccnt (byte) inccnt::return#0 ← (byte) inccnt::return#3 to:main::@1 main::@1: scope:[main] from main + (byte) cnt3#7 ← phi( main/(byte) cnt3#5 ) + (byte) cnt2#7 ← phi( main/(byte) cnt2#5 ) (byte) cnt#8 ← phi( main/(byte) cnt#6 ) (byte) inccnt::return#4 ← phi( main/(byte) inccnt::return#0 ) (byte~) main::$0 ← (byte) inccnt::return#4 (byte) cnt#1 ← (byte) cnt#8 + (byte) cnt2#1 ← (byte) cnt2#7 + (byte) cnt3#1 ← (byte) cnt3#7 *((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 (byte) cnt#2 ← ++ (byte) cnt#1 call inccnt (byte) inccnt::return#1 ← (byte) inccnt::return#3 to:main::@2 main::@2: scope:[main] from main::@1 + (byte) cnt3#8 ← phi( main::@1/(byte) cnt3#5 ) + (byte) cnt2#8 ← phi( main::@1/(byte) cnt2#5 ) (byte) cnt#9 ← phi( main::@1/(byte) cnt#6 ) (byte) inccnt::return#5 ← phi( main::@1/(byte) inccnt::return#1 ) (byte~) main::$1 ← (byte) inccnt::return#5 (byte) cnt#3 ← (byte) cnt#9 + (byte) cnt2#2 ← (byte) cnt2#8 + (byte) cnt3#2 ← (byte) cnt3#8 *((byte[256]) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 to:main::@return main::@return: scope:[main] from main::@2 + (byte) cnt3#9 ← phi( main::@2/(byte) cnt3#2 ) + (byte) cnt2#9 ← phi( main::@2/(byte) cnt2#2 ) (byte) cnt#10 ← phi( main::@2/(byte) cnt#3 ) (byte) cnt#4 ← (byte) cnt#10 + (byte) cnt2#3 ← (byte) cnt2#9 + (byte) cnt3#3 ← (byte) cnt3#9 return to:@return inccnt: scope:[inccnt] from main main::@1 + (byte) cnt3#10 ← phi( main/(byte) cnt3#13 main::@1/(byte) cnt3#1 ) + (byte) cnt2#10 ← phi( main/(byte) cnt2#13 main::@1/(byte) cnt2#1 ) (byte) cnt#11 ← phi( main/(byte) cnt#14 main::@1/(byte) cnt#2 ) (byte) cnt#5 ← ++ (byte) cnt#11 + (byte) cnt2#4 ← ++ (byte) cnt2#10 + (byte) cnt3#4 ← ++ (byte) cnt3#10 (byte) inccnt::return#2 ← (byte) cnt#5 to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt + (byte) cnt3#11 ← phi( inccnt/(byte) cnt3#4 ) + (byte) cnt2#11 ← phi( inccnt/(byte) cnt2#4 ) (byte) cnt#12 ← phi( inccnt/(byte) cnt#5 ) (byte) inccnt::return#6 ← phi( inccnt/(byte) inccnt::return#2 ) (byte) inccnt::return#3 ← (byte) inccnt::return#6 (byte) cnt#6 ← (byte) cnt#12 + (byte) cnt2#5 ← (byte) cnt2#11 + (byte) cnt3#5 ← (byte) cnt3#11 return to:@return @2: scope:[] from @begin + (byte) cnt3#14 ← phi( @begin/(byte) cnt3#0 ) + (byte) cnt2#14 ← phi( @begin/(byte) cnt2#0 ) (byte) cnt#15 ← phi( @begin/(byte) cnt#0 ) call main to:@3 @3: scope:[] from @2 + (byte) cnt3#12 ← phi( @2/(byte) cnt3#3 ) + (byte) cnt2#12 ← phi( @2/(byte) cnt2#3 ) (byte) cnt#13 ← phi( @2/(byte) cnt#4 ) (byte) cnt#7 ← (byte) cnt#13 + (byte) cnt2#6 ← (byte) cnt2#12 + (byte) cnt3#6 ← (byte) cnt3#12 to:@end @end: scope:[] from @3 @@ -77,6 +107,38 @@ SYMBOL TABLE SSA (byte) cnt#7 (byte) cnt#8 (byte) cnt#9 +(byte) cnt2 +(byte) cnt2#0 +(byte) cnt2#1 +(byte) cnt2#10 +(byte) cnt2#11 +(byte) cnt2#12 +(byte) cnt2#13 +(byte) cnt2#14 +(byte) cnt2#2 +(byte) cnt2#3 +(byte) cnt2#4 +(byte) cnt2#5 +(byte) cnt2#6 +(byte) cnt2#7 +(byte) cnt2#8 +(byte) cnt2#9 +(byte) cnt3 +(byte) cnt3#0 +(byte) cnt3#1 +(byte) cnt3#10 +(byte) cnt3#11 +(byte) cnt3#12 +(byte) cnt3#13 +(byte) cnt3#14 +(byte) cnt3#2 +(byte) cnt3#3 +(byte) cnt3#4 +(byte) cnt3#5 +(byte) cnt3#6 +(byte) cnt3#7 +(byte) cnt3#8 +(byte) cnt3#9 (byte()) inccnt() (label) inccnt::@return (byte) inccnt::return @@ -96,19 +158,39 @@ SYMBOL TABLE SSA Alias (byte) inccnt::return#0 = (byte) inccnt::return#4 Alias (byte) cnt#1 = (byte) cnt#8 +Alias (byte) cnt2#1 = (byte) cnt2#7 +Alias (byte) cnt3#1 = (byte) cnt3#7 Alias (byte) inccnt::return#1 = (byte) inccnt::return#5 Alias (byte) cnt#10 = (byte) cnt#3 (byte) cnt#9 (byte) cnt#4 +Alias (byte) cnt2#2 = (byte) cnt2#8 (byte) cnt2#9 (byte) cnt2#3 +Alias (byte) cnt3#2 = (byte) cnt3#8 (byte) cnt3#9 (byte) cnt3#3 Alias (byte) inccnt::return#2 = (byte) inccnt::return#6 (byte) inccnt::return#3 Alias (byte) cnt#12 = (byte) cnt#5 (byte) cnt#6 +Alias (byte) cnt2#11 = (byte) cnt2#4 (byte) cnt2#5 +Alias (byte) cnt3#11 = (byte) cnt3#4 (byte) cnt3#5 Alias (byte) cnt#0 = (byte) cnt#15 +Alias (byte) cnt2#0 = (byte) cnt2#14 +Alias (byte) cnt3#0 = (byte) cnt3#14 Alias (byte) cnt#13 = (byte) cnt#7 +Alias (byte) cnt2#12 = (byte) cnt2#6 +Alias (byte) cnt3#12 = (byte) cnt3#6 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) cnt#14 (byte) cnt#0 +Redundant Phi (byte) cnt2#13 (byte) cnt2#0 +Redundant Phi (byte) cnt3#13 (byte) cnt3#0 Redundant Phi (byte) cnt#1 (byte) cnt#12 +Redundant Phi (byte) cnt2#1 (byte) cnt2#11 +Redundant Phi (byte) cnt3#1 (byte) cnt3#11 Redundant Phi (byte) cnt#10 (byte) cnt#12 +Redundant Phi (byte) cnt2#2 (byte) cnt2#11 +Redundant Phi (byte) cnt3#2 (byte) cnt3#11 Redundant Phi (byte) cnt#13 (byte) cnt#10 +Redundant Phi (byte) cnt2#12 (byte) cnt2#2 +Redundant Phi (byte) cnt3#12 (byte) cnt3#2 Successful SSA optimization Pass2RedundantPhiElimination Constant (const byte) cnt#0 = 0 +Constant (const byte) cnt2#0 = 0 +Constant (const byte) cnt3#0 = 0 Constant (const byte[256]) SCREEN#0 = ((byte*))1024 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(SCREEN#0+0) @@ -117,7 +199,11 @@ Successful SSA optimization Pass2ConstantAdditionElimination Culled Empty Block (label) @3 Successful SSA optimization Pass2CullEmptyBlocks Inlining constant with var siblings (const byte) cnt#0 +Inlining constant with var siblings (const byte) cnt2#0 +Inlining constant with var siblings (const byte) cnt3#0 Constant inlined cnt#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined cnt3#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined cnt2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Successful SSA optimization Pass2ConstantInlining Simplifying constant plus zero SCREEN#0+0 Adding NOP phi() at start of @begin @@ -126,11 +212,13 @@ Adding NOP phi() at start of @end Adding NOP phi() at start of main CALL GRAPH Calls in [] to main:2 -Calls in [main] to inccnt:5 inccnt:11 +Calls in [main] to inccnt:5 inccnt:13 -Created 1 initial phi equivalence classes +Created 3 initial phi equivalence classes Coalesced [10] cnt#16 ← cnt#2 -Coalesced down to 1 phi equivalence classes +Coalesced [11] cnt2#15 ← cnt2#11 +Coalesced [12] cnt3#15 ← cnt3#11 +Coalesced down to 3 phi equivalence classes Adding NOP phi() at start of @begin Adding NOP phi() at start of @2 Adding NOP phi() at start of @end @@ -166,12 +254,16 @@ main::@return: scope:[main] from main::@2 [14] return to:@return inccnt: scope:[inccnt] from main main::@1 + [15] (byte) cnt3#10 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) cnt3#11 ) + [15] (byte) cnt2#10 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) cnt2#11 ) [15] (byte) cnt#11 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) cnt#2 ) [16] (byte) cnt#12 ← ++ (byte) cnt#11 - [17] (byte) inccnt::return#2 ← (byte) cnt#12 + [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 + [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 + [19] (byte) inccnt::return#2 ← (byte) cnt#12 to:inccnt::@return inccnt::@return: scope:[inccnt] from inccnt - [18] return + [20] return to:@return @@ -179,8 +271,14 @@ VARIABLE REGISTER WEIGHTS (byte[256]) SCREEN (byte) cnt (byte) cnt#11 4.0 -(byte) cnt#12 0.8571428571428571 +(byte) cnt#12 0.6666666666666666 (byte) cnt#2 4.0 +(byte) cnt2 +(byte) cnt2#10 2.0 +(byte) cnt2#11 0.4444444444444444 +(byte) cnt3 +(byte) cnt3#10 1.3333333333333333 +(byte) cnt3#11 0.5 (byte()) inccnt() (byte) inccnt::return (byte) inccnt::return#0 4.0 @@ -192,6 +290,8 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ cnt#11 cnt#2 ] +[ cnt2#10 cnt2#11 ] +[ cnt3#10 cnt3#11 ] Added variable inccnt::return#0 to zero page equivalence class [ inccnt::return#0 ] Added variable main::$0 to zero page equivalence class [ main::$0 ] Added variable inccnt::return#1 to zero page equivalence class [ inccnt::return#1 ] @@ -200,6 +300,8 @@ Added variable cnt#12 to zero page equivalence class [ cnt#12 ] Added variable inccnt::return#2 to zero page equivalence class [ inccnt::return#2 ] Complete equivalence classes [ cnt#11 cnt#2 ] +[ cnt2#10 cnt2#11 ] +[ cnt3#10 cnt3#11 ] [ inccnt::return#0 ] [ main::$0 ] [ inccnt::return#1 ] @@ -207,12 +309,14 @@ Complete equivalence classes [ cnt#12 ] [ inccnt::return#2 ] Allocated zp ZP_BYTE:2 [ cnt#11 cnt#2 ] -Allocated zp ZP_BYTE:3 [ inccnt::return#0 ] -Allocated zp ZP_BYTE:4 [ main::$0 ] -Allocated zp ZP_BYTE:5 [ inccnt::return#1 ] -Allocated zp ZP_BYTE:6 [ main::$1 ] -Allocated zp ZP_BYTE:7 [ cnt#12 ] -Allocated zp ZP_BYTE:8 [ inccnt::return#2 ] +Allocated zp ZP_BYTE:3 [ cnt2#10 cnt2#11 ] +Allocated zp ZP_BYTE:4 [ cnt3#10 cnt3#11 ] +Allocated zp ZP_BYTE:5 [ inccnt::return#0 ] +Allocated zp ZP_BYTE:6 [ main::$0 ] +Allocated zp ZP_BYTE:7 [ inccnt::return#1 ] +Allocated zp ZP_BYTE:8 [ main::$1 ] +Allocated zp ZP_BYTE:9 [ cnt#12 ] +Allocated zp ZP_BYTE:10 [ inccnt::return#2 ] INITIAL ASM //SEG0 Basic Upstart @@ -222,7 +326,9 @@ INITIAL ASM //SEG1 Global Constants & labels .label SCREEN = $400 .label cnt = 2 - .label cnt_12 = 7 + .label cnt2 = 3 + .label cnt3 = 4 + .label cnt_12 = 9 //SEG2 @begin bbegin: //SEG3 [1] phi from @begin to @2 [phi:@begin->@2] @@ -241,90 +347,108 @@ bend_from_b2: bend: //SEG9 main main: { - .label _0 = 4 - .label _1 = 6 + .label _0 = 6 + .label _1 = 8 //SEG10 [5] call inccnt //SEG11 [15] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG12 [15] phi (byte) cnt#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuz1=vbuc1 + //SEG12 [15] phi (byte) cnt3#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuz1=vbuc1 + lda #0 + sta cnt3 + //SEG13 [15] phi (byte) cnt2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#1] -- vbuz1=vbuc1 + lda #0 + sta cnt2 + //SEG14 [15] phi (byte) cnt#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#2] -- vbuz1=vbuc1 lda #0 sta cnt jsr inccnt - //SEG13 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 + //SEG15 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 lda inccnt.return_2 sta inccnt.return jmp b1 - //SEG14 main::@1 + //SEG16 main::@1 b1: - //SEG15 [7] (byte~) main::$0 ← (byte) inccnt::return#0 -- vbuz1=vbuz2 + //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 -- vbuz1=vbuz2 lda inccnt.return sta _0 - //SEG16 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 + //SEG18 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuz1 lda _0 sta SCREEN - //SEG17 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuz1=_inc_vbuz2 + //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuz1=_inc_vbuz2 ldy cnt_12 iny sty cnt - //SEG18 [10] call inccnt - //SEG19 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG20 [10] call inccnt + //SEG21 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG20 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy + //SEG22 [15] phi (byte) cnt3#10 = (byte) cnt3#11 [phi:main::@1->inccnt#0] -- register_copy + //SEG23 [15] phi (byte) cnt2#10 = (byte) cnt2#11 [phi:main::@1->inccnt#1] -- register_copy + //SEG24 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt - //SEG21 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 + //SEG25 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 -- vbuz1=vbuz2 lda inccnt.return_2 sta inccnt.return_1 jmp b2 - //SEG22 main::@2 + //SEG26 main::@2 b2: - //SEG23 [12] (byte~) main::$1 ← (byte) inccnt::return#1 -- vbuz1=vbuz2 + //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 -- vbuz1=vbuz2 lda inccnt.return_1 sta _1 - //SEG24 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 + //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuz1 lda _1 sta SCREEN+1 jmp breturn - //SEG25 main::@return + //SEG29 main::@return breturn: - //SEG26 [14] return + //SEG30 [14] return rts } -//SEG27 inccnt +//SEG31 inccnt inccnt: { - .label return = 3 - .label return_1 = 5 - .label return_2 = 8 - //SEG28 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuz2 + .label return = 5 + .label return_1 = 7 + .label return_2 = $a + //SEG32 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuz2 ldy cnt iny sty cnt_12 - //SEG29 [17] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuz1=vbuz2 + //SEG33 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 -- vbuz1=_inc_vbuz1 + inc cnt2 + //SEG34 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuz1=_inc_vbuz1 + inc cnt3 + //SEG35 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuz1=vbuz2 lda cnt_12 sta return_2 jmp breturn - //SEG30 inccnt::@return + //SEG36 inccnt::@return breturn: - //SEG31 [18] return + //SEG37 [20] return rts } REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp ZP_BYTE:2 [ cnt#11 cnt#2 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ inccnt::return#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ main::$0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ inccnt::return#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:6 [ main::$1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:7 [ cnt#12 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:8 [ inccnt::return#2 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ cnt2#10 cnt2#11 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ cnt3#10 cnt3#11 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ inccnt::return#0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ main::$0 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ inccnt::return#1 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:8 [ main::$1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:9 [ cnt#12 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ inccnt::return#2 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [inccnt] 4: zp ZP_BYTE:3 [ inccnt::return#0 ] 4: zp ZP_BYTE:5 [ inccnt::return#1 ] 1.5: zp ZP_BYTE:8 [ inccnt::return#2 ] -Uplift Scope [] 8: zp ZP_BYTE:2 [ cnt#11 cnt#2 ] 0.86: zp ZP_BYTE:7 [ cnt#12 ] -Uplift Scope [main] 4: zp ZP_BYTE:4 [ main::$0 ] 4: zp ZP_BYTE:6 [ main::$1 ] +Uplift Scope [] 8: zp ZP_BYTE:2 [ cnt#11 cnt#2 ] 2.44: zp ZP_BYTE:3 [ cnt2#10 cnt2#11 ] 1.83: zp ZP_BYTE:4 [ cnt3#10 cnt3#11 ] 0.67: zp ZP_BYTE:9 [ cnt#12 ] +Uplift Scope [inccnt] 4: zp ZP_BYTE:5 [ inccnt::return#0 ] 4: zp ZP_BYTE:7 [ inccnt::return#1 ] 1.5: zp ZP_BYTE:10 [ inccnt::return#2 ] +Uplift Scope [main] 4: zp ZP_BYTE:6 [ main::$0 ] 4: zp ZP_BYTE:8 [ main::$1 ] -Uplifting [inccnt] best 92 combination reg byte a [ inccnt::return#0 ] reg byte a [ inccnt::return#1 ] reg byte a [ inccnt::return#2 ] -Uplifting [] best 76 combination reg byte x [ cnt#11 cnt#2 ] reg byte x [ cnt#12 ] -Uplifting [main] best 64 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] +Uplifting [] best 116 combination reg byte a [ cnt#11 cnt#2 ] reg byte y [ cnt2#10 cnt2#11 ] reg byte x [ cnt3#10 cnt3#11 ] zp ZP_BYTE:9 [ cnt#12 ] +Limited combination testing to 100 combinations of 256 possible. +Uplifting [inccnt] best 95 combination reg byte a [ inccnt::return#0 ] reg byte a [ inccnt::return#1 ] reg byte a [ inccnt::return#2 ] +Uplifting [main] best 83 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:9 [ cnt#12 ] +Uplifting [] best 83 combination zp ZP_BYTE:9 [ cnt#12 ] +Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:2 [ cnt#12 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -333,6 +457,7 @@ ASSEMBLER BEFORE OPTIMIZATION .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 + .label cnt = 2 //SEG2 @begin bbegin: //SEG3 [1] phi from @begin to @2 [phi:@begin->@2] @@ -354,50 +479,64 @@ main: { //SEG10 [5] call inccnt //SEG11 [15] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG12 [15] phi (byte) cnt#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 + //SEG12 [15] phi (byte) cnt3#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 ldx #0 + //SEG13 [15] phi (byte) cnt2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#1] -- vbuyy=vbuc1 + ldy #0 + //SEG14 [15] phi (byte) cnt#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#2] -- vbuaa=vbuc1 + lda #0 jsr inccnt - //SEG13 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 + //SEG15 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 // (byte) inccnt::return#0 = (byte) inccnt::return#2 // register copy reg byte a jmp b1 - //SEG14 main::@1 + //SEG16 main::@1 b1: - //SEG15 [7] (byte~) main::$0 ← (byte) inccnt::return#0 + //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG16 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG18 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta SCREEN - //SEG17 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuxx=_inc_vbuxx - inx - //SEG18 [10] call inccnt - //SEG19 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuaa=_inc_vbuz1 + lda cnt + clc + adc #1 + //SEG20 [10] call inccnt + //SEG21 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG20 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy + //SEG22 [15] phi (byte) cnt3#10 = (byte) cnt3#11 [phi:main::@1->inccnt#0] -- register_copy + //SEG23 [15] phi (byte) cnt2#10 = (byte) cnt2#11 [phi:main::@1->inccnt#1] -- register_copy + //SEG24 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt - //SEG21 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 + //SEG25 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 // (byte) inccnt::return#1 = (byte) inccnt::return#2 // register copy reg byte a jmp b2 - //SEG22 main::@2 + //SEG26 main::@2 b2: - //SEG23 [12] (byte~) main::$1 ← (byte) inccnt::return#1 + //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 // (byte~) main::$1 = (byte) inccnt::return#1 // register copy reg byte a - //SEG24 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta SCREEN+1 jmp breturn - //SEG25 main::@return + //SEG29 main::@return breturn: - //SEG26 [14] return + //SEG30 [14] return rts } -//SEG27 inccnt +//SEG31 inccnt inccnt: { - //SEG28 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuxx=_inc_vbuxx + //SEG32 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuaa + clc + adc #1 + sta cnt + //SEG33 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 -- vbuyy=_inc_vbuyy + iny + //SEG34 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuxx=_inc_vbuxx inx - //SEG29 [17] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuxx - txa + //SEG35 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuz1 + lda cnt jmp breturn - //SEG30 inccnt::@return + //SEG36 inccnt::@return breturn: - //SEG31 [18] return + //SEG37 [20] return rts } @@ -409,6 +548,9 @@ Removing instruction jmp b2 Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination +Replacing instruction lda #0 with TXA +Removing instruction lda cnt +Succesful ASM optimization Pass5UnnecesaryLoadElimination Removing instruction bbegin: Removing instruction b2_from_bbegin: Removing instruction main_from_b2: @@ -431,9 +573,15 @@ FINAL SYMBOL TABLE (byte[256]) SCREEN (const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) cnt -(byte) cnt#11 reg byte x 4.0 -(byte) cnt#12 reg byte x 0.8571428571428571 -(byte) cnt#2 reg byte x 4.0 +(byte) cnt#11 reg byte a 4.0 +(byte) cnt#12 cnt zp ZP_BYTE:2 0.6666666666666666 +(byte) cnt#2 reg byte a 4.0 +(byte) cnt2 +(byte) cnt2#10 reg byte y 2.0 +(byte) cnt2#11 reg byte y 0.4444444444444444 +(byte) cnt3 +(byte) cnt3#10 reg byte x 1.3333333333333333 +(byte) cnt3#11 reg byte x 0.5 (byte()) inccnt() (label) inccnt::@return (byte) inccnt::return @@ -447,17 +595,19 @@ FINAL SYMBOL TABLE (label) main::@2 (label) main::@return -reg byte x [ cnt#11 cnt#2 ] +reg byte a [ cnt#11 cnt#2 ] +reg byte y [ cnt2#10 cnt2#11 ] +reg byte x [ cnt3#10 cnt3#11 ] reg byte a [ inccnt::return#0 ] reg byte a [ main::$0 ] reg byte a [ inccnt::return#1 ] reg byte a [ main::$1 ] -reg byte x [ cnt#12 ] +zp ZP_BYTE:2 [ cnt#12 ] reg byte a [ inccnt::return#2 ] FINAL ASSEMBLER -Score: 46 +Score: 62 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -465,6 +615,7 @@ Score: 46 .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 + .label cnt = 2 //SEG2 @begin //SEG3 [1] phi from @begin to @2 [phi:@begin->@2] //SEG4 @2 @@ -477,41 +628,54 @@ Score: 46 main: { //SEG10 [5] call inccnt //SEG11 [15] phi from main to inccnt [phi:main->inccnt] - //SEG12 [15] phi (byte) cnt#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 + //SEG12 [15] phi (byte) cnt3#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#0] -- vbuxx=vbuc1 ldx #0 + //SEG13 [15] phi (byte) cnt2#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#1] -- vbuyy=vbuc1 + ldy #0 + //SEG14 [15] phi (byte) cnt#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->inccnt#2] -- vbuaa=vbuc1 + txa jsr inccnt - //SEG13 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 + //SEG15 [6] (byte) inccnt::return#0 ← (byte) inccnt::return#2 // (byte) inccnt::return#0 = (byte) inccnt::return#2 // register copy reg byte a - //SEG14 main::@1 - //SEG15 [7] (byte~) main::$0 ← (byte) inccnt::return#0 + //SEG16 main::@1 + //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG16 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa + //SEG18 [8] *((const byte[256]) SCREEN#0) ← (byte~) main::$0 -- _deref_pbuc1=vbuaa sta SCREEN - //SEG17 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuxx=_inc_vbuxx - inx - //SEG18 [10] call inccnt - //SEG19 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] - //SEG20 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#0] -- register_copy + //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 -- vbuaa=_inc_vbuz1 + lda cnt + clc + adc #1 + //SEG20 [10] call inccnt + //SEG21 [15] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG22 [15] phi (byte) cnt3#10 = (byte) cnt3#11 [phi:main::@1->inccnt#0] -- register_copy + //SEG23 [15] phi (byte) cnt2#10 = (byte) cnt2#11 [phi:main::@1->inccnt#1] -- register_copy + //SEG24 [15] phi (byte) cnt#11 = (byte) cnt#2 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt - //SEG21 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 + //SEG25 [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 // (byte) inccnt::return#1 = (byte) inccnt::return#2 // register copy reg byte a - //SEG22 main::@2 - //SEG23 [12] (byte~) main::$1 ← (byte) inccnt::return#1 + //SEG26 main::@2 + //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 // (byte~) main::$1 = (byte) inccnt::return#1 // register copy reg byte a - //SEG24 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa + //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 -- _deref_pbuc1=vbuaa sta SCREEN+1 - //SEG25 main::@return - //SEG26 [14] return + //SEG29 main::@return + //SEG30 [14] return rts } -//SEG27 inccnt +//SEG31 inccnt inccnt: { - //SEG28 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuxx=_inc_vbuxx + //SEG32 [16] (byte) cnt#12 ← ++ (byte) cnt#11 -- vbuz1=_inc_vbuaa + clc + adc #1 + sta cnt + //SEG33 [17] (byte) cnt2#11 ← ++ (byte) cnt2#10 -- vbuyy=_inc_vbuyy + iny + //SEG34 [18] (byte) cnt3#11 ← ++ (byte) cnt3#10 -- vbuxx=_inc_vbuxx inx - //SEG29 [17] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuxx - txa - //SEG30 inccnt::@return - //SEG31 [18] return + //SEG35 [19] (byte) inccnt::return#2 ← (byte) cnt#12 -- vbuaa=vbuz1 + //SEG36 inccnt::@return + //SEG37 [20] return rts } diff --git a/src/test/ref/modglobal.sym b/src/test/ref/modglobal.sym index d3f24d405..41454f6dd 100644 --- a/src/test/ref/modglobal.sym +++ b/src/test/ref/modglobal.sym @@ -4,9 +4,15 @@ (byte[256]) SCREEN (const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) cnt -(byte) cnt#11 reg byte x 4.0 -(byte) cnt#12 reg byte x 0.8571428571428571 -(byte) cnt#2 reg byte x 4.0 +(byte) cnt#11 reg byte a 4.0 +(byte) cnt#12 cnt zp ZP_BYTE:2 0.6666666666666666 +(byte) cnt#2 reg byte a 4.0 +(byte) cnt2 +(byte) cnt2#10 reg byte y 2.0 +(byte) cnt2#11 reg byte y 0.4444444444444444 +(byte) cnt3 +(byte) cnt3#10 reg byte x 1.3333333333333333 +(byte) cnt3#11 reg byte x 0.5 (byte()) inccnt() (label) inccnt::@return (byte) inccnt::return @@ -20,10 +26,12 @@ (label) main::@2 (label) main::@return -reg byte x [ cnt#11 cnt#2 ] +reg byte a [ cnt#11 cnt#2 ] +reg byte y [ cnt2#10 cnt2#11 ] +reg byte x [ cnt3#10 cnt3#11 ] reg byte a [ inccnt::return#0 ] reg byte a [ main::$0 ] reg byte a [ inccnt::return#1 ] reg byte a [ main::$1 ] -reg byte x [ cnt#12 ] +zp ZP_BYTE:2 [ cnt#12 ] reg byte a [ inccnt::return#2 ] diff --git a/src/test/ref/print-problem.asm b/src/test/ref/print-problem.asm index b6e60be7a..b285d2a5b 100644 --- a/src/test/ref/print-problem.asm +++ b/src/test/ref/print-problem.asm @@ -6,7 +6,11 @@ main: { lda #$40 jsr ln + tax + inx jsr ln + tax + inx jsr ln sta SCREEN rts diff --git a/src/test/ref/print-problem.cfg b/src/test/ref/print-problem.cfg index 8727fc41a..6fef897a4 100644 --- a/src/test/ref/print-problem.cfg +++ b/src/test/ref/print-problem.cfg @@ -12,11 +12,11 @@ main: scope:[main] from @2 [5] call ln to:main::@1 main::@1: scope:[main] from main - [6] phi() + [6] (byte) char#2 ← ++ (byte) line#13 [7] call ln to:main::@2 main::@2: scope:[main] from main::@1 - [8] phi() + [8] (byte) char#4 ← ++ (byte) line#13 [9] call ln to:main::@3 main::@3: scope:[main] from main::@2 diff --git a/src/test/ref/print-problem.log b/src/test/ref/print-problem.log index 9437a1ecc..b6587676f 100644 --- a/src/test/ref/print-problem.log +++ b/src/test/ref/print-problem.log @@ -157,7 +157,6 @@ Successful SSA optimization Pass2RedundantPhiElimination Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) line#0 = 64 Successful SSA optimization Pass2ConstantIdentification -Successful SSA optimization PassNEliminateUnusedVars Culled Empty Block (label) @3 Successful SSA optimization Pass2CullEmptyBlocks Inlining constant with var siblings (const byte) line#0 @@ -169,18 +168,16 @@ Adding NOP phi() at start of @end Adding NOP phi() at start of main CALL GRAPH Calls in [] to main:2 -Calls in [main] to ln:5 ln:7 ln:9 +Calls in [main] to ln:5 ln:8 ln:11 Created 1 initial phi equivalence classes -Coalesced [6] line#17 ← line#13 -Coalesced (already) [8] line#18 ← line#13 +Coalesced [7] line#17 ← line#13 +Coalesced (already) [10] line#18 ← line#13 Coalesced down to 1 phi equivalence classes Adding NOP phi() at start of @begin Adding NOP phi() at start of @2 Adding NOP phi() at start of @end Adding NOP phi() at start of main -Adding NOP phi() at start of main::@1 -Adding NOP phi() at start of main::@2 FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -197,11 +194,11 @@ main: scope:[main] from @2 [5] call ln to:main::@1 main::@1: scope:[main] from main - [6] phi() + [6] (byte) char#2 ← ++ (byte) line#13 [7] call ln to:main::@2 main::@2: scope:[main] from main::@1 - [8] phi() + [8] (byte) char#4 ← ++ (byte) line#13 [9] call ln to:main::@3 main::@3: scope:[main] from main::@2 @@ -222,17 +219,25 @@ ln::@return: scope:[ln] from ln VARIABLE REGISTER WEIGHTS (byte*) SCREEN (byte) char +(byte) char#2 20.0 +(byte) char#4 20.0 (byte) line (byte) line#12 6.0 -(byte) line#13 1.1428571428571428 +(byte) line#13 1.714285714285714 (void()) ln() (void()) main() Initial phi equivalence classes [ line#12 line#13 ] +Added variable char#2 to zero page equivalence class [ char#2 ] +Added variable char#4 to zero page equivalence class [ char#4 ] Complete equivalence classes [ line#12 line#13 ] +[ char#2 ] +[ char#4 ] Allocated zp ZP_BYTE:2 [ line#12 line#13 ] +Allocated zp ZP_BYTE:3 [ char#2 ] +Allocated zp ZP_BYTE:4 [ char#4 ] INITIAL ASM //SEG0 Basic Upstart @@ -241,6 +246,8 @@ INITIAL ASM .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 + .label char = 3 + .label char_4 = 4 .label line = 2 //SEG2 @begin bbegin: @@ -267,21 +274,25 @@ main: { lda #$40 sta line jsr ln - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG13 main::@1 b1: + //SEG14 [6] (byte) char#2 ← ++ (byte) line#13 -- vbuz1=_inc_vbuz2 + ldy line + iny + sty char //SEG15 [7] call ln //SEG16 [12] phi from main::@1 to ln [phi:main::@1->ln] ln_from_b1: //SEG17 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy jsr ln - //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - b2_from_b1: jmp b2 - //SEG19 main::@2 + //SEG18 main::@2 b2: + //SEG19 [8] (byte) char#4 ← ++ (byte) line#13 -- vbuz1=_inc_vbuz2 + ldy line + iny + sty char_4 //SEG20 [9] call ln //SEG21 [12] phi from main::@2 to ln [phi:main::@2->ln] ln_from_b2: @@ -315,15 +326,17 @@ ln: { REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp ZP_BYTE:2 [ line#12 line#13 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ char#2 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:4 [ char#4 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 7.14: zp ZP_BYTE:2 [ line#12 line#13 ] +Uplift Scope [] 20: zp ZP_BYTE:3 [ char#2 ] 20: zp ZP_BYTE:4 [ char#4 ] 7.71: zp ZP_BYTE:2 [ line#12 line#13 ] Uplift Scope [main] Uplift Scope [ln] -Uplifting [] best 67 combination reg byte a [ line#12 line#13 ] -Uplifting [main] best 67 combination -Uplifting [ln] best 67 combination +Uplifting [] best 75 combination reg byte x [ char#2 ] reg byte x [ char#4 ] reg byte a [ line#12 line#13 ] +Uplifting [main] best 75 combination +Uplifting [ln] best 75 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -356,21 +369,23 @@ main: { //SEG12 [12] phi (byte) line#12 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main->ln#0] -- vbuaa=vbuc1 lda #$40 jsr ln - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - b1_from_main: jmp b1 - //SEG14 main::@1 + //SEG13 main::@1 b1: + //SEG14 [6] (byte) char#2 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + tax + inx //SEG15 [7] call ln //SEG16 [12] phi from main::@1 to ln [phi:main::@1->ln] ln_from_b1: //SEG17 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy jsr ln - //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - b2_from_b1: jmp b2 - //SEG19 main::@2 + //SEG18 main::@2 b2: + //SEG19 [8] (byte) char#4 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + tax + inx //SEG20 [9] call ln //SEG21 [12] phi from main::@2 to ln [phi:main::@2->ln] ln_from_b2: @@ -412,16 +427,14 @@ Removing instruction bbegin: Removing instruction b2_from_bbegin: Removing instruction main_from_b2: Removing instruction bend_from_b2: -Removing instruction b1_from_main: -Removing instruction ln_from_b1: -Removing instruction b2_from_b1: -Removing instruction ln_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction b2: Removing instruction bend: Removing instruction ln_from_main: Removing instruction b1: +Removing instruction ln_from_b1: Removing instruction b2: +Removing instruction ln_from_b2: Removing instruction b3: Removing instruction breturn: Removing instruction breturn: @@ -434,9 +447,11 @@ FINAL SYMBOL TABLE (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) char +(byte) char#2 reg byte x 20.0 +(byte) char#4 reg byte x 20.0 (byte) line (byte) line#12 reg byte a 6.0 -(byte) line#13 reg byte a 1.1428571428571428 +(byte) line#13 reg byte a 1.714285714285714 (void()) ln() (label) ln::@return (void()) main() @@ -446,10 +461,12 @@ FINAL SYMBOL TABLE (label) main::@return reg byte a [ line#12 line#13 ] +reg byte x [ char#2 ] +reg byte x [ char#4 ] FINAL ASSEMBLER -Score: 46 +Score: 54 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -472,14 +489,18 @@ main: { //SEG12 [12] phi (byte) line#12 = (byte/signed byte/word/signed word/dword/signed dword) 64 [phi:main->ln#0] -- vbuaa=vbuc1 lda #$40 jsr ln - //SEG13 [6] phi from main to main::@1 [phi:main->main::@1] - //SEG14 main::@1 + //SEG13 main::@1 + //SEG14 [6] (byte) char#2 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + tax + inx //SEG15 [7] call ln //SEG16 [12] phi from main::@1 to ln [phi:main::@1->ln] //SEG17 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@1->ln#0] -- register_copy jsr ln - //SEG18 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG19 main::@2 + //SEG18 main::@2 + //SEG19 [8] (byte) char#4 ← ++ (byte) line#13 -- vbuxx=_inc_vbuaa + tax + inx //SEG20 [9] call ln //SEG21 [12] phi from main::@2 to ln [phi:main::@2->ln] //SEG22 [12] phi (byte) line#12 = (byte) line#13 [phi:main::@2->ln#0] -- register_copy diff --git a/src/test/ref/print-problem.sym b/src/test/ref/print-problem.sym index c17965b4f..a0feda68b 100644 --- a/src/test/ref/print-problem.sym +++ b/src/test/ref/print-problem.sym @@ -4,9 +4,11 @@ (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) char +(byte) char#2 reg byte x 20.0 +(byte) char#4 reg byte x 20.0 (byte) line (byte) line#12 reg byte a 6.0 -(byte) line#13 reg byte a 1.1428571428571428 +(byte) line#13 reg byte a 1.714285714285714 (void()) ln() (label) ln::@return (void()) main() @@ -16,3 +18,5 @@ (label) main::@return reg byte a [ line#12 line#13 ] +reg byte x [ char#2 ] +reg byte x [ char#4 ] diff --git a/src/test/ref/printmsg.cfg b/src/test/ref/printmsg.cfg index 6741a1b19..b421110d5 100644 --- a/src/test/ref/printmsg.cfg +++ b/src/test/ref/printmsg.cfg @@ -16,7 +16,7 @@ main::@1: scope:[main] from main [7] call print_ln to:main::@2 main::@2: scope:[main] from main::@1 - [8] (byte*~) print_char_cursor#31 ← (byte*) print_line_cursor#1 + [8] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 [9] call print_str to:main::@3 main::@3: scope:[main] from main::@2 @@ -24,7 +24,7 @@ main::@3: scope:[main] from main::@2 [11] call print_ln to:main::@4 main::@4: scope:[main] from main::@3 - [12] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 + [12] (byte*~) print_char_cursor#33 ← (byte*) print_line_cursor#1 [13] call print_str to:main::@5 main::@5: scope:[main] from main::@4 @@ -46,7 +46,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1 [21] return to:@return print_str: scope:[print_str] from main main::@2 main::@4 - [22] (byte*) print_char_cursor#29 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@2/(byte*~) print_char_cursor#31 main::@4/(byte*~) print_char_cursor#32 ) + [22] (byte*) print_char_cursor#29 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@2/(byte*~) print_char_cursor#32 main::@4/(byte*~) print_char_cursor#33 ) [22] (byte*) print_str::str#6 ← phi( main/(const byte[]) msg#0 main::@2/(const byte[]) msg2#0 main::@4/(const byte[]) msg3#0 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 diff --git a/src/test/ref/printmsg.log b/src/test/ref/printmsg.log index 0d8958121..2076856a1 100644 --- a/src/test/ref/printmsg.log +++ b/src/test/ref/printmsg.log @@ -4,7 +4,7 @@ CONTROL FLOW GRAPH SSA (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 - to:@19 + to:@12 print_str: scope:[print_str] from main main::@2 main::@4 (byte*) print_char_cursor#29 ← phi( main/(byte*) print_char_cursor#27 main::@2/(byte*) print_char_cursor#6 main::@4/(byte*) print_char_cursor#8 ) (byte*) print_str::str#6 ← phi( main/(byte*) print_str::str#1 main::@2/(byte*) print_str::str#2 main::@4/(byte*) print_str::str#3 ) @@ -50,12 +50,17 @@ print_ln::@return: scope:[print_ln] from print_ln::@2 (byte*) print_char_cursor#4 ← (byte*) print_char_cursor#16 return to:@return -@19: scope:[] from @begin - (byte*) print_line_cursor#22 ← phi( @begin/(byte*) print_line_cursor#0 ) - (byte*) print_char_cursor#30 ← phi( @begin/(byte*) print_char_cursor#0 ) - (byte[]) msg#0 ← (const string) $0 - (byte[]) msg2#0 ← (const string) $1 - (byte[]) msg3#0 ← (const string) $2 +@12: scope:[] from @begin + (byte*) print_line_cursor#23 ← phi( @begin/(byte*) print_line_cursor#0 ) + (byte*) print_char_cursor#31 ← phi( @begin/(byte*) print_char_cursor#0 ) + (byte[]) print_hextab#0 ← (const string) $0 + to:@19 +@19: scope:[] from @12 + (byte*) print_line_cursor#22 ← phi( @12/(byte*) print_line_cursor#23 ) + (byte*) print_char_cursor#30 ← phi( @12/(byte*) print_char_cursor#31 ) + (byte[]) msg#0 ← (const string) $1 + (byte[]) msg2#0 ← (const string) $2 + (byte[]) msg3#0 ← (const string) $3 to:@20 main: scope:[main] from @20 (byte*) print_line_cursor#21 ← phi( @20/(byte*) print_line_cursor#20 ) @@ -124,9 +129,11 @@ main::@return: scope:[main] from main::@6 @end: scope:[] from @21 SYMBOL TABLE SSA -(const string) $0 = (string) "hello world! @" -(const string) $1 = (string) "hello c64! @" -(const string) $2 = (string) "hello 2017! @" +(const string) $0 = (string) "0123456789abcdef" +(const string) $1 = (string) "hello world! @" +(const string) $2 = (string) "hello c64! @" +(const string) $3 = (string) "hello 2017! @" +(label) @12 (label) @19 (label) @20 (label) @21 @@ -172,12 +179,15 @@ SYMBOL TABLE SSA (byte*) print_char_cursor#29 (byte*) print_char_cursor#3 (byte*) print_char_cursor#30 +(byte*) print_char_cursor#31 (byte*) print_char_cursor#4 (byte*) print_char_cursor#5 (byte*) print_char_cursor#6 (byte*) print_char_cursor#7 (byte*) print_char_cursor#8 (byte*) print_char_cursor#9 +(byte[]) print_hextab +(byte[]) print_hextab#0 (byte*) print_line_cursor (byte*) print_line_cursor#0 (byte*) print_line_cursor#1 @@ -195,6 +205,7 @@ SYMBOL TABLE SSA (byte*) print_line_cursor#20 (byte*) print_line_cursor#21 (byte*) print_line_cursor#22 +(byte*) print_line_cursor#23 (byte*) print_line_cursor#3 (byte*) print_line_cursor#4 (byte*) print_line_cursor#5 @@ -224,7 +235,7 @@ SYMBOL TABLE SSA (byte*) print_str::str#5 (byte*) print_str::str#6 -Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#30 (byte*) print_line_cursor#22 (byte*) print_char_cursor#28 (byte*) print_line_cursor#20 +Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#31 (byte*) print_line_cursor#23 (byte*) print_char_cursor#30 (byte*) print_line_cursor#22 (byte*) print_char_cursor#28 (byte*) print_line_cursor#20 Alias (byte*) print_str::str#4 = (byte*) print_str::str#5 Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#25 (byte*) print_char_cursor#14 (byte*) print_char_cursor#2 Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#9 (byte*) print_char_cursor#3 (byte*) print_line_cursor#10 (byte*) print_char_cursor#16 (byte*) print_line_cursor#2 (byte*) print_char_cursor#4 @@ -264,15 +275,19 @@ Simple Condition (bool~) print_str::$0 if(*((byte*) print_str::str#4)!=(byte) '@ Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_char_cursor#0 = ((byte*))1024 -Constant (const byte[]) msg#0 = $0 -Constant (const byte[]) msg2#0 = $1 -Constant (const byte[]) msg3#0 = $2 +Constant (const byte[]) print_hextab#0 = $0 +Constant (const byte[]) msg#0 = $1 +Constant (const byte[]) msg2#0 = $2 +Constant (const byte[]) msg3#0 = $3 Successful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_str::str#1 = msg#0 Constant (const byte*) print_str::str#2 = msg2#0 Constant (const byte*) print_str::str#3 = msg3#0 Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Culled Empty Block (label) print_ln::@2 +Culled Empty Block (label) @12 Culled Empty Block (label) @19 Culled Empty Block (label) main::@6 Culled Empty Block (label) @21 @@ -285,9 +300,9 @@ Constant inlined print_char_cursor#0 = ((byte*))(word/signed word/dword/signed d Constant inlined print_str::str#3 = (const byte[]) msg3#0 Constant inlined print_str::str#2 = (const byte[]) msg2#0 Constant inlined print_str::str#1 = (const byte[]) msg#0 -Constant inlined $0 = (const byte[]) msg#0 -Constant inlined $1 = (const byte[]) msg2#0 -Constant inlined $2 = (const byte[]) msg3#0 +Constant inlined $1 = (const byte[]) msg#0 +Constant inlined $2 = (const byte[]) msg2#0 +Constant inlined $3 = (const byte[]) msg3#0 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Adding NOP phi() at start of @begin @@ -300,16 +315,16 @@ Calls in [] to main:2 Calls in [main] to print_str:5 print_ln:7 print_str:9 print_ln:11 print_str:13 print_ln:15 Created 6 initial phi equivalence classes -Not coalescing [8] print_char_cursor#31 ← print_line_cursor#1 -Coalesced [10] print_line_cursor#23 ← print_line_cursor#1 -Not coalescing [12] print_char_cursor#32 ← print_line_cursor#1 -Coalesced (already) [14] print_line_cursor#24 ← print_line_cursor#1 -Coalesced [18] print_line_cursor#25 ← print_line_cursor#16 -Coalesced (already) [23] print_line_cursor#26 ← print_line_cursor#1 +Not coalescing [8] print_char_cursor#32 ← print_line_cursor#1 +Coalesced [10] print_line_cursor#24 ← print_line_cursor#1 +Not coalescing [12] print_char_cursor#33 ← print_line_cursor#1 +Coalesced (already) [14] print_line_cursor#25 ← print_line_cursor#1 +Coalesced [18] print_line_cursor#26 ← print_line_cursor#16 +Coalesced (already) [23] print_line_cursor#27 ← print_line_cursor#1 Coalesced [25] print_str::str#7 ← print_str::str#6 -Coalesced [26] print_char_cursor#33 ← print_char_cursor#29 +Coalesced [26] print_char_cursor#34 ← print_char_cursor#29 Coalesced [33] print_str::str#8 ← print_str::str#0 -Coalesced [34] print_char_cursor#34 ← print_char_cursor#1 +Coalesced [34] print_char_cursor#35 ← print_char_cursor#1 Coalesced down to 3 phi equivalence classes Culled Empty Block (label) print_ln::@3 Adding NOP phi() at start of @begin @@ -339,7 +354,7 @@ main::@1: scope:[main] from main [7] call print_ln to:main::@2 main::@2: scope:[main] from main::@1 - [8] (byte*~) print_char_cursor#31 ← (byte*) print_line_cursor#1 + [8] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 [9] call print_str to:main::@3 main::@3: scope:[main] from main::@2 @@ -347,7 +362,7 @@ main::@3: scope:[main] from main::@2 [11] call print_ln to:main::@4 main::@4: scope:[main] from main::@3 - [12] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 + [12] (byte*~) print_char_cursor#33 ← (byte*) print_line_cursor#1 [13] call print_str to:main::@5 main::@5: scope:[main] from main::@4 @@ -369,7 +384,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1 [21] return to:@return print_str: scope:[print_str] from main main::@2 main::@4 - [22] (byte*) print_char_cursor#29 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@2/(byte*~) print_char_cursor#31 main::@4/(byte*~) print_char_cursor#32 ) + [22] (byte*) print_char_cursor#29 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@2/(byte*~) print_char_cursor#32 main::@4/(byte*~) print_char_cursor#33 ) [22] (byte*) print_str::str#6 ← phi( main/(const byte[]) msg#0 main::@2/(const byte[]) msg2#0 main::@4/(const byte[]) msg3#0 ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 @@ -396,8 +411,9 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#1 11.0 (byte*) print_char_cursor#13 3.2857142857142856 (byte*) print_char_cursor#29 6.0 -(byte*~) print_char_cursor#31 4.0 (byte*~) print_char_cursor#32 4.0 +(byte*~) print_char_cursor#33 4.0 +(byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 3.7272727272727275 (byte*) print_line_cursor#16 6.0 @@ -413,14 +429,14 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] [ print_str::str#4 print_str::str#6 print_str::str#0 ] -[ print_char_cursor#13 print_char_cursor#29 print_char_cursor#31 print_char_cursor#32 print_char_cursor#1 ] +[ print_char_cursor#13 print_char_cursor#29 print_char_cursor#32 print_char_cursor#33 print_char_cursor#1 ] Complete equivalence classes [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] [ print_str::str#4 print_str::str#6 print_str::str#0 ] -[ print_char_cursor#13 print_char_cursor#29 print_char_cursor#31 print_char_cursor#32 print_char_cursor#1 ] +[ print_char_cursor#13 print_char_cursor#29 print_char_cursor#32 print_char_cursor#33 print_char_cursor#1 ] Allocated zp ZP_WORD:2 [ print_line_cursor#8 print_line_cursor#16 print_line_cursor#1 ] Allocated zp ZP_WORD:4 [ print_str::str#4 print_str::str#6 print_str::str#0 ] -Allocated zp ZP_WORD:6 [ print_char_cursor#13 print_char_cursor#29 print_char_cursor#31 print_char_cursor#32 print_char_cursor#1 ] +Allocated zp ZP_WORD:6 [ print_char_cursor#13 print_char_cursor#29 print_char_cursor#32 print_char_cursor#33 print_char_cursor#1 ] INITIAL ASM //SEG0 Basic Upstart @@ -479,7 +495,7 @@ main: { jmp b2 //SEG19 main::@2 b2: - //SEG20 [8] (byte*~) print_char_cursor#31 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG20 [8] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 @@ -487,7 +503,7 @@ main: { //SEG21 [9] call print_str //SEG22 [22] phi from main::@2 to print_str [phi:main::@2->print_str] print_str_from_b2: - //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#31 [phi:main::@2->print_str#0] -- register_copy + //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@2->print_str#0] -- register_copy //SEG24 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b4: - //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@4->print_str#0] -- register_copy + //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#33 [phi:main::@4->print_str#0] -- register_copy //SEG35 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b2: - //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#31 [phi:main::@2->print_str#0] -- register_copy + //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@2->print_str#0] -- register_copy //SEG24 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #print_str] print_str_from_b4: - //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@4->print_str#0] -- register_copy + //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#33 [phi:main::@4->print_str#0] -- register_copy //SEG35 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #print_str] - //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#31 [phi:main::@2->print_str#0] -- register_copy + //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@2->print_str#0] -- register_copy //SEG24 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #print_ln#0] -- register_copy jsr print_ln //SEG30 main::@4 - //SEG31 [12] (byte*~) print_char_cursor#32 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG31 [12] (byte*~) print_char_cursor#33 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 //SEG32 [13] call print_str //SEG33 [22] phi from main::@4 to print_str [phi:main::@4->print_str] - //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@4->print_str#0] -- register_copy + //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#33 [phi:main::@4->print_str#0] -- register_copy //SEG35 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #main] -main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG6 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG7 @end bend: -//SEG9 main +//SEG8 main main: { .label screen = $400 .label BGCOL = $d020 .label sc2 = screen+$51 - .label _2 = 4 - .label _9 = 6 - .label _11 = 8 + .label _2 = 5 + .label _9 = 7 + .label _11 = 9 + .label a = 4 .label i = 2 .label j = 3 + //SEG9 [4] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80) -- vbuz1=_deref_pbuc1 + lda screen+$50 + sta a //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 @@ -393,19 +425,20 @@ Statement [14] (byte*~) main::$11 ← (const byte*) main::screen#0+(byte/word/si Statement [15] *((byte*~) main::$9) ← *((byte*~) main::$11) [ main::j#2 ] ( main:2 [ main::j#2 ] ) always clobbers reg byte a reg byte y Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ main::j#2 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , -Potential registers zp ZP_WORD:4 [ main::$2 ] : zp ZP_WORD:4 , -Potential registers zp ZP_WORD:6 [ main::$9 ] : zp ZP_WORD:6 , -Potential registers zp ZP_WORD:8 [ main::$11 ] : zp ZP_WORD:8 , +Potential registers zp ZP_BYTE:4 [ main::a#0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:5 [ main::$2 ] : zp ZP_WORD:5 , +Potential registers zp ZP_WORD:7 [ main::$9 ] : zp ZP_WORD:7 , +Potential registers zp ZP_WORD:9 [ main::$11 ] : zp ZP_WORD:9 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 31.17: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 27.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 22: zp ZP_WORD:4 [ main::$2 ] 22: zp ZP_WORD:8 [ main::$11 ] 11: zp ZP_WORD:6 [ main::$9 ] +Uplift Scope [main] 31.17: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 27.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 22: zp ZP_WORD:5 [ main::$2 ] 22: zp ZP_WORD:9 [ main::$11 ] 20: zp ZP_BYTE:4 [ main::a#0 ] 11: zp ZP_WORD:7 [ main::$9 ] Uplift Scope [] -Uplifting [main] best 1165 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] zp ZP_WORD:4 [ main::$2 ] zp ZP_WORD:8 [ main::$11 ] zp ZP_WORD:6 [ main::$9 ] -Uplifting [] best 1165 combination -Coalescing zero page register [ zp ZP_WORD:4 [ main::$2 ] ] with [ zp ZP_WORD:6 [ main::$9 ] ] -Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ main::$2 main::$9 ] -Allocated (was zp ZP_WORD:8) zp ZP_WORD:4 [ main::$11 ] +Uplifting [main] best 1169 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] zp ZP_WORD:5 [ main::$2 ] zp ZP_WORD:9 [ main::$11 ] reg byte a [ main::a#0 ] zp ZP_WORD:7 [ main::$9 ] +Uplifting [] best 1169 combination +Coalescing zero page register [ zp ZP_WORD:5 [ main::$2 ] ] with [ zp ZP_WORD:7 [ main::$9 ] ] +Allocated (was zp ZP_WORD:5) zp ZP_WORD:2 [ main::$2 main::$9 ] +Allocated (was zp ZP_WORD:9) zp ZP_WORD:4 [ main::$11 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -421,15 +454,13 @@ b1_from_bbegin: //SEG4 @1 b1: //SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] -main_from_b1: jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG6 [3] phi from @1 to @end [phi:@1->@end] bend_from_b1: jmp bend -//SEG8 @end +//SEG7 @end bend: -//SEG9 main +//SEG8 main main: { .label screen = $400 .label BGCOL = $d020 @@ -437,6 +468,8 @@ main: { .label _2 = 2 .label _9 = 2 .label _11 = 4 + //SEG9 [4] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80) -- vbuaa=_deref_pbuc1 + lda screen+$50 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 @@ -542,7 +575,6 @@ Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 Removing instruction bbegin: Removing instruction b1_from_bbegin: -Removing instruction main_from_b1: Removing instruction bend_from_b1: Removing instruction b1_from_b1: Removing instruction b2_from_b2: @@ -574,6 +606,8 @@ FINAL SYMBOL TABLE (label) main::@return (byte*) main::BGCOL (const byte*) main::BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) main::a +(byte) main::a#0 reg byte a 20.0 (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 @@ -587,12 +621,13 @@ FINAL SYMBOL TABLE reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] +reg byte a [ main::a#0 ] zp ZP_WORD:2 [ main::$2 main::$9 ] zp ZP_WORD:4 [ main::$11 ] FINAL ASSEMBLER -Score: 956 +Score: 960 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -603,11 +638,10 @@ Score: 956 //SEG3 [1] phi from @begin to @1 [phi:@begin->@1] //SEG4 @1 //SEG5 [2] call main -//SEG6 [4] phi from @1 to main [phi:@1->main] jsr main -//SEG7 [3] phi from @1 to @end [phi:@1->@end] -//SEG8 @end -//SEG9 main +//SEG6 [3] phi from @1 to @end [phi:@1->@end] +//SEG7 @end +//SEG8 main main: { .label screen = $400 .label BGCOL = $d020 @@ -615,6 +649,8 @@ main: { .label _2 = 2 .label _9 = 2 .label _11 = 4 + //SEG9 [4] (byte) main::a#0 ← *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80) -- vbuaa=_deref_pbuc1 + lda screen+$50 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 diff --git a/src/test/ref/ptr-complex.sym b/src/test/ref/ptr-complex.sym index cbde774f9..515872d19 100644 --- a/src/test/ref/ptr-complex.sym +++ b/src/test/ref/ptr-complex.sym @@ -12,6 +12,8 @@ (label) main::@return (byte*) main::BGCOL (const byte*) main::BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53280 +(byte) main::a +(byte) main::a#0 reg byte a 20.0 (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 @@ -25,5 +27,6 @@ reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] +reg byte a [ main::a#0 ] zp ZP_WORD:2 [ main::$2 main::$9 ] zp ZP_WORD:4 [ main::$11 ] diff --git a/src/test/ref/ptrtest.asm b/src/test/ref/ptrtest.asm index 60e68fc75..f2616b946 100644 --- a/src/test/ref/ptrtest.asm +++ b/src/test/ref/ptrtest.asm @@ -33,22 +33,37 @@ lvaluevar: { jmp b1 } rvaluevar: { + .label screen = 2 + lda #<$400 + sta screen + lda #>$400 + sta screen+1 ldx #2 b1: cpx #$a bcc b2 rts b2: + ldy #0 + lda (screen),y + inc screen + bne !+ + inc screen+1 + !: inx jmp b1 } rvalue: { + .label SCREEN = $400 + lda SCREEN + lda SCREEN+1 ldx #2 b1: cpx #$a bcc b2 rts b2: + lda SCREEN,x inx jmp b1 } diff --git a/src/test/ref/ptrtest.cfg b/src/test/ref/ptrtest.cfg index 829523b49..21f72bef7 100644 --- a/src/test/ref/ptrtest.cfg +++ b/src/test/ref/ptrtest.cfg @@ -46,6 +46,7 @@ rvaluevar: scope:[rvaluevar] from main::@2 [20] phi() to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 + [21] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word/dword/signed dword) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [21] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word/dword/signed dword) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 to:rvaluevar::@return @@ -53,33 +54,37 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 [23] return to:@return rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 - [24] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 + [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) + [25] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 + [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 to:rvaluevar::@1 rvalue: scope:[rvalue] from main::@1 - [25] phi() + [27] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) + [28] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 - [26] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 rvalue::@2/(byte) rvalue::i#1 ) - [27] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 + [29] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 rvalue::@2/(byte) rvalue::i#1 ) + [30] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 to:rvalue::@return rvalue::@return: scope:[rvalue] from rvalue::@1 - [28] return + [31] return to:@return rvalue::@2: scope:[rvalue] from rvalue::@1 - [29] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 + [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) + [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 lvalue: scope:[lvalue] from main - [30] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 - [31] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 + [35] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 to:lvalue::@1 lvalue::@1: scope:[lvalue] from lvalue lvalue::@2 - [32] (byte) lvalue::i#2 ← phi( lvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 lvalue::@2/(byte) lvalue::i#1 ) - [33] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 + [36] (byte) lvalue::i#2 ← phi( lvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 lvalue::@2/(byte) lvalue::i#1 ) + [37] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 to:lvalue::@return lvalue::@return: scope:[lvalue] from lvalue::@1 - [34] return + [38] return to:@return lvalue::@2: scope:[lvalue] from lvalue::@1 - [35] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 - [36] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 + [39] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 to:lvalue::@1 diff --git a/src/test/ref/ptrtest.log b/src/test/ref/ptrtest.log index e75073ac5..9120325a8 100644 --- a/src/test/ref/ptrtest.log +++ b/src/test/ref/ptrtest.log @@ -39,6 +39,9 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 return to:@return rvalue: scope:[rvalue] from main::@1 + (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 @@ -48,6 +51,7 @@ rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 (byte) rvalue::i#3 ← phi( rvalue::@1/(byte) rvalue::i#2 ) + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#3) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#3 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -77,15 +81,20 @@ lvaluevar::@return: scope:[lvaluevar] from lvaluevar::@1 return to:@return rvaluevar: scope:[rvaluevar] from main::@2 + (byte*) rvaluevar::screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte) rvaluevar::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 + (byte*) rvaluevar::screen#3 ← phi( rvaluevar/(byte*) rvaluevar::screen#0 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte) rvaluevar::i#0 rvaluevar::@2/(byte) rvaluevar::i#1 ) (bool~) rvaluevar::$0 ← (byte) rvaluevar::i#2 < (byte/signed byte/word/signed word/dword/signed dword) 10 if((bool~) rvaluevar::$0) goto rvaluevar::@2 to:rvaluevar::@return rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 (byte) rvaluevar::i#3 ← phi( rvaluevar::@1/(byte) rvaluevar::i#2 ) + (byte*) rvaluevar::screen#2 ← phi( rvaluevar::@1/(byte*) rvaluevar::screen#3 ) + (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) + (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#3 to:rvaluevar::@1 rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 @@ -145,6 +154,12 @@ SYMBOL TABLE SSA (label) rvalue::@1 (label) rvalue::@2 (label) rvalue::@return +(byte[1024]) rvalue::SCREEN +(byte[1024]) rvalue::SCREEN#0 +(byte) rvalue::b +(byte) rvalue::b#0 +(byte) rvalue::b#1 +(byte) rvalue::b#2 (byte) rvalue::i (byte) rvalue::i#0 (byte) rvalue::i#1 @@ -155,11 +170,18 @@ SYMBOL TABLE SSA (label) rvaluevar::@1 (label) rvaluevar::@2 (label) rvaluevar::@return +(byte) rvaluevar::b +(byte) rvaluevar::b#0 (byte) rvaluevar::i (byte) rvaluevar::i#0 (byte) rvaluevar::i#1 (byte) rvaluevar::i#2 (byte) rvaluevar::i#3 +(byte*) rvaluevar::screen +(byte*) rvaluevar::screen#0 +(byte*) rvaluevar::screen#1 +(byte*) rvaluevar::screen#2 +(byte*) rvaluevar::screen#3 Culled Empty Block (label) main::@4 Culled Empty Block (label) @6 @@ -169,6 +191,7 @@ Alias (byte) rvalue::i#2 = (byte) rvalue::i#3 Alias (byte) lvaluevar::b#1 = (byte) lvaluevar::b#2 Alias (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#3 Alias (byte) lvaluevar::i#2 = (byte) lvaluevar::i#3 +Alias (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#3 Alias (byte) rvaluevar::i#2 = (byte) rvaluevar::i#3 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) lvaluevar::b#1 @@ -182,22 +205,27 @@ Simple Condition (bool~) rvaluevar::$0 if((byte) rvaluevar::i#2<(byte/signed byt Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte[1024]) lvalue::SCREEN#0 = ((byte*))1024 Constant (const byte) lvalue::i#0 = 2 +Constant (const byte[1024]) rvalue::SCREEN#0 = ((byte*))1024 Constant (const byte) rvalue::i#0 = 2 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 = ((byte*))1024 Constant (const byte) rvaluevar::i#0 = 2 Successful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(lvalue::SCREEN#0+1) +Consolidated array index constant in *(rvalue::SCREEN#0+1) Successful SSA optimization Pass2ConstantAdditionElimination Inlining constant with var siblings (const byte) lvalue::i#0 Inlining constant with var siblings (const byte) rvalue::i#0 Inlining constant with var siblings (const byte*) lvaluevar::screen#0 Inlining constant with var siblings (const byte) lvaluevar::i#0 +Inlining constant with var siblings (const byte*) rvaluevar::screen#0 Inlining constant with var siblings (const byte) rvaluevar::i#0 +Constant inlined lvalue::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 +Constant inlined rvaluevar::screen#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined rvalue::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined lvaluevar::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined lvalue::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined lvaluevar::screen#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined rvaluevar::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 2 Successful SSA optimization Pass2ConstantInlining @@ -210,18 +238,18 @@ Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of lvaluevar Adding NOP phi() at start of rvaluevar -Adding NOP phi() at start of rvalue CALL GRAPH Calls in [] to main:2 Calls in [main] to lvalue:5 rvalue:7 rvaluevar:9 lvaluevar:11 -Created 5 initial phi equivalence classes +Created 6 initial phi equivalence classes Coalesced [20] lvaluevar::i#4 ← lvaluevar::i#1 Coalesced [21] lvaluevar::screen#4 ← lvaluevar::screen#1 -Coalesced [27] rvaluevar::i#4 ← rvaluevar::i#1 -Coalesced [33] rvalue::i#4 ← rvalue::i#1 -Coalesced [41] lvalue::i#4 ← lvalue::i#1 -Coalesced down to 5 phi equivalence classes +Coalesced [29] rvaluevar::i#4 ← rvaluevar::i#1 +Coalesced [30] rvaluevar::screen#4 ← rvaluevar::screen#1 +Coalesced [38] rvalue::i#4 ← rvalue::i#1 +Coalesced [46] lvalue::i#4 ← lvalue::i#1 +Coalesced down to 6 phi equivalence classes Adding NOP phi() at start of @begin Adding NOP phi() at start of @5 Adding NOP phi() at start of @end @@ -231,7 +259,6 @@ Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of lvaluevar Adding NOP phi() at start of rvaluevar -Adding NOP phi() at start of rvalue FINAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -282,6 +309,7 @@ rvaluevar: scope:[rvaluevar] from main::@2 [20] phi() to:rvaluevar::@1 rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2 + [21] (byte*) rvaluevar::screen#2 ← phi( rvaluevar/((byte*))(word/signed word/dword/signed dword) 1024 rvaluevar::@2/(byte*) rvaluevar::screen#1 ) [21] (byte) rvaluevar::i#2 ← phi( rvaluevar/(byte/signed byte/word/signed word/dword/signed dword) 2 rvaluevar::@2/(byte) rvaluevar::i#1 ) [22] if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 to:rvaluevar::@return @@ -289,35 +317,39 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 [23] return to:@return rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 - [24] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 + [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) + [25] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 + [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 to:rvaluevar::@1 rvalue: scope:[rvalue] from main::@1 - [25] phi() + [27] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) + [28] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 - [26] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 rvalue::@2/(byte) rvalue::i#1 ) - [27] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 + [29] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 rvalue::@2/(byte) rvalue::i#1 ) + [30] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 to:rvalue::@return rvalue::@return: scope:[rvalue] from rvalue::@1 - [28] return + [31] return to:@return rvalue::@2: scope:[rvalue] from rvalue::@1 - [29] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 + [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) + [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 lvalue: scope:[lvalue] from main - [30] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 - [31] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 + [35] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 to:lvalue::@1 lvalue::@1: scope:[lvalue] from lvalue lvalue::@2 - [32] (byte) lvalue::i#2 ← phi( lvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 lvalue::@2/(byte) lvalue::i#1 ) - [33] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 + [36] (byte) lvalue::i#2 ← phi( lvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 lvalue::@2/(byte) lvalue::i#1 ) + [37] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 to:lvalue::@return lvalue::@return: scope:[lvalue] from lvalue::@1 - [34] return + [38] return to:@return lvalue::@2: scope:[lvalue] from lvalue::@1 - [35] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 - [36] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 + [39] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 + [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 to:lvalue::@1 @@ -337,31 +369,56 @@ VARIABLE REGISTER WEIGHTS (byte*) lvaluevar::screen#2 11.0 (void()) main() (void()) rvalue() +(byte[1024]) rvalue::SCREEN +(byte) rvalue::b +(byte) rvalue::b#0 20.0 +(byte) rvalue::b#1 20.0 +(byte) rvalue::b#2 110.0 (byte) rvalue::i (byte) rvalue::i#1 22.0 -(byte) rvalue::i#2 16.5 +(byte) rvalue::i#2 14.666666666666666 (void()) rvaluevar() +(byte) rvaluevar::b +(byte) rvaluevar::b#0 110.0 (byte) rvaluevar::i (byte) rvaluevar::i#1 22.0 -(byte) rvaluevar::i#2 16.5 +(byte) rvaluevar::i#2 8.25 +(byte*) rvaluevar::screen +(byte*) rvaluevar::screen#1 11.0 +(byte*) rvaluevar::screen#2 11.0 Initial phi equivalence classes [ lvaluevar::i#2 lvaluevar::i#1 ] [ lvaluevar::screen#2 lvaluevar::screen#1 ] [ rvaluevar::i#2 rvaluevar::i#1 ] +[ rvaluevar::screen#2 rvaluevar::screen#1 ] [ rvalue::i#2 rvalue::i#1 ] [ lvalue::i#2 lvalue::i#1 ] +Added variable rvaluevar::b#0 to zero page equivalence class [ rvaluevar::b#0 ] +Added variable rvalue::b#0 to zero page equivalence class [ rvalue::b#0 ] +Added variable rvalue::b#1 to zero page equivalence class [ rvalue::b#1 ] +Added variable rvalue::b#2 to zero page equivalence class [ rvalue::b#2 ] Complete equivalence classes [ lvaluevar::i#2 lvaluevar::i#1 ] [ lvaluevar::screen#2 lvaluevar::screen#1 ] [ rvaluevar::i#2 rvaluevar::i#1 ] +[ rvaluevar::screen#2 rvaluevar::screen#1 ] [ rvalue::i#2 rvalue::i#1 ] [ lvalue::i#2 lvalue::i#1 ] +[ rvaluevar::b#0 ] +[ rvalue::b#0 ] +[ rvalue::b#1 ] +[ rvalue::b#2 ] Allocated zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] Allocated zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] Allocated zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] -Allocated zp ZP_BYTE:6 [ rvalue::i#2 rvalue::i#1 ] -Allocated zp ZP_BYTE:7 [ lvalue::i#2 lvalue::i#1 ] +Allocated zp ZP_WORD:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] +Allocated zp ZP_BYTE:8 [ rvalue::i#2 rvalue::i#1 ] +Allocated zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ] +Allocated zp ZP_BYTE:10 [ rvaluevar::b#0 ] +Allocated zp ZP_BYTE:11 [ rvalue::b#0 ] +Allocated zp ZP_BYTE:12 [ rvalue::b#1 ] +Allocated zp ZP_BYTE:13 [ rvalue::b#2 ] INITIAL ASM //SEG0 Basic Upstart @@ -395,85 +452,90 @@ main: { //SEG12 main::@1 b1: //SEG13 [7] call rvalue - //SEG14 [25] phi from main::@1 to rvalue [phi:main::@1->rvalue] - rvalue_from_b1: jsr rvalue - //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG16 main::@2 + //SEG15 main::@2 b2: - //SEG17 [9] call rvaluevar - //SEG18 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] + //SEG16 [9] call rvaluevar + //SEG17 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] rvaluevar_from_b2: jsr rvaluevar - //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG18 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG20 main::@3 + //SEG19 main::@3 b3: - //SEG21 [11] call lvaluevar - //SEG22 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] + //SEG20 [11] call lvaluevar + //SEG21 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] lvaluevar_from_b3: jsr lvaluevar jmp breturn - //SEG23 main::@return + //SEG22 main::@return breturn: - //SEG24 [12] return + //SEG23 [12] return rts } -//SEG25 lvaluevar +//SEG24 lvaluevar lvaluevar: { .const b = 4 .label screen = 3 .label i = 2 - //SEG26 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] + //SEG25 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG27 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 + //SEG26 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG28 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuz1=vbuc1 + //SEG27 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuz1=vbuc1 lda #2 sta i jmp b1 - //SEG29 lvaluevar::@1 + //SEG28 lvaluevar::@1 b1: - //SEG30 [15] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvaluevar::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG29 [15] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvaluevar::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b2 jmp breturn - //SEG31 lvaluevar::@return + //SEG30 lvaluevar::@return breturn: - //SEG32 [16] return + //SEG31 [16] return rts - //SEG33 lvaluevar::@2 + //SEG32 lvaluevar::@2 b2: - //SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 + //SEG33 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 lda #b ldy #0 sta (screen),y - //SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + //SEG34 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG36 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuz1=_inc_vbuz1 + //SEG35 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG37 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] + //SEG36 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] b1_from_b2: - //SEG38 [14] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy - //SEG39 [14] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy + //SEG37 [14] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG38 [14] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } -//SEG40 rvaluevar +//SEG39 rvaluevar rvaluevar: { + .label b = $a + .label screen = 6 .label i = 5 - //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + //SEG40 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG42 [21] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvaluevar->rvaluevar::@1#0] -- vbuz1=vbuc1 + //SEG41 [21] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta screen + lda #>$400 + sta screen+1 + //SEG42 [21] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvaluevar->rvaluevar::@1#1] -- vbuz1=vbuc1 lda #2 sta i jmp b1 @@ -490,80 +552,104 @@ rvaluevar: { rts //SEG47 rvaluevar::@2 b2: - //SEG48 [24] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuz1=_inc_vbuz1 + //SEG48 [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) -- vbuz1=_deref_pbuz2 + ldy #0 + lda (screen),y + sta b + //SEG49 [25] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + inc screen + bne !+ + inc screen+1 + !: + //SEG50 [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG49 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG51 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] b1_from_b2: - //SEG50 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG52 [21] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG53 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } -//SEG51 rvalue +//SEG54 rvalue rvalue: { - .label i = 6 - //SEG52 [26] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] + .label SCREEN = $400 + .label b = $b + .label b_1 = $c + .label b_2 = $d + .label i = 8 + //SEG55 [27] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) -- vbuz1=_deref_pbuc1 + lda SCREEN + sta b + //SEG56 [28] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuz1=_deref_pbuc1 + lda SCREEN+1 + sta b_1 + //SEG57 [29] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG53 [26] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuz1=vbuc1 + //SEG58 [29] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuz1=vbuc1 lda #2 sta i jmp b1 - //SEG54 rvalue::@1 + //SEG59 rvalue::@1 b1: - //SEG55 [27] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG60 [30] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b2 jmp breturn - //SEG56 rvalue::@return + //SEG61 rvalue::@return breturn: - //SEG57 [28] return + //SEG62 [31] return rts - //SEG58 rvalue::@2 + //SEG63 rvalue::@2 b2: - //SEG59 [29] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuz1=_inc_vbuz1 + //SEG64 [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i + lda SCREEN,y + sta b_2 + //SEG65 [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG60 [26] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG66 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] b1_from_b2: - //SEG61 [26] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy + //SEG67 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } -//SEG62 lvalue +//SEG68 lvalue lvalue: { .label SCREEN = $400 - .label i = 7 - //SEG63 [30] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + .label i = 9 + //SEG69 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG64 [31] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG70 [35] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1 - //SEG65 [32] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG71 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG66 [32] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuz1=vbuc1 + //SEG72 [36] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuz1=vbuc1 lda #2 sta i jmp b1 - //SEG67 lvalue::@1 + //SEG73 lvalue::@1 b1: - //SEG68 [33] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 -- vbuz1_lt_vbuc1_then_la1 + //SEG74 [37] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$a bcc b2 jmp breturn - //SEG69 lvalue::@return + //SEG75 lvalue::@return breturn: - //SEG70 [34] return + //SEG76 [38] return rts - //SEG71 lvalue::@2 + //SEG77 lvalue::@2 b2: - //SEG72 [35] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG78 [39] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #3 sta SCREEN,y - //SEG73 [36] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuz1=_inc_vbuz1 + //SEG79 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG74 [32] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG80 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] b1_from_b2: - //SEG75 [32] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy + //SEG81 [36] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -571,35 +657,46 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] -Statement [30] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [31] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [35] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ lvalue::i#2 lvalue::i#1 ] +Statement [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:2::rvaluevar:9 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] +Statement [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [35] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [39] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ] Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [30] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [31] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [35] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a +Statement [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:2::rvaluevar:9 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [35] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [39] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] : zp ZP_WORD:3 , -Potential registers zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:6 [ rvalue::i#2 rvalue::i#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:7 [ lvalue::i#2 lvalue::i#1 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] : zp ZP_BYTE:5 , reg byte x , +Potential registers zp ZP_WORD:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] : zp ZP_WORD:6 , +Potential registers zp ZP_BYTE:8 [ rvalue::i#2 rvalue::i#1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ rvaluevar::b#0 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:11 [ rvalue::b#0 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ rvalue::b#1 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:13 [ rvalue::b#2 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES +Uplift Scope [rvalue] 110: zp ZP_BYTE:13 [ rvalue::b#2 ] 36.67: zp ZP_BYTE:8 [ rvalue::i#2 rvalue::i#1 ] 20: zp ZP_BYTE:11 [ rvalue::b#0 ] 20: zp ZP_BYTE:12 [ rvalue::b#1 ] +Uplift Scope [rvaluevar] 110: zp ZP_BYTE:10 [ rvaluevar::b#0 ] 30.25: zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] 22: zp ZP_WORD:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] Uplift Scope [lvaluevar] 30.25: zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] 22: zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] -Uplift Scope [rvalue] 38.5: zp ZP_BYTE:6 [ rvalue::i#2 rvalue::i#1 ] -Uplift Scope [rvaluevar] 38.5: zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] -Uplift Scope [lvalue] 36.67: zp ZP_BYTE:7 [ lvalue::i#2 lvalue::i#1 ] +Uplift Scope [lvalue] 36.67: zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ] Uplift Scope [main] Uplift Scope [] -Uplifting [lvaluevar] best 1485 combination reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] -Uplifting [rvalue] best 1395 combination reg byte x [ rvalue::i#2 rvalue::i#1 ] -Uplifting [rvaluevar] best 1305 combination reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] -Uplifting [lvalue] best 1185 combination reg byte x [ lvalue::i#2 lvalue::i#1 ] -Uplifting [main] best 1185 combination -Uplifting [] best 1185 combination -Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +Uplifting [rvalue] best 1868 combination reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ] reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] +Limited combination testing to 100 combinations of 256 possible. +Uplifting [rvaluevar] best 1748 combination reg byte a [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ZP_WORD:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] +Uplifting [lvaluevar] best 1658 combination reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +Uplifting [lvalue] best 1538 combination reg byte x [ lvalue::i#2 lvalue::i#1 ] +Uplifting [main] best 1538 combination +Uplifting [] best 1538 combination +Coalescing zero page register [ zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] ] with [ zp ZP_WORD:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] ] +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -633,81 +730,85 @@ main: { //SEG12 main::@1 b1: //SEG13 [7] call rvalue - //SEG14 [25] phi from main::@1 to rvalue [phi:main::@1->rvalue] - rvalue_from_b1: jsr rvalue - //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG14 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: jmp b2 - //SEG16 main::@2 + //SEG15 main::@2 b2: - //SEG17 [9] call rvaluevar - //SEG18 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] + //SEG16 [9] call rvaluevar + //SEG17 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] rvaluevar_from_b2: jsr rvaluevar - //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG18 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] b3_from_b2: jmp b3 - //SEG20 main::@3 + //SEG19 main::@3 b3: - //SEG21 [11] call lvaluevar - //SEG22 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] + //SEG20 [11] call lvaluevar + //SEG21 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] lvaluevar_from_b3: jsr lvaluevar jmp breturn - //SEG23 main::@return + //SEG22 main::@return breturn: - //SEG24 [12] return + //SEG23 [12] return rts } -//SEG25 lvaluevar +//SEG24 lvaluevar lvaluevar: { .const b = 4 .label screen = 2 - //SEG26 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] + //SEG25 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG27 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 + //SEG26 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG28 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuxx=vbuc1 + //SEG27 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuxx=vbuc1 ldx #2 jmp b1 - //SEG29 lvaluevar::@1 + //SEG28 lvaluevar::@1 b1: - //SEG30 [15] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG29 [15] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 jmp breturn - //SEG31 lvaluevar::@return + //SEG30 lvaluevar::@return breturn: - //SEG32 [16] return + //SEG31 [16] return rts - //SEG33 lvaluevar::@2 + //SEG32 lvaluevar::@2 b2: - //SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 + //SEG33 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 lda #b ldy #0 sta (screen),y - //SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + //SEG34 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG36 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx + //SEG35 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG37 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] + //SEG36 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] b1_from_b2: - //SEG38 [14] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy - //SEG39 [14] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy + //SEG37 [14] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG38 [14] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } -//SEG40 rvaluevar +//SEG39 rvaluevar rvaluevar: { - //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + .label screen = 2 + //SEG40 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG42 [21] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvaluevar->rvaluevar::@1#0] -- vbuxx=vbuc1 + //SEG41 [21] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta screen + lda #>$400 + sta screen+1 + //SEG42 [21] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvaluevar->rvaluevar::@1#1] -- vbuxx=vbuc1 ldx #2 jmp b1 //SEG43 rvaluevar::@1 @@ -722,73 +823,89 @@ rvaluevar: { rts //SEG47 rvaluevar::@2 b2: - //SEG48 [24] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuxx=_inc_vbuxx + //SEG48 [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) -- vbuaa=_deref_pbuz1 + ldy #0 + lda (screen),y + //SEG49 [25] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + inc screen + bne !+ + inc screen+1 + !: + //SEG50 [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG49 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG51 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] b1_from_b2: - //SEG50 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG52 [21] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG53 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } -//SEG51 rvalue +//SEG54 rvalue rvalue: { - //SEG52 [26] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] + .label SCREEN = $400 + //SEG55 [27] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) -- vbuaa=_deref_pbuc1 + lda SCREEN + //SEG56 [28] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=_deref_pbuc1 + lda SCREEN+1 + //SEG57 [29] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG53 [26] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuxx=vbuc1 + //SEG58 [29] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuxx=vbuc1 ldx #2 jmp b1 - //SEG54 rvalue::@1 + //SEG59 rvalue::@1 b1: - //SEG55 [27] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG60 [30] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 jmp breturn - //SEG56 rvalue::@return + //SEG61 rvalue::@return breturn: - //SEG57 [28] return + //SEG62 [31] return rts - //SEG58 rvalue::@2 + //SEG63 rvalue::@2 b2: - //SEG59 [29] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuxx=_inc_vbuxx + //SEG64 [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + lda SCREEN,x + //SEG65 [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuxx=_inc_vbuxx inx - //SEG60 [26] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG66 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] b1_from_b2: - //SEG61 [26] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy + //SEG67 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } -//SEG62 lvalue +//SEG68 lvalue lvalue: { .label SCREEN = $400 - //SEG63 [30] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG69 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG64 [31] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG70 [35] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1 - //SEG65 [32] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG71 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG66 [32] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuxx=vbuc1 + //SEG72 [36] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuxx=vbuc1 ldx #2 jmp b1 - //SEG67 lvalue::@1 + //SEG73 lvalue::@1 b1: - //SEG68 [33] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG74 [37] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 jmp breturn - //SEG69 lvalue::@return + //SEG75 lvalue::@return breturn: - //SEG70 [34] return + //SEG76 [38] return rts - //SEG71 lvalue::@2 + //SEG77 lvalue::@2 b2: - //SEG72 [35] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG78 [39] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- pbuc1_derefidx_vbuxx=vbuc2 lda #3 sta SCREEN,x - //SEG73 [36] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx + //SEG79 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx inx - //SEG74 [32] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG80 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] b1_from_b2: - //SEG75 [32] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy + //SEG81 [36] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -813,7 +930,6 @@ Removing instruction b5_from_bbegin: Removing instruction main_from_b5: Removing instruction bend_from_b5: Removing instruction b1_from_main: -Removing instruction rvalue_from_b1: Removing instruction b2_from_b1: Removing instruction rvaluevar_from_b2: Removing instruction b3_from_b2: @@ -874,26 +990,41 @@ FINAL SYMBOL TABLE (label) rvalue::@1 (label) rvalue::@2 (label) rvalue::@return +(byte[1024]) rvalue::SCREEN +(const byte[1024]) rvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) rvalue::b +(byte) rvalue::b#0 reg byte a 20.0 +(byte) rvalue::b#1 reg byte a 20.0 +(byte) rvalue::b#2 reg byte a 110.0 (byte) rvalue::i (byte) rvalue::i#1 reg byte x 22.0 -(byte) rvalue::i#2 reg byte x 16.5 +(byte) rvalue::i#2 reg byte x 14.666666666666666 (void()) rvaluevar() (label) rvaluevar::@1 (label) rvaluevar::@2 (label) rvaluevar::@return +(byte) rvaluevar::b +(byte) rvaluevar::b#0 reg byte a 110.0 (byte) rvaluevar::i (byte) rvaluevar::i#1 reg byte x 22.0 -(byte) rvaluevar::i#2 reg byte x 16.5 +(byte) rvaluevar::i#2 reg byte x 8.25 +(byte*) rvaluevar::screen +(byte*) rvaluevar::screen#1 screen zp ZP_WORD:2 11.0 +(byte*) rvaluevar::screen#2 screen zp ZP_WORD:2 11.0 reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] -zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] reg byte x [ rvalue::i#2 rvalue::i#1 ] reg byte x [ lvalue::i#2 lvalue::i#1 ] +reg byte a [ rvaluevar::b#0 ] +reg byte a [ rvalue::b#0 ] +reg byte a [ rvalue::b#1 ] +reg byte a [ rvalue::b#2 ] FINAL ASSEMBLER -Score: 927 +Score: 1280 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -915,64 +1046,69 @@ main: { //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] //SEG12 main::@1 //SEG13 [7] call rvalue - //SEG14 [25] phi from main::@1 to rvalue [phi:main::@1->rvalue] jsr rvalue - //SEG15 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 main::@2 - //SEG17 [9] call rvaluevar - //SEG18 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] + //SEG14 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG15 main::@2 + //SEG16 [9] call rvaluevar + //SEG17 [20] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] jsr rvaluevar - //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] - //SEG20 main::@3 - //SEG21 [11] call lvaluevar - //SEG22 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] + //SEG18 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] + //SEG19 main::@3 + //SEG20 [11] call lvaluevar + //SEG21 [13] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] jsr lvaluevar - //SEG23 main::@return - //SEG24 [12] return + //SEG22 main::@return + //SEG23 [12] return rts } -//SEG25 lvaluevar +//SEG24 lvaluevar lvaluevar: { .const b = 4 .label screen = 2 - //SEG26 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] - //SEG27 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 + //SEG25 [14] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] + //SEG26 [14] phi (byte*) lvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- pbuz1=pbuc1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG28 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuxx=vbuc1 + //SEG27 [14] phi (byte) lvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvaluevar->lvaluevar::@1#1] -- vbuxx=vbuc1 ldx #2 - //SEG29 lvaluevar::@1 + //SEG28 lvaluevar::@1 b1: - //SEG30 [15] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG29 [15] if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvaluevar::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 - //SEG31 lvaluevar::@return - //SEG32 [16] return + //SEG30 lvaluevar::@return + //SEG31 [16] return rts - //SEG33 lvaluevar::@2 + //SEG32 lvaluevar::@2 b2: - //SEG34 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 + //SEG33 [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 -- _deref_pbuz1=vbuc1 lda #b ldy #0 sta (screen),y - //SEG35 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + //SEG34 [18] (byte*) lvaluevar::screen#1 ← ++ (byte*) lvaluevar::screen#2 -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG36 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx + //SEG35 [19] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG37 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] - //SEG38 [14] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy - //SEG39 [14] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy + //SEG36 [14] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] + //SEG37 [14] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG38 [14] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } -//SEG40 rvaluevar +//SEG39 rvaluevar rvaluevar: { - //SEG41 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] - //SEG42 [21] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvaluevar->rvaluevar::@1#0] -- vbuxx=vbuc1 + .label screen = 2 + //SEG40 [21] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + //SEG41 [21] phi (byte*) rvaluevar::screen#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta screen + lda #>$400 + sta screen+1 + //SEG42 [21] phi (byte) rvaluevar::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvaluevar->rvaluevar::@1#1] -- vbuxx=vbuc1 ldx #2 //SEG43 rvaluevar::@1 b1: @@ -984,62 +1120,78 @@ rvaluevar: { rts //SEG47 rvaluevar::@2 b2: - //SEG48 [24] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuxx=_inc_vbuxx + //SEG48 [24] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) -- vbuaa=_deref_pbuz1 + ldy #0 + lda (screen),y + //SEG49 [25] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 -- pbuz1=_inc_pbuz1 + inc screen + bne !+ + inc screen+1 + !: + //SEG50 [26] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 -- vbuxx=_inc_vbuxx inx - //SEG49 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] - //SEG50 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG51 [21] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG52 [21] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG53 [21] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } -//SEG51 rvalue +//SEG54 rvalue rvalue: { - //SEG52 [26] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] - //SEG53 [26] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuxx=vbuc1 + .label SCREEN = $400 + //SEG55 [27] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) -- vbuaa=_deref_pbuc1 + lda SCREEN + //SEG56 [28] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- vbuaa=_deref_pbuc1 + lda SCREEN+1 + //SEG57 [29] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] + //SEG58 [29] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:rvalue->rvalue::@1#0] -- vbuxx=vbuc1 ldx #2 - //SEG54 rvalue::@1 + //SEG59 rvalue::@1 b1: - //SEG55 [27] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG60 [30] if((byte) rvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvalue::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 - //SEG56 rvalue::@return - //SEG57 [28] return + //SEG61 rvalue::@return + //SEG62 [31] return rts - //SEG58 rvalue::@2 + //SEG63 rvalue::@2 b2: - //SEG59 [29] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuxx=_inc_vbuxx + //SEG64 [32] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + lda SCREEN,x + //SEG65 [33] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 -- vbuxx=_inc_vbuxx inx - //SEG60 [26] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] - //SEG61 [26] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy + //SEG66 [29] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG67 [29] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } -//SEG62 lvalue +//SEG68 lvalue lvalue: { .label SCREEN = $400 - //SEG63 [30] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 + //SEG69 [34] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG64 [31] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG70 [35] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1 - //SEG65 [32] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] - //SEG66 [32] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuxx=vbuc1 + //SEG71 [36] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG72 [36] phi (byte) lvalue::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:lvalue->lvalue::@1#0] -- vbuxx=vbuc1 tax - //SEG67 lvalue::@1 + //SEG73 lvalue::@1 b1: - //SEG68 [33] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 -- vbuxx_lt_vbuc1_then_la1 + //SEG74 [37] if((byte) lvalue::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvalue::@2 -- vbuxx_lt_vbuc1_then_la1 cpx #$a bcc b2 - //SEG69 lvalue::@return - //SEG70 [34] return + //SEG75 lvalue::@return + //SEG76 [38] return rts - //SEG71 lvalue::@2 + //SEG77 lvalue::@2 b2: - //SEG72 [35] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG78 [39] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- pbuc1_derefidx_vbuxx=vbuc2 lda #3 sta SCREEN,x - //SEG73 [36] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx + //SEG79 [40] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 -- vbuxx=_inc_vbuxx inx - //SEG74 [32] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] - //SEG75 [32] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy + //SEG80 [36] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG81 [36] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } diff --git a/src/test/ref/ptrtest.sym b/src/test/ref/ptrtest.sym index 3c86fb0cb..76ef1eefa 100644 --- a/src/test/ref/ptrtest.sym +++ b/src/test/ref/ptrtest.sym @@ -31,19 +31,34 @@ (label) rvalue::@1 (label) rvalue::@2 (label) rvalue::@return +(byte[1024]) rvalue::SCREEN +(const byte[1024]) rvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) rvalue::b +(byte) rvalue::b#0 reg byte a 20.0 +(byte) rvalue::b#1 reg byte a 20.0 +(byte) rvalue::b#2 reg byte a 110.0 (byte) rvalue::i (byte) rvalue::i#1 reg byte x 22.0 -(byte) rvalue::i#2 reg byte x 16.5 +(byte) rvalue::i#2 reg byte x 14.666666666666666 (void()) rvaluevar() (label) rvaluevar::@1 (label) rvaluevar::@2 (label) rvaluevar::@return +(byte) rvaluevar::b +(byte) rvaluevar::b#0 reg byte a 110.0 (byte) rvaluevar::i (byte) rvaluevar::i#1 reg byte x 22.0 -(byte) rvaluevar::i#2 reg byte x 16.5 +(byte) rvaluevar::i#2 reg byte x 8.25 +(byte*) rvaluevar::screen +(byte*) rvaluevar::screen#1 screen zp ZP_WORD:2 11.0 +(byte*) rvaluevar::screen#2 screen zp ZP_WORD:2 11.0 reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] -zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 ] +zp ZP_WORD:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] reg byte x [ rvalue::i#2 rvalue::i#1 ] reg byte x [ lvalue::i#2 lvalue::i#1 ] +reg byte a [ rvaluevar::b#0 ] +reg byte a [ rvalue::b#0 ] +reg byte a [ rvalue::b#1 ] +reg byte a [ rvalue::b#2 ] diff --git a/src/test/ref/ptrtestmin.asm b/src/test/ref/ptrtestmin.asm index c1e9c22e6..41eb36b4d 100644 --- a/src/test/ref/ptrtestmin.asm +++ b/src/test/ref/ptrtestmin.asm @@ -3,12 +3,14 @@ .pc = $80d "Program" jsr main main: { + .label SCREEN = $400 ldx #2 b1: cpx #$a bcc b2 rts b2: + lda SCREEN,x inx jmp b1 } diff --git a/src/test/ref/ptrtestmin.cfg b/src/test/ref/ptrtestmin.cfg index 0b79cd982..279c89f76 100644 --- a/src/test/ref/ptrtestmin.cfg +++ b/src/test/ref/ptrtestmin.cfg @@ -18,5 +18,6 @@ main::@return: scope:[main] from main::@1 [7] return to:@return main::@2: scope:[main] from main::@1 - [8] (byte) main::i#1 ← ++ (byte) main::i#2 + [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 diff --git a/src/test/ref/ptrtestmin.log b/src/test/ref/ptrtestmin.log index 2add0af2c..79d4d32c5 100644 --- a/src/test/ref/ptrtestmin.log +++ b/src/test/ref/ptrtestmin.log @@ -3,6 +3,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from to:@1 main: scope:[main] from @1 + (byte[1024]) main::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 to:main::@1 main::@1: scope:[main] from main main::@2 @@ -12,6 +13,7 @@ main::@1: scope:[main] from main main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) + (byte) main::b#0 ← *((byte[1024]) main::SCREEN#0 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 to:main::@1 main::@return: scope:[main] from main::@1 @@ -34,6 +36,10 @@ SYMBOL TABLE SSA (label) main::@1 (label) main::@2 (label) main::@return +(byte[1024]) main::SCREEN +(byte[1024]) main::SCREEN#0 +(byte) main::b +(byte) main::b#0 (byte) main::i (byte) main::i#0 (byte) main::i#1 @@ -46,6 +52,7 @@ Alias (byte) main::i#2 = (byte) main::i#3 Successful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$0 if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte[1024]) main::SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 2 Successful SSA optimization Pass2ConstantIdentification Inlining constant with var siblings (const byte) main::i#0 @@ -59,7 +66,7 @@ CALL GRAPH Calls in [] to main:2 Created 1 initial phi equivalence classes -Coalesced [9] main::i#4 ← main::i#1 +Coalesced [10] main::i#4 ← main::i#1 Coalesced down to 1 phi equivalence classes Adding NOP phi() at start of @begin Adding NOP phi() at start of @1 @@ -87,21 +94,28 @@ main::@return: scope:[main] from main::@1 [7] return to:@return main::@2: scope:[main] from main::@1 - [8] (byte) main::i#1 ← ++ (byte) main::i#2 + [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 VARIABLE REGISTER WEIGHTS (void()) main() +(byte[1024]) main::SCREEN +(byte) main::b +(byte) main::b#0 110.0 (byte) main::i (byte) main::i#1 22.0 -(byte) main::i#2 16.5 +(byte) main::i#2 14.666666666666666 Initial phi equivalence classes [ main::i#2 main::i#1 ] +Added variable main::b#0 to zero page equivalence class [ main::b#0 ] Complete equivalence classes [ main::i#2 main::i#1 ] +[ main::b#0 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Allocated zp ZP_BYTE:3 [ main::b#0 ] INITIAL ASM //SEG0 Basic Upstart @@ -127,6 +141,8 @@ bend_from_b1: bend: //SEG9 main main: { + .label SCREEN = $400 + .label b = 3 .label i = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: @@ -147,23 +163,28 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 + //SEG17 [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) -- vbuz1=pbuc1_derefidx_vbuz2 + ldy i + lda SCREEN,y + sta b + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG18 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG19 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } REGISTER UPLIFT POTENTIAL REGISTERS Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ main::b#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Uplift Scope [main] 110: zp ZP_BYTE:3 [ main::b#0 ] 36.67: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 193 combination reg byte x [ main::i#2 main::i#1 ] -Uplifting [] best 193 combination +Uplifting [main] best 238 combination reg byte a [ main::b#0 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [] best 238 combination ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -189,6 +210,7 @@ bend_from_b1: bend: //SEG9 main main: { + .label SCREEN = $400 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#0] -- vbuxx=vbuc1 @@ -206,11 +228,13 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + lda SCREEN,x + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG19 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } @@ -240,15 +264,20 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@2 (label) main::@return +(byte[1024]) main::SCREEN +(const byte[1024]) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) main::b +(byte) main::b#0 reg byte a 110.0 (byte) main::i (byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#2 reg byte x 14.666666666666666 reg byte x [ main::i#2 main::i#1 ] +reg byte a [ main::b#0 ] FINAL ASSEMBLER -Score: 127 +Score: 172 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -265,6 +294,7 @@ Score: 127 //SEG8 @end //SEG9 main main: { + .label SCREEN = $400 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #2 @@ -278,10 +308,12 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx + //SEG17 [8] (byte) main::b#0 ← *((const byte[1024]) main::SCREEN#0 + (byte) main::i#2) -- vbuaa=pbuc1_derefidx_vbuxx + lda SCREEN,x + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx inx - //SEG18 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG19 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } diff --git a/src/test/ref/ptrtestmin.sym b/src/test/ref/ptrtestmin.sym index 446dc1a1b..397ed7739 100644 --- a/src/test/ref/ptrtestmin.sym +++ b/src/test/ref/ptrtestmin.sym @@ -5,8 +5,13 @@ (label) main::@1 (label) main::@2 (label) main::@return +(byte[1024]) main::SCREEN +(const byte[1024]) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte) main::b +(byte) main::b#0 reg byte a 110.0 (byte) main::i (byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 16.5 +(byte) main::i#2 reg byte x 14.666666666666666 reg byte x [ main::i#2 main::i#1 ] +reg byte a [ main::b#0 ] diff --git a/src/test/ref/scroll-clobber.log b/src/test/ref/scroll-clobber.log index 95d669073..a1c701adc 100644 --- a/src/test/ref/scroll-clobber.log +++ b/src/test/ref/scroll-clobber.log @@ -2,6 +2,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte*) SCROLL#0 ← ((byte*)) (word/dword/signed dword) 53270 (byte[]) TEXT#0 ← (const string) $0 to:@1 main: scope:[main] from @1 @@ -58,6 +59,8 @@ SYMBOL TABLE SSA (byte*) SCREEN#3 (byte*) SCREEN#4 (byte*) SCREEN#5 +(byte*) SCROLL +(byte*) SCROLL#0 (byte[]) TEXT (byte[]) TEXT#0 (void()) main() @@ -103,6 +106,7 @@ Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$1 if((byte) main::c#0!=(byte) '@') goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte*) SCROLL#0 = ((byte*))53270 Constant (const byte[]) TEXT#0 = $0 Constant (const byte) main::i#0 = 0 Successful SSA optimization Pass2ConstantIdentification @@ -111,6 +115,7 @@ Constant (const byte*) main::nxt#2 = TEXT#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Inlining constant with var siblings (const byte) main::i#0 @@ -175,6 +180,7 @@ main::@2: scope:[main] from main::@1 main::@3 VARIABLE REGISTER WEIGHTS (byte*) SCREEN +(byte*) SCROLL (byte[]) TEXT (void()) main() (byte) main::c @@ -422,6 +428,7 @@ FINAL SYMBOL TABLE (label) @end (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SCROLL (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() diff --git a/src/test/ref/scroll-clobber.sym b/src/test/ref/scroll-clobber.sym index f8a1ffb76..208e54e7c 100644 --- a/src/test/ref/scroll-clobber.sym +++ b/src/test/ref/scroll-clobber.sym @@ -3,6 +3,7 @@ (label) @end (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte*) SCROLL (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() diff --git a/src/test/ref/signed-words.cfg b/src/test/ref/signed-words.cfg index 698e3a342..d188bb996 100644 --- a/src/test/ref/signed-words.cfg +++ b/src/test/ref/signed-words.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@6 -@6: scope:[] from @begin + to:@7 +@7: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 [3] phi() -main: scope:[main] from @6 +main: scope:[main] from @7 [4] phi() [5] call init to:main::@2 diff --git a/src/test/ref/signed-words.log b/src/test/ref/signed-words.log index dd4c0f2a2..b57489325 100644 --- a/src/test/ref/signed-words.log +++ b/src/test/ref/signed-words.log @@ -2,28 +2,98 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 + (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 + (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 + (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 - to:@3 -@3: scope:[] from @begin + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*~) $0 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) 1016 (byte*) SPRITES_PTR#0 ← (byte*~) $0 (byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) 8192 - to:@5 -main: scope:[main] from @6 - (signed word) yvel_init#20 ← phi( @6/(signed word) yvel_init#16 ) - (signed word) xvel#20 ← phi( @6/(signed word) xvel#15 ) - (signed word) ypos#20 ← phi( @6/(signed word) ypos#15 ) - (signed word) xpos#20 ← phi( @6/(signed word) xpos#15 ) - (signed word) yvel#18 ← phi( @6/(signed word) yvel#14 ) + to:@6 +main: scope:[main] from @7 + (signed word) yvel_init#20 ← phi( @7/(signed word) yvel_init#16 ) + (signed word) xvel#20 ← phi( @7/(signed word) xvel#15 ) + (signed word) ypos#20 ← phi( @7/(signed word) ypos#15 ) + (signed word) xpos#20 ← phi( @7/(signed word) xpos#15 ) + (signed word) yvel#18 ← phi( @7/(signed word) yvel#14 ) call init to:main::@5 main::@5: scope:[main] from main @@ -116,7 +186,7 @@ init::@2: scope:[init] from init::@2 init::@3 init::@return: scope:[init] from init::@2 return to:@return -@5: scope:[] from @3 +@6: scope:[] from @4 (signed word) xpos#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed word) ypos#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed word) yvel_init#2 ← (byte/signed byte/word/signed word/dword/signed dword) 100 @@ -124,7 +194,7 @@ init::@return: scope:[init] from init::@2 (signed word) yvel#2 ← (signed word) yvel_init#2 (signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) 5 (signed word) g#0 ← (signed byte/signed word/signed dword~) $1 - to:@6 + to:@7 anim: scope:[anim] from main::@3 (signed word) yvel_init#14 ← phi( main::@3/(signed word) yvel_init#13 ) (signed word) xvel#13 ← phi( main::@3/(signed word) xvel#12 ) @@ -200,39 +270,147 @@ anim::@return: scope:[anim] from anim::@1 (signed word) yvel_init#5 ← (signed word) yvel_init#11 return to:@return -@6: scope:[] from @5 - (signed word) yvel_init#16 ← phi( @5/(signed word) yvel_init#2 ) - (signed word) xvel#15 ← phi( @5/(signed word) xvel#2 ) - (signed word) ypos#15 ← phi( @5/(signed word) ypos#2 ) - (signed word) xpos#15 ← phi( @5/(signed word) xpos#2 ) - (signed word) yvel#14 ← phi( @5/(signed word) yvel#2 ) - call main - to:@7 @7: scope:[] from @6 - (signed word) yvel_init#12 ← phi( @6/(signed word) yvel_init#1 ) - (signed word) xvel#11 ← phi( @6/(signed word) xvel#1 ) - (signed word) ypos#12 ← phi( @6/(signed word) ypos#1 ) - (signed word) xpos#11 ← phi( @6/(signed word) xpos#1 ) - (signed word) yvel#11 ← phi( @6/(signed word) yvel#1 ) + (signed word) yvel_init#16 ← phi( @6/(signed word) yvel_init#2 ) + (signed word) xvel#15 ← phi( @6/(signed word) xvel#2 ) + (signed word) ypos#15 ← phi( @6/(signed word) ypos#2 ) + (signed word) xpos#15 ← phi( @6/(signed word) xpos#2 ) + (signed word) yvel#14 ← phi( @6/(signed word) yvel#2 ) + call main + to:@8 +@8: scope:[] from @7 + (signed word) yvel_init#12 ← phi( @7/(signed word) yvel_init#1 ) + (signed word) xvel#11 ← phi( @7/(signed word) xvel#1 ) + (signed word) ypos#12 ← phi( @7/(signed word) ypos#1 ) + (signed word) xpos#11 ← phi( @7/(signed word) xpos#1 ) + (signed word) yvel#11 ← phi( @7/(signed word) yvel#1 ) (signed word) yvel#6 ← (signed word) yvel#11 (signed word) xpos#6 ← (signed word) xpos#11 (signed word) ypos#6 ← (signed word) ypos#12 (signed word) xvel#5 ← (signed word) xvel#11 (signed word) yvel_init#6 ← (signed word) yvel_init#12 to:@end -@end: scope:[] from @7 +@end: scope:[] from @8 SYMBOL TABLE SSA (byte*~) $0 (signed byte/signed word/signed dword~) $1 -(label) @3 -(label) @5 +(label) @4 (label) @6 (label) @7 +(label) @8 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A#0 +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_A_DDR#0 +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B#0 +(byte*) CIA1_PORT_B_DDR +(byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 (byte*) SCREEN (byte*) SCREEN#0 (byte*) SPRITE @@ -245,6 +423,14 @@ SYMBOL TABLE SSA (byte*) SPRITES_EXPAND_X#0 (byte*) SPRITES_EXPAND_Y (byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 (byte*) SPRITES_PTR (byte*) SPRITES_PTR#0 (byte*) SPRITES_XMSB @@ -253,8 +439,32 @@ SYMBOL TABLE SSA (byte*) SPRITES_XPOS#0 (byte*) SPRITES_YPOS (byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 (byte) WHITE (byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (void()) anim() (bool~) anim::$0 (bool~) anim::$1 @@ -500,15 +710,85 @@ Simple Condition (bool~) init::$4 if((byte) init::i#1!=rangelast(0,63)) goto ini Simple Condition (bool~) anim::$1 if((signed word) ypos#13>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@1 Simple Condition (bool~) anim::$6 if((signed word) yvel_init#3>=(signed word/signed dword~) anim::$4) goto anim::@2 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 +Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 +Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 +Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 +Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) SPRITE#0 = ((byte*))8192 Constant (const byte) init::i#0 = 0 @@ -538,17 +818,18 @@ Consolidated array index constant in *(SPRITES_YPOS#0+0) Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value init::i#1 ← ++ init::i#2 to ++ Resolved ranged comparison value if(init::i#1!=rangelast(0,63)) goto init::@2 to (byte/signed byte/word/signed word/dword/signed dword) 64 -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@6 Culled Empty Block (label) init::@3 -Culled Empty Block (label) @5 -Culled Empty Block (label) @7 +Culled Empty Block (label) @6 +Culled Empty Block (label) @8 Successful SSA optimization Pass2CullEmptyBlocks Inlining constant with var siblings (const byte) init::i#0 Inlining constant with var siblings (const byte*) init::sc#0 @@ -584,7 +865,7 @@ Added new block during phi lifting anim::@6(between anim and anim::@1) Added new block during phi lifting init::@5(between init::@1 and init::@1) Added new block during phi lifting init::@6(between init::@2 and init::@2) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @6 +Adding NOP phi() at start of @7 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -616,7 +897,7 @@ Culled Empty Block (label) anim::@6 Culled Empty Block (label) init::@6 Culled Empty Block (label) init::@5 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @6 +Adding NOP phi() at start of @7 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@3 @@ -625,14 +906,14 @@ Adding NOP phi() at start of anim::@5 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@6 -@6: scope:[] from @begin + to:@7 +@7: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @6 +@end: scope:[] from @7 [3] phi() -main: scope:[main] from @6 +main: scope:[main] from @7 [4] phi() [5] call init to:main::@2 @@ -713,18 +994,88 @@ init::@return: scope:[init] from init::@2 VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED (byte*) SCREEN (byte*) SPRITE (byte*) SPRITES_COLS (byte*) SPRITES_ENABLE (byte*) SPRITES_EXPAND_X (byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_PTR (byte*) SPRITES_XMSB (byte*) SPRITES_XPOS (byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE +(byte) YELLOW (void()) anim() (signed word~) anim::$10 4.0 (signed word~) anim::$12 4.0 @@ -842,17 +1193,17 @@ INITIAL ASM .label yvel_22 = 6 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] -main_from_b6: +//SEG6 [4] phi from @7 to main [phi:@7->main] +main_from_b7: jsr main -//SEG7 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG7 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG8 @end bend: @@ -1302,17 +1653,17 @@ ASSEMBLER BEFORE OPTIMIZATION .label yvel_22 = 6 //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -b6_from_bbegin: - jmp b6 -//SEG4 @6 -b6: +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +b7_from_bbegin: + jmp b7 +//SEG4 @7 +b7: //SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] -main_from_b6: +//SEG6 [4] phi from @7 to main [phi:@7->main] +main_from_b7: jsr main -//SEG7 [3] phi from @6 to @end [phi:@6->@end] -bend_from_b6: +//SEG7 [3] phi from @7 to @end [phi:@7->@end] +bend_from_b7: jmp bend //SEG8 @end bend: @@ -1635,7 +1986,7 @@ init: { } ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b6 +Removing instruction jmp b7 Removing instruction jmp bend Removing instruction jmp b2 Removing instruction jmp b3 @@ -1664,9 +2015,9 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b2_from_b2 with b2 Removing instruction bbegin: -Removing instruction b6_from_bbegin: -Removing instruction main_from_b6: -Removing instruction bend_from_b6: +Removing instruction b7_from_bbegin: +Removing instruction main_from_b7: +Removing instruction bend_from_b7: Removing instruction b2_from_b2: Removing instruction b3_from_b2: Removing instruction b1_from_anim: @@ -1675,7 +2026,7 @@ Removing instruction b2_from_b5: Removing instruction b1_from_b1: Removing instruction b2_from_b2: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b6: +Removing instruction b7: Removing instruction bend: Removing instruction b2_from_main: Removing instruction b3: @@ -1701,11 +2052,65 @@ Removing unreachable instruction jmp b2 Succesful ASM optimization Pass5UnreachableCodeElimination FINAL SYMBOL TABLE -(label) @6 +(label) @7 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SPRITE @@ -1718,6 +2123,10 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_PTR (const byte*) SPRITES_PTR#0 SPRITES_PTR = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1016 (byte*) SPRITES_XMSB @@ -1726,8 +2135,20 @@ FINAL SYMBOL TABLE (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (void()) anim() (signed word~) anim::$10 $10 zp ZP_WORD:12 4.0 (signed word~) anim::$12 $12 zp ZP_WORD:14 4.0 @@ -1825,12 +2246,12 @@ Score: 6623 .label yvel_12 = 6 .label yvel_22 = 6 //SEG2 @begin -//SEG3 [1] phi from @begin to @6 [phi:@begin->@6] -//SEG4 @6 +//SEG3 [1] phi from @begin to @7 [phi:@begin->@7] +//SEG4 @7 //SEG5 [2] call main -//SEG6 [4] phi from @6 to main [phi:@6->main] +//SEG6 [4] phi from @7 to main [phi:@7->main] jsr main -//SEG7 [3] phi from @6 to @end [phi:@6->@end] +//SEG7 [3] phi from @7 to @end [phi:@7->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/ref/signed-words.sym b/src/test/ref/signed-words.sym index d80a845ee..bf74b8b10 100644 --- a/src/test/ref/signed-words.sym +++ b/src/test/ref/signed-words.sym @@ -1,8 +1,62 @@ -(label) @6 +(label) @7 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT +(byte*) CIA1_PORT_A +(byte*) CIA1_PORT_A_DDR +(byte*) CIA1_PORT_B +(byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) SPRITE @@ -15,6 +69,10 @@ (const byte*) SPRITES_EXPAND_X#0 SPRITES_EXPAND_X = ((byte*))(word/dword/signed dword) 53277 (byte*) SPRITES_EXPAND_Y (const byte*) SPRITES_EXPAND_Y#0 SPRITES_EXPAND_Y = ((byte*))(word/dword/signed dword) 53271 +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY (byte*) SPRITES_PTR (const byte*) SPRITES_PTR#0 SPRITES_PTR = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1016 (byte*) SPRITES_XMSB @@ -23,8 +81,20 @@ (const byte*) SPRITES_XPOS#0 SPRITES_XPOS = ((byte*))(word/dword/signed dword) 53248 (byte*) SPRITES_YPOS (const byte*) SPRITES_YPOS#0 SPRITES_YPOS = ((byte*))(word/dword/signed dword) 53249 +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1 +(byte) YELLOW (void()) anim() (signed word~) anim::$10 $10 zp ZP_WORD:12 4.0 (signed word~) anim::$12 $12 zp ZP_WORD:14 4.0 diff --git a/src/test/ref/sinusgen16.log b/src/test/ref/sinusgen16.log index 335135c76..9d89c213c 100644 --- a/src/test/ref/sinusgen16.log +++ b/src/test/ref/sinusgen16.log @@ -1,10 +1,11 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@2 @2: scope:[] from @begin (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@13 + to:@5 divr16u: scope:[divr16u] from div32u16u div32u16u::@2 (word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@2/(word) divr16u::divisor#1 ) (word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@2/(word) divr16u::dividend#2 ) @@ -125,6 +126,14 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3 (word) rem16u#5 ← (word) rem16u#14 return to:@return +@5: scope:[] from @2 + (word) rem16u#37 ← phi( @2/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @5 + (word) rem16u#34 ← phi( @5/(word) rem16u#37 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@13 mul16u: scope:[mul16u] from mulu16_sel (word) mul16u::a#5 ← phi( mulu16_sel/(word) mul16u::a#1 ) (word) mul16u::b#1 ← phi( mulu16_sel/(word) mul16u::b#0 ) @@ -172,11 +181,14 @@ mul16u::@return: scope:[mul16u] from mul16u::@3 (dword) mul16u::return#1 ← (dword) mul16u::return#3 return to:@return -@13: scope:[] from @2 - (word) rem16u#31 ← phi( @2/(word) rem16u#0 ) +@13: scope:[] from @6 + (word) rem16u#31 ← phi( @6/(word) rem16u#34 ) (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 + (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 to:@20 sin16s_gen: scope:[sin16s_gen] from main (signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 ) @@ -552,7 +564,7 @@ main::@5: scope:[main] from main call print_cls to:main::@6 main::@6: scope:[main] from main::@5 - (word) rem16u#34 ← phi( main::@5/(word) rem16u#8 ) + (word) rem16u#35 ← phi( main::@5/(word) rem16u#8 ) (word) main::wavelength#6 ← phi( main::@5/(word) main::wavelength#8 ) (byte*) print_char_cursor#36 ← phi( main::@5/(byte*) print_char_cursor#15 ) (byte*) print_line_cursor#7 ← phi( main::@5/(byte*) print_line_cursor#2 ) @@ -562,7 +574,7 @@ main::@6: scope:[main] from main::@5 to:main::@1 main::@1: scope:[main] from main::@6 main::@8 (byte*) print_line_cursor#17 ← phi( main::@6/(byte*) print_line_cursor#3 main::@8/(byte*) print_line_cursor#11 ) - (word) rem16u#32 ← phi( main::@6/(word) rem16u#34 main::@8/(word) rem16u#24 ) + (word) rem16u#32 ← phi( main::@6/(word) rem16u#35 main::@8/(word) rem16u#24 ) (word) main::wavelength#4 ← phi( main::@6/(word) main::wavelength#6 main::@8/(word) main::wavelength#1 ) (byte*) print_char_cursor#54 ← phi( main::@6/(byte*) print_char_cursor#16 main::@8/(byte*) print_char_cursor#18 ) (signed word*) main::st1#2 ← phi( main::@6/(signed word*) main::st1#0 main::@8/(signed word*) main::st1#1 ) @@ -607,7 +619,7 @@ main::@8: scope:[main] from main::@7 to:main::@return main::@3: scope:[main] from main::@1 (byte*) print_line_cursor#19 ← phi( main::@1/(byte*) print_line_cursor#17 ) - (word) rem16u#35 ← phi( main::@1/(word) rem16u#32 ) + (word) rem16u#36 ← phi( main::@1/(word) rem16u#32 ) (word) main::wavelength#7 ← phi( main::@1/(word) main::wavelength#4 ) (signed word*) main::st1#7 ← phi( main::@1/(signed word*) main::st1#2 ) (signed word) main::sw#3 ← phi( main::@1/(signed word) main::sw#0 ) @@ -617,7 +629,7 @@ main::@3: scope:[main] from main::@1 to:main::@9 main::@9: scope:[main] from main::@3 (byte*) print_line_cursor#18 ← phi( main::@3/(byte*) print_line_cursor#19 ) - (word) rem16u#33 ← phi( main::@3/(word) rem16u#35 ) + (word) rem16u#33 ← phi( main::@3/(word) rem16u#36 ) (word) main::wavelength#5 ← phi( main::@3/(word) main::wavelength#7 ) (signed word*) main::st1#6 ← phi( main::@3/(signed word*) main::st1#7 ) (signed word) main::sw#2 ← phi( main::@3/(signed word) main::sw#3 ) @@ -658,12 +670,20 @@ SYMBOL TABLE SSA (label) @32 (label) @40 (label) @41 +(label) @5 +(label) @6 (label) @begin (label) @end +(word) PI2_u4f12 +(word) PI2_u4f12#0 (dword) PI2_u4f28 (dword) PI2_u4f28#0 +(word) PI_HALF_u4f12 +(word) PI_HALF_u4f12#0 (dword) PI_HALF_u4f28 (dword) PI_HALF_u4f28#0 +(word) PI_u4f12 +(word) PI_u4f12#0 (dword) PI_u4f28 (dword) PI_u4f28#0 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) @@ -1061,6 +1081,8 @@ SYMBOL TABLE SSA (word) print_word::w#0 (word) print_word::w#1 (word) print_word::w#2 +(signed word) rem16s +(signed word) rem16s#0 (word) rem16u (word) rem16u#0 (word) rem16u#1 @@ -1092,12 +1114,18 @@ SYMBOL TABLE SSA (word) rem16u#33 (word) rem16u#34 (word) rem16u#35 +(word) rem16u#36 +(word) rem16u#37 (word) rem16u#4 (word) rem16u#5 (word) rem16u#6 (word) rem16u#7 (word) rem16u#8 (word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (signed word()) sin16s((dword) sin16s::x) (bool~) sin16s::$0 (bool~) sin16s::$1 @@ -1261,13 +1289,13 @@ Alias (word) divr16u::return#3 = (word) divr16u::return#6 Alias (word) rem16u#13 = (word) rem16u#4 (word) rem16u#14 (word) rem16u#5 Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword) div32u16u::return#3 (dword) div32u16u::return#1 +Alias (word) rem16u#0 = (word) rem16u#37 (word) rem16u#34 (word) rem16u#31 (word) rem16u#29 (word) rem16u#28 (word) rem16u#25 Alias (word) mul16u::a#2 = (word) mul16u::a#3 (word) mul16u::a#6 Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#3 (dword) mul16u::return#1 Alias (word) mul16u::a#0 = (word~) mul16u::$5 Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (word) rem16u#0 = (word) rem16u#31 (word) rem16u#29 (word) rem16u#28 (word) rem16u#25 Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 Alias (signed word*) sin16s_gen::sintab#4 = (signed word*) sin16s_gen::sintab#5 Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#4 @@ -1332,7 +1360,7 @@ Alias (byte*) print_screen#4 = (byte*) print_screen#5 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#53 Alias (word) main::wavelength#0 = (word) main::wavelength#8 (word) main::wavelength#6 -Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#34 +Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#35 Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#36 Alias (signed word[120]) main::sintab1#0 = (signed word*) main::st1#0 @@ -1347,7 +1375,7 @@ Alias (byte*) print_char_cursor#49 = (byte*) print_char_cursor#54 Alias (signed word) main::sw#0 = (signed word) main::sw#3 (signed word) main::sw#2 Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6 Alias (word) main::wavelength#4 = (word) main::wavelength#7 (word) main::wavelength#5 -Alias (word) rem16u#32 = (word) rem16u#35 (word) rem16u#33 +Alias (word) rem16u#32 = (word) rem16u#36 (word) rem16u#33 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#18 Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#39 Alias (word) rem16u#10 = (word) rem16u#19 @@ -1437,14 +1465,20 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$3 if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 Simple Condition (bool~) main::$10 if((signed word*) main::st1#1<(signed word*~) main::$9) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) rem8u#0 = 0 Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const dword) mul16u::res#0 = 0 Constant (const dword) PI2_u4f28#0 = 1686629713 Constant (const dword) PI_u4f28#0 = 843314857 Constant (const dword) PI_HALF_u4f28#0 = 421657428 +Constant (const word) PI2_u4f12#0 = 25736 +Constant (const word) PI_u4f12#0 = 12868 +Constant (const word) PI_HALF_u4f12#0 = 6434 Constant (const dword) sin16s_gen::x#0 = 0 Constant (const word) sin16s_gen::i#0 = 0 Constant (const byte) sin16s::isUpper#0 = 0 @@ -1488,6 +1522,8 @@ Successful SSA optimization Pass2NopCastElimination Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16 Culled Empty Block (label) @2 +Culled Empty Block (label) @5 +Culled Empty Block (label) @6 Culled Empty Block (label) mul16u::@3 Culled Empty Block (label) @13 Culled Empty Block (label) @20 @@ -1999,8 +2035,11 @@ divr16u::@return: scope:[divr16u] from divr16u::@6 VARIABLE REGISTER WEIGHTS +(word) PI2_u4f12 (dword) PI2_u4f28 +(word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 +(word) PI_u4f12 (dword) PI_u4f28 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword) div32u16u::dividend @@ -2133,8 +2172,11 @@ VARIABLE REGISTER WEIGHTS (signed word) print_sword::w#3 1.3333333333333333 (void()) print_word((word) print_word::w) (word) print_word::w +(signed word) rem16s (word) rem16u (word) rem16u#1 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 4.0 (byte) sin16s::isUpper @@ -5154,10 +5196,13 @@ FINAL SYMBOL TABLE (label) @40 (label) @begin (label) @end +(word) PI2_u4f12 (dword) PI2_u4f28 (const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 +(word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 (const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428 +(word) PI_u4f12 (dword) PI_u4f28 (const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) @@ -5335,8 +5380,11 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 $6 zp ZP_DWORD:15 4.0 (label) sin16s::@1 diff --git a/src/test/ref/sinusgen16.sym b/src/test/ref/sinusgen16.sym index e2a9f152e..890748780 100644 --- a/src/test/ref/sinusgen16.sym +++ b/src/test/ref/sinusgen16.sym @@ -1,10 +1,13 @@ (label) @40 (label) @begin (label) @end +(word) PI2_u4f12 (dword) PI2_u4f28 (const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 +(word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 (const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428 +(word) PI_u4f12 (dword) PI_u4f28 (const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857 (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) @@ -182,8 +185,11 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 $6 zp ZP_DWORD:15 4.0 (label) sin16s::@1 diff --git a/src/test/ref/sinusgen16b.log b/src/test/ref/sinusgen16b.log index d3df0d248..cae349503 100644 --- a/src/test/ref/sinusgen16b.log +++ b/src/test/ref/sinusgen16b.log @@ -1,10 +1,11 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@2 @2: scope:[] from @begin (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@13 + to:@5 divr16u: scope:[divr16u] from div32u16u div32u16u::@2 (word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@2/(word) divr16u::divisor#1 ) (word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@2/(word) divr16u::dividend#2 ) @@ -125,6 +126,14 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3 (word) rem16u#5 ← (word) rem16u#17 return to:@return +@5: scope:[] from @2 + (word) rem16u#46 ← phi( @2/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @5 + (word) rem16u#43 ← phi( @5/(word) rem16u#46 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@13 mul16u: scope:[mul16u] from mulu16_sel (word) mul16u::a#5 ← phi( mulu16_sel/(word) mul16u::a#1 ) (word) mul16u::b#1 ← phi( mulu16_sel/(word) mul16u::b#0 ) @@ -172,11 +181,12 @@ mul16u::@return: scope:[mul16u] from mul16u::@3 (dword) mul16u::return#1 ← (dword) mul16u::return#3 return to:@return -@13: scope:[] from @2 - (word) rem16u#40 ← phi( @2/(word) rem16u#0 ) +@13: scope:[] from @6 + (word) rem16u#40 ← phi( @6/(word) rem16u#43 ) (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 + (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 to:@22 @@ -741,7 +751,7 @@ main::@6: scope:[main] from main::@5 call print_cls to:main::@7 main::@7: scope:[main] from main::@6 - (word) rem16u#43 ← phi( main::@6/(word) rem16u#11 ) + (word) rem16u#44 ← phi( main::@6/(word) rem16u#11 ) (byte*) print_char_cursor#36 ← phi( main::@6/(byte*) print_char_cursor#15 ) (byte*) print_line_cursor#7 ← phi( main::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#7 @@ -752,7 +762,7 @@ main::@7: scope:[main] from main::@6 to:main::@1 main::@1: scope:[main] from main::@7 main::@9 (byte*) print_line_cursor#18 ← phi( main::@7/(byte*) print_line_cursor#3 main::@9/(byte*) print_line_cursor#11 ) - (word) rem16u#41 ← phi( main::@7/(word) rem16u#43 main::@9/(word) rem16u#32 ) + (word) rem16u#41 ← phi( main::@7/(word) rem16u#44 main::@9/(word) rem16u#32 ) (byte) main::i#5 ← phi( main::@7/(byte) main::i#0 main::@9/(byte) main::i#1 ) (byte*) print_char_cursor#54 ← phi( main::@7/(byte*) print_char_cursor#16 main::@9/(byte*) print_char_cursor#18 ) (signed word*) main::st2#2 ← phi( main::@7/(signed word*) main::st2#0 main::@9/(signed word*) main::st2#1 ) @@ -803,7 +813,7 @@ main::@9: scope:[main] from main::@8 to:main::@return main::@3: scope:[main] from main::@1 (byte*) print_line_cursor#20 ← phi( main::@1/(byte*) print_line_cursor#18 ) - (word) rem16u#44 ← phi( main::@1/(word) rem16u#41 ) + (word) rem16u#45 ← phi( main::@1/(word) rem16u#41 ) (byte) main::i#7 ← phi( main::@1/(byte) main::i#5 ) (signed word*) main::st2#7 ← phi( main::@1/(signed word*) main::st2#2 ) (signed word*) main::st1#7 ← phi( main::@1/(signed word*) main::st1#2 ) @@ -814,7 +824,7 @@ main::@3: scope:[main] from main::@1 to:main::@10 main::@10: scope:[main] from main::@3 (byte*) print_line_cursor#19 ← phi( main::@3/(byte*) print_line_cursor#20 ) - (word) rem16u#42 ← phi( main::@3/(word) rem16u#44 ) + (word) rem16u#42 ← phi( main::@3/(word) rem16u#45 ) (byte) main::i#6 ← phi( main::@3/(byte) main::i#7 ) (signed word*) main::st2#6 ← phi( main::@3/(signed word*) main::st2#7 ) (signed word*) main::st1#6 ← phi( main::@3/(signed word*) main::st1#7 ) @@ -856,8 +866,12 @@ SYMBOL TABLE SSA (label) @34 (label) @42 (label) @43 +(label) @5 +(label) @6 (label) @begin (label) @end +(word) PI2_u4f12 +(word) PI2_u4f12#0 (dword) PI2_u4f28 (dword) PI2_u4f28#0 (word) PI_HALF_u4f12 @@ -1309,6 +1323,8 @@ SYMBOL TABLE SSA (word) print_word::w#0 (word) print_word::w#1 (word) print_word::w#2 +(signed word) rem16s +(signed word) rem16s#0 (word) rem16u (word) rem16u#0 (word) rem16u#1 @@ -1350,11 +1366,17 @@ SYMBOL TABLE SSA (word) rem16u#42 (word) rem16u#43 (word) rem16u#44 +(word) rem16u#45 +(word) rem16u#46 (word) rem16u#5 (word) rem16u#6 (word) rem16u#7 (word) rem16u#8 (word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (signed word()) sin16s((dword) sin16s::x) (bool~) sin16s::$0 (bool~) sin16s::$1 @@ -1648,13 +1670,13 @@ Alias (word) divr16u::return#3 = (word) divr16u::return#6 Alias (word) rem16u#16 = (word) rem16u#4 (word) rem16u#17 (word) rem16u#5 Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword) div32u16u::return#4 (dword) div32u16u::return#1 +Alias (word) rem16u#0 = (word) rem16u#46 (word) rem16u#43 (word) rem16u#40 (word) rem16u#38 (word) rem16u#37 (word) rem16u#33 Alias (word) mul16u::a#2 = (word) mul16u::a#3 (word) mul16u::a#6 Alias (dword) mul16u::mb#3 = (dword) mul16u::mb#4 (dword) mul16u::mb#5 Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword) mul16u::return#0 (dword) mul16u::res#3 (dword) mul16u::return#3 (dword) mul16u::return#1 Alias (word) mul16u::a#0 = (word~) mul16u::$5 Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (word) rem16u#0 = (word) rem16u#40 (word) rem16u#38 (word) rem16u#37 (word) rem16u#33 Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#5 Alias (signed word*) sin16s_gen::sintab#4 = (signed word*) sin16s_gen::sintab#5 Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#4 @@ -1759,7 +1781,7 @@ Alias (byte*) print_screen#4 = (byte*) print_screen#5 (byte*) print_screen#6 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 (byte*) print_line_cursor#16 Alias (byte*) print_char_cursor#47 = (byte*) print_char_cursor#53 (byte*) print_char_cursor#56 Alias (word) rem16u#10 = (word) rem16u#22 -Alias (word) rem16u#11 = (word) rem16u#23 (word) rem16u#43 +Alias (word) rem16u#11 = (word) rem16u#23 (word) rem16u#44 Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#36 Alias (signed word[120]) main::sintab1#0 = (signed word*) main::st1#0 @@ -1778,7 +1800,7 @@ Alias (byte*) print_char_cursor#49 = (byte*) print_char_cursor#54 Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6 Alias (signed word*) main::st2#2 = (signed word*) main::st2#7 (signed word*) main::st2#6 Alias (byte) main::i#5 = (byte) main::i#7 (byte) main::i#6 -Alias (word) rem16u#41 = (word) rem16u#44 (word) rem16u#42 +Alias (word) rem16u#41 = (word) rem16u#45 (word) rem16u#42 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#19 Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#39 Alias (word) rem16u#13 = (word) rem16u#25 @@ -1881,14 +1903,18 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$5 if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 Simple Condition (bool~) main::$11 if((byte) main::i#1!=rangelast(0,119)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) rem8u#0 = 0 Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const dword) mul16u::res#0 = 0 Constant (const dword) PI2_u4f28#0 = 1686629713 Constant (const dword) PI_u4f28#0 = 843314857 Constant (const dword) PI_HALF_u4f28#0 = 421657428 +Constant (const word) PI2_u4f12#0 = 25736 Constant (const word) PI_u4f12#0 = 12868 Constant (const word) PI_HALF_u4f12#0 = 6434 Constant (const dword) sin16s_gen::x#0 = 0 @@ -1948,6 +1974,8 @@ Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u: Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ Resolved ranged comparison value if(main::i#1!=rangelast(0,119)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 120 Culled Empty Block (label) @2 +Culled Empty Block (label) @5 +Culled Empty Block (label) @6 Culled Empty Block (label) mul16u::@3 Culled Empty Block (label) @13 Culled Empty Block (label) @22 @@ -2633,6 +2661,7 @@ sin16s::@15: scope:[sin16s] from sin16s::@12 VARIABLE REGISTER WEIGHTS +(word) PI2_u4f12 (dword) PI2_u4f28 (word) PI_HALF_u4f12 (dword) PI_HALF_u4f28 @@ -2791,8 +2820,11 @@ VARIABLE REGISTER WEIGHTS (signed word) print_sword::w#3 1.3333333333333333 (void()) print_word((word) print_word::w) (word) print_word::w +(signed word) rem16s (word) rem16u (word) rem16u#1 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 4.0 (byte) sin16s::isUpper @@ -7021,6 +7053,7 @@ FINAL SYMBOL TABLE (label) @42 (label) @begin (label) @end +(word) PI2_u4f12 (dword) PI2_u4f28 (const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 (word) PI_HALF_u4f12 @@ -7230,8 +7263,11 @@ FINAL SYMBOL TABLE (label) print_word::@1 (label) print_word::@return (word) print_word::w +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 $6 zp ZP_DWORD:21 4.0 (label) sin16s::@1 diff --git a/src/test/ref/sinusgen16b.sym b/src/test/ref/sinusgen16b.sym index 698ab7953..32bdc874f 100644 --- a/src/test/ref/sinusgen16b.sym +++ b/src/test/ref/sinusgen16b.sym @@ -1,6 +1,7 @@ (label) @42 (label) @begin (label) @end +(word) PI2_u4f12 (dword) PI2_u4f28 (const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 (word) PI_HALF_u4f12 @@ -210,8 +211,11 @@ (label) print_word::@1 (label) print_word::@return (word) print_word::w +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 $6 zp ZP_DWORD:21 4.0 (label) sin16s::@1 diff --git a/src/test/ref/sinusgen8.asm b/src/test/ref/sinusgen8.asm index 3c1a44715..12bdf11ce 100644 --- a/src/test/ref/sinusgen8.asm +++ b/src/test/ref/sinusgen8.asm @@ -5,6 +5,7 @@ .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 + .label rem16u = 2 .label print_char_cursor = 5 jsr main main: { diff --git a/src/test/ref/sinusgen8.cfg b/src/test/ref/sinusgen8.cfg index 6164610ea..2155b70fd 100644 --- a/src/test/ref/sinusgen8.cfg +++ b/src/test/ref/sinusgen8.cfg @@ -275,7 +275,7 @@ divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 [137] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [137] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [137] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [137] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#9 ) + [137] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) [138] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 @@ -296,10 +296,13 @@ divr16u::@5: scope:[divr16u] from divr16u::@2 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 [149] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [149] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [149] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [151] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + to:divr16u::@6 +divr16u::@6: scope:[divr16u] from divr16u::@3 + [152] (word) rem16u#1 ← (word) divr16u::rem#10 to:divr16u::@return -divr16u::@return: scope:[divr16u] from divr16u::@3 - [152] return +divr16u::@return: scope:[divr16u] from divr16u::@6 + [153] return to:@return diff --git a/src/test/ref/sinusgen8.log b/src/test/ref/sinusgen8.log index 8e43a7c65..e4b0d0885 100644 --- a/src/test/ref/sinusgen8.log +++ b/src/test/ref/sinusgen8.log @@ -1,11 +1,15 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@13 + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +@2: scope:[] from @begin + (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@5 divr16u: scope:[divr16u] from div16u (word) divr16u::divisor#5 ← phi( div16u/(word) divr16u::divisor#0 ) (word) divr16u::dividend#4 ← phi( div16u/(word) divr16u::dividend#1 ) - (word) divr16u::rem#8 ← phi( div16u/(word) divr16u::rem#3 ) + (word) divr16u::rem#9 ← phi( div16u/(word) divr16u::rem#3 ) (word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:divr16u::@1 @@ -14,7 +18,7 @@ divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 (word) divr16u::divisor#3 ← phi( divr16u/(word) divr16u::divisor#5 divr16u::@3/(word) divr16u::divisor#6 ) (word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 ) (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#4 divr16u::@3/(word) divr16u::dividend#5 ) - (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#8 divr16u::@3/(word) divr16u::rem#9 ) + (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#9 divr16u::@3/(word) divr16u::rem#10 ) (word~) divr16u::$0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 (word) divr16u::rem#0 ← (word~) divr16u::$0 (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 @@ -50,7 +54,7 @@ divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 (word) divr16u::divisor#6 ← phi( divr16u::@2/(word) divr16u::divisor#1 divr16u::@5/(word) divr16u::divisor#2 ) (word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) (word) divr16u::dividend#5 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#7 ) - (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) (byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 ) (byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,15) (bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,15) @@ -68,14 +72,19 @@ divr16u::@5: scope:[divr16u] from divr16u::@2 to:divr16u::@3 divr16u::@6: scope:[divr16u] from divr16u::@3 (word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 ) + (word) divr16u::rem#8 ← phi( divr16u::@3/(word) divr16u::rem#10 ) + (word) rem16u#1 ← (word) divr16u::rem#8 (word) divr16u::return#0 ← (word) divr16u::quotient#5 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 + (word) rem16u#10 ← phi( divr16u::@6/(word) rem16u#1 ) (word) divr16u::return#3 ← phi( divr16u::@6/(word) divr16u::return#0 ) (word) divr16u::return#1 ← (word) divr16u::return#3 + (word) rem16u#2 ← (word) rem16u#10 return to:@return div16u: scope:[div16u] from sin8s_gen + (word) rem16u#18 ← phi( sin8s_gen/(word) rem16u#19 ) (word) div16u::divisor#1 ← phi( sin8s_gen/(word) div16u::divisor#0 ) (word) div16u::dividend#1 ← phi( sin8s_gen/(word) div16u::dividend#0 ) (word) divr16u::dividend#1 ← (word) div16u::dividend#1 @@ -85,15 +94,27 @@ div16u: scope:[div16u] from sin8s_gen (word) divr16u::return#2 ← (word) divr16u::return#1 to:div16u::@2 div16u::@2: scope:[div16u] from div16u + (word) rem16u#11 ← phi( div16u/(word) rem16u#2 ) (word) divr16u::return#4 ← phi( div16u/(word) divr16u::return#2 ) (word~) div16u::$0 ← (word) divr16u::return#4 + (word) rem16u#3 ← (word) rem16u#11 (word) div16u::return#0 ← (word~) div16u::$0 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@2 + (word) rem16u#12 ← phi( div16u::@2/(word) rem16u#3 ) (word) div16u::return#3 ← phi( div16u::@2/(word) div16u::return#0 ) (word) div16u::return#1 ← (word) div16u::return#3 + (word) rem16u#4 ← (word) rem16u#12 return to:@return +@5: scope:[] from @2 + (word) rem16u#35 ← phi( @2/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @5 + (word) rem16u#32 ← phi( @5/(word) rem16u#35 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@13 mul8u: scope:[mul8u] from mulu8_sel (byte) mul8u::a#5 ← phi( mulu8_sel/(byte) mul8u::a#1 ) (byte) mul8u::b#1 ← phi( mulu8_sel/(byte) mul8u::b#0 ) @@ -141,13 +162,18 @@ mul8u::@return: scope:[mul8u] from mul8u::@3 (word) mul8u::return#1 ← (word) mul8u::return#3 return to:@return -@13: scope:[] from @begin +@13: scope:[] from @6 + (word) rem16u#29 ← phi( @6/(word) rem16u#32 ) + (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 + (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 + (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 to:@20 sin8s_gen: scope:[sin8s_gen] from main (signed byte*) sin8s_gen::sintab#5 ← phi( main/(signed byte*) sin8s_gen::sintab#1 ) + (word) rem16u#19 ← phi( main/(word) rem16u#21 ) (word) sin8s_gen::wavelength#1 ← phi( main/(word) sin8s_gen::wavelength#0 ) (word) div16u::dividend#0 ← (word) PI2_u4f12#0 (word) div16u::divisor#0 ← (word) sin8s_gen::wavelength#1 @@ -157,13 +183,16 @@ sin8s_gen: scope:[sin8s_gen] from main sin8s_gen::@3: scope:[sin8s_gen] from sin8s_gen (word) sin8s_gen::wavelength#4 ← phi( sin8s_gen/(word) sin8s_gen::wavelength#1 ) (signed byte*) sin8s_gen::sintab#4 ← phi( sin8s_gen/(signed byte*) sin8s_gen::sintab#5 ) + (word) rem16u#13 ← phi( sin8s_gen/(word) rem16u#4 ) (word) div16u::return#4 ← phi( sin8s_gen/(word) div16u::return#2 ) (word~) sin8s_gen::$0 ← (word) div16u::return#4 + (word) rem16u#5 ← (word) rem16u#13 (word) sin8s_gen::step#0 ← (word~) sin8s_gen::$0 (word) sin8s_gen::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin8s_gen::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:sin8s_gen::@1 sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen::@3 sin8s_gen::@4 + (word) rem16u#24 ← phi( sin8s_gen::@3/(word) rem16u#5 sin8s_gen::@4/(word) rem16u#20 ) (word) sin8s_gen::wavelength#3 ← phi( sin8s_gen::@3/(word) sin8s_gen::wavelength#4 sin8s_gen::@4/(word) sin8s_gen::wavelength#2 ) (word) sin8s_gen::i#3 ← phi( sin8s_gen::@3/(word) sin8s_gen::i#0 sin8s_gen::@4/(word) sin8s_gen::i#1 ) (word) sin8s_gen::step#2 ← phi( sin8s_gen::@3/(word) sin8s_gen::step#0 sin8s_gen::@4/(word) sin8s_gen::step#1 ) @@ -174,6 +203,7 @@ sin8s_gen::@1: scope:[sin8s_gen] from sin8s_gen::@3 sin8s_gen::@4 (signed byte) sin8s::return#0 ← (signed byte) sin8s::return#2 to:sin8s_gen::@4 sin8s_gen::@4: scope:[sin8s_gen] from sin8s_gen::@1 + (word) rem16u#20 ← phi( sin8s_gen::@1/(word) rem16u#24 ) (word) sin8s_gen::wavelength#2 ← phi( sin8s_gen::@1/(word) sin8s_gen::wavelength#3 ) (word) sin8s_gen::i#2 ← phi( sin8s_gen::@1/(word) sin8s_gen::i#3 ) (word) sin8s_gen::step#1 ← phi( sin8s_gen::@1/(word) sin8s_gen::step#2 ) @@ -190,6 +220,8 @@ sin8s_gen::@4: scope:[sin8s_gen] from sin8s_gen::@1 if((bool~) sin8s_gen::$3) goto sin8s_gen::@1 to:sin8s_gen::@return sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@4 + (word) rem16u#14 ← phi( sin8s_gen::@4/(word) rem16u#20 ) + (word) rem16u#6 ← (word) rem16u#14 return to:@return sin8s: scope:[sin8s] from sin8s_gen::@1 @@ -349,6 +381,7 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 return to:@return @20: scope:[] from @13 + (word) rem16u#27 ← phi( @13/(word) rem16u#29 ) (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 @@ -425,6 +458,7 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@7 (byte*) print_screen#7 ← phi( @20/(byte*) print_screen#0 ) (byte*) print_char_cursor#51 ← phi( @20/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#0 ) + (word) rem16u#26 ← phi( @20/(word) rem16u#27 ) (byte[]) print_hextab#0 ← (const string) $0 to:@40 print_byte: scope:[print_byte] from print_sbyte::@2 @@ -491,6 +525,7 @@ main: scope:[main] from @40 (byte*) print_char_cursor#49 ← phi( @40/(byte*) print_char_cursor#46 ) (byte*) print_line_cursor#13 ← phi( @40/(byte*) print_line_cursor#12 ) (byte*) print_screen#5 ← phi( @40/(byte*) print_screen#6 ) + (word) rem16u#21 ← phi( @40/(word) rem16u#23 ) (word) main::wavelength#0 ← (byte/word/signed word/dword/signed dword) 192 (signed byte[192]) main::sintab2#0 ← { fill( 192, 0) } (byte[]) main::sintabref#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 21, (byte/signed byte/word/signed word/dword/signed dword) 25, (byte/signed byte/word/signed word/dword/signed dword) 29, (byte/signed byte/word/signed word/dword/signed dword) 33, (byte/signed byte/word/signed word/dword/signed dword) 37, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 45, (byte/signed byte/word/signed word/dword/signed dword) 49, (byte/signed byte/word/signed word/dword/signed dword) 53, (byte/signed byte/word/signed word/dword/signed dword) 56, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/signed byte/word/signed word/dword/signed dword) 67, (byte/signed byte/word/signed word/dword/signed dword) 71, (byte/signed byte/word/signed word/dword/signed dword) 74, (byte/signed byte/word/signed word/dword/signed dword) 78, (byte/signed byte/word/signed word/dword/signed dword) 81, (byte/signed byte/word/signed word/dword/signed dword) 84, (byte/signed byte/word/signed word/dword/signed dword) 87, (byte/signed byte/word/signed word/dword/signed dword) 90, (byte/signed byte/word/signed word/dword/signed dword) 93, (byte/signed byte/word/signed word/dword/signed dword) 96, (byte/signed byte/word/signed word/dword/signed dword) 99, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 104, (byte/signed byte/word/signed word/dword/signed dword) 106, (byte/signed byte/word/signed word/dword/signed dword) 108, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 112, (byte/signed byte/word/signed word/dword/signed dword) 114, (byte/signed byte/word/signed word/dword/signed dword) 116, (byte/signed byte/word/signed word/dword/signed dword) 118, (byte/signed byte/word/signed word/dword/signed dword) 119, (byte/signed byte/word/signed word/dword/signed dword) 121, (byte/signed byte/word/signed word/dword/signed dword) 122, (byte/signed byte/word/signed word/dword/signed dword) 123, (byte/signed byte/word/signed word/dword/signed dword) 124, (byte/signed byte/word/signed word/dword/signed dword) 125, (byte/signed byte/word/signed word/dword/signed dword) 126, (byte/signed byte/word/signed word/dword/signed dword) 126, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/word/signed word/dword/signed dword) 128, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 127, (byte/signed byte/word/signed word/dword/signed dword) 126, (byte/signed byte/word/signed word/dword/signed dword) 126, (byte/signed byte/word/signed word/dword/signed dword) 125, (byte/signed byte/word/signed word/dword/signed dword) 124, (byte/signed byte/word/signed word/dword/signed dword) 123, (byte/signed byte/word/signed word/dword/signed dword) 122, (byte/signed byte/word/signed word/dword/signed dword) 121, (byte/signed byte/word/signed word/dword/signed dword) 119, (byte/signed byte/word/signed word/dword/signed dword) 118, (byte/signed byte/word/signed word/dword/signed dword) 116, (byte/signed byte/word/signed word/dword/signed dword) 114, (byte/signed byte/word/signed word/dword/signed dword) 112, (byte/signed byte/word/signed word/dword/signed dword) 110, (byte/signed byte/word/signed word/dword/signed dword) 108, (byte/signed byte/word/signed word/dword/signed dword) 106, (byte/signed byte/word/signed word/dword/signed dword) 104, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 99, (byte/signed byte/word/signed word/dword/signed dword) 96, (byte/signed byte/word/signed word/dword/signed dword) 93, (byte/signed byte/word/signed word/dword/signed dword) 90, (byte/signed byte/word/signed word/dword/signed dword) 87, (byte/signed byte/word/signed word/dword/signed dword) 84, (byte/signed byte/word/signed word/dword/signed dword) 81, (byte/signed byte/word/signed word/dword/signed dword) 78, (byte/signed byte/word/signed word/dword/signed dword) 74, (byte/signed byte/word/signed word/dword/signed dword) 71, (byte/signed byte/word/signed word/dword/signed dword) 67, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/signed byte/word/signed word/dword/signed dword) 60, (byte/signed byte/word/signed word/dword/signed dword) 56, (byte/signed byte/word/signed word/dword/signed dword) 53, (byte/signed byte/word/signed word/dword/signed dword) 49, (byte/signed byte/word/signed word/dword/signed dword) 45, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 37, (byte/signed byte/word/signed word/dword/signed dword) 33, (byte/signed byte/word/signed word/dword/signed dword) 29, (byte/signed byte/word/signed word/dword/signed dword) 25, (byte/signed byte/word/signed word/dword/signed dword) 21, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 12, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/word/signed word/dword/signed dword) 252, (byte/word/signed word/dword/signed dword) 248, (byte/word/signed word/dword/signed dword) 244, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 235, (byte/word/signed word/dword/signed dword) 231, (byte/word/signed word/dword/signed dword) 227, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 215, (byte/word/signed word/dword/signed dword) 211, (byte/word/signed word/dword/signed dword) 207, (byte/word/signed word/dword/signed dword) 203, (byte/word/signed word/dword/signed dword) 200, (byte/word/signed word/dword/signed dword) 196, (byte/word/signed word/dword/signed dword) 192, (byte/word/signed word/dword/signed dword) 189, (byte/word/signed word/dword/signed dword) 185, (byte/word/signed word/dword/signed dword) 182, (byte/word/signed word/dword/signed dword) 178, (byte/word/signed word/dword/signed dword) 175, (byte/word/signed word/dword/signed dword) 172, (byte/word/signed word/dword/signed dword) 169, (byte/word/signed word/dword/signed dword) 166, (byte/word/signed word/dword/signed dword) 163, (byte/word/signed word/dword/signed dword) 160, (byte/word/signed word/dword/signed dword) 157, (byte/word/signed word/dword/signed dword) 155, (byte/word/signed word/dword/signed dword) 152, (byte/word/signed word/dword/signed dword) 150, (byte/word/signed word/dword/signed dword) 148, (byte/word/signed word/dword/signed dword) 146, (byte/word/signed word/dword/signed dword) 144, (byte/word/signed word/dword/signed dword) 142, (byte/word/signed word/dword/signed dword) 140, (byte/word/signed word/dword/signed dword) 138, (byte/word/signed word/dword/signed dword) 137, (byte/word/signed word/dword/signed dword) 135, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 133, (byte/word/signed word/dword/signed dword) 132, (byte/word/signed word/dword/signed dword) 131, (byte/word/signed word/dword/signed dword) 130, (byte/word/signed word/dword/signed dword) 130, (byte/word/signed word/dword/signed dword) 129, (byte/word/signed word/dword/signed dword) 129, (byte/word/signed word/dword/signed dword) 129, (byte/word/signed word/dword/signed dword) 129, (byte/word/signed word/dword/signed dword) 129, (byte/word/signed word/dword/signed dword) 129, (byte/word/signed word/dword/signed dword) 129, (byte/word/signed word/dword/signed dword) 130, (byte/word/signed word/dword/signed dword) 130, (byte/word/signed word/dword/signed dword) 131, (byte/word/signed word/dword/signed dword) 132, (byte/word/signed word/dword/signed dword) 133, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 135, (byte/word/signed word/dword/signed dword) 137, (byte/word/signed word/dword/signed dword) 138, (byte/word/signed word/dword/signed dword) 140, (byte/word/signed word/dword/signed dword) 142, (byte/word/signed word/dword/signed dword) 144, (byte/word/signed word/dword/signed dword) 146, (byte/word/signed word/dword/signed dword) 148, (byte/word/signed word/dword/signed dword) 150, (byte/word/signed word/dword/signed dword) 152, (byte/word/signed word/dword/signed dword) 155, (byte/word/signed word/dword/signed dword) 157, (byte/word/signed word/dword/signed dword) 160, (byte/word/signed word/dword/signed dword) 163, (byte/word/signed word/dword/signed dword) 166, (byte/word/signed word/dword/signed dword) 169, (byte/word/signed word/dword/signed dword) 172, (byte/word/signed word/dword/signed dword) 175, (byte/word/signed word/dword/signed dword) 178, (byte/word/signed word/dword/signed dword) 182, (byte/word/signed word/dword/signed dword) 185, (byte/word/signed word/dword/signed dword) 189, (byte/word/signed word/dword/signed dword) 192, (byte/word/signed word/dword/signed dword) 196, (byte/word/signed word/dword/signed dword) 200, (byte/word/signed word/dword/signed dword) 203, (byte/word/signed word/dword/signed dword) 207, (byte/word/signed word/dword/signed dword) 211, (byte/word/signed word/dword/signed dword) 215, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 227, (byte/word/signed word/dword/signed dword) 231, (byte/word/signed word/dword/signed dword) 235, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 244, (byte/word/signed word/dword/signed dword) 248, (byte/word/signed word/dword/signed dword) 252 } @@ -502,9 +537,12 @@ main::@5: scope:[main] from main (byte*) print_char_cursor#43 ← phi( main/(byte*) print_char_cursor#49 ) (byte*) print_line_cursor#10 ← phi( main/(byte*) print_line_cursor#13 ) (byte*) print_screen#4 ← phi( main/(byte*) print_screen#5 ) + (word) rem16u#15 ← phi( main/(word) rem16u#6 ) + (word) rem16u#7 ← (word) rem16u#15 call print_cls to:main::@6 main::@6: scope:[main] from main::@5 + (word) rem16u#33 ← phi( main::@5/(word) rem16u#7 ) (byte*) print_char_cursor#32 ← phi( main::@5/(byte*) print_char_cursor#13 ) (byte*) print_line_cursor#7 ← phi( main::@5/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#7 @@ -513,6 +551,7 @@ main::@6: scope:[main] from main::@5 to:main::@1 main::@1: scope:[main] from main::@6 main::@8 (byte*) print_line_cursor#17 ← phi( main::@6/(byte*) print_line_cursor#3 main::@8/(byte*) print_line_cursor#11 ) + (word) rem16u#30 ← phi( main::@6/(word) rem16u#33 main::@8/(word) rem16u#22 ) (byte*) print_char_cursor#50 ← phi( main::@6/(byte*) print_char_cursor#14 main::@8/(byte*) print_char_cursor#16 ) (byte) main::i#2 ← phi( main::@6/(byte) main::i#0 main::@8/(byte) main::i#1 ) (signed byte~) main::$2 ← ((signed byte)) *((byte[]) main::sintabref#0 + (byte) main::i#2) @@ -524,6 +563,7 @@ main::@1: scope:[main] from main::@6 main::@8 to:main::@3 main::@2: scope:[main] from main::@1 main::@9 (byte*) print_line_cursor#16 ← phi( main::@1/(byte*) print_line_cursor#17 main::@9/(byte*) print_line_cursor#18 ) + (word) rem16u#28 ← phi( main::@1/(word) rem16u#30 main::@9/(word) rem16u#31 ) (byte) main::i#5 ← phi( main::@1/(byte) main::i#2 main::@9/(byte) main::i#6 ) (byte*) print_char_cursor#44 ← phi( main::@1/(byte*) print_char_cursor#50 main::@9/(byte*) print_char_cursor#17 ) (signed byte) main::sb#1 ← phi( main::@1/(signed byte) main::sb#0 main::@9/(signed byte) main::sb#2 ) @@ -532,6 +572,7 @@ main::@2: scope:[main] from main::@1 main::@9 to:main::@7 main::@7: scope:[main] from main::@2 (byte*) print_line_cursor#14 ← phi( main::@2/(byte*) print_line_cursor#16 ) + (word) rem16u#25 ← phi( main::@2/(word) rem16u#28 ) (byte) main::i#4 ← phi( main::@2/(byte) main::i#5 ) (byte*) print_char_cursor#33 ← phi( main::@2/(byte*) print_char_cursor#6 ) (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#33 @@ -540,6 +581,7 @@ main::@7: scope:[main] from main::@2 to:main::@8 main::@8: scope:[main] from main::@7 (byte*) print_line_cursor#11 ← phi( main::@7/(byte*) print_line_cursor#14 ) + (word) rem16u#22 ← phi( main::@7/(word) rem16u#25 ) (byte) main::i#3 ← phi( main::@7/(byte) main::i#4 ) (byte*) print_char_cursor#34 ← phi( main::@7/(byte*) print_char_cursor#2 ) (byte*) print_char_cursor#16 ← (byte*) print_char_cursor#34 @@ -549,6 +591,7 @@ main::@8: scope:[main] from main::@7 to:main::@return main::@3: scope:[main] from main::@1 (byte*) print_line_cursor#19 ← phi( main::@1/(byte*) print_line_cursor#17 ) + (word) rem16u#34 ← phi( main::@1/(word) rem16u#30 ) (byte) main::i#7 ← phi( main::@1/(byte) main::i#2 ) (signed byte) main::sb#3 ← phi( main::@1/(signed byte) main::sb#0 ) (byte*) print_char_cursor#45 ← phi( main::@1/(byte*) print_char_cursor#50 ) @@ -557,6 +600,7 @@ main::@3: scope:[main] from main::@1 to:main::@9 main::@9: scope:[main] from main::@3 (byte*) print_line_cursor#18 ← phi( main::@3/(byte*) print_line_cursor#19 ) + (word) rem16u#31 ← phi( main::@3/(word) rem16u#34 ) (byte) main::i#6 ← phi( main::@3/(byte) main::i#7 ) (signed byte) main::sb#2 ← phi( main::@3/(signed byte) main::sb#3 ) (byte*) print_char_cursor#35 ← phi( main::@3/(byte*) print_char_cursor#2 ) @@ -565,6 +609,8 @@ main::@9: scope:[main] from main::@3 main::@return: scope:[main] from main::@8 (byte*) print_char_cursor#36 ← phi( main::@8/(byte*) print_char_cursor#16 ) (byte*) print_line_cursor#8 ← phi( main::@8/(byte*) print_line_cursor#11 ) + (word) rem16u#16 ← phi( main::@8/(word) rem16u#22 ) + (word) rem16u#8 ← (word) rem16u#16 (byte*) print_line_cursor#4 ← (byte*) print_line_cursor#8 (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#36 return @@ -573,11 +619,14 @@ main::@return: scope:[main] from main::@8 (byte*) print_screen#6 ← phi( @32/(byte*) print_screen#7 ) (byte*) print_char_cursor#46 ← phi( @32/(byte*) print_char_cursor#51 ) (byte*) print_line_cursor#12 ← phi( @32/(byte*) print_line_cursor#15 ) + (word) rem16u#23 ← phi( @32/(word) rem16u#26 ) call main to:@41 @41: scope:[] from @40 (byte*) print_char_cursor#37 ← phi( @40/(byte*) print_char_cursor#18 ) (byte*) print_line_cursor#9 ← phi( @40/(byte*) print_line_cursor#4 ) + (word) rem16u#17 ← phi( @40/(word) rem16u#8 ) + (word) rem16u#9 ← (word) rem16u#17 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9 (byte*) print_char_cursor#19 ← (byte*) print_char_cursor#37 to:@end @@ -586,18 +635,27 @@ main::@return: scope:[main] from main::@8 SYMBOL TABLE SSA (const string) $0 = (string) "0123456789abcdef" (label) @13 +(label) @2 (label) @20 (label) @32 (label) @40 (label) @41 +(label) @5 +(label) @6 (label) @begin (label) @end (word) PI2_u4f12 (word) PI2_u4f12#0 +(dword) PI2_u4f28 +(dword) PI2_u4f28#0 (word) PI_HALF_u4f12 (word) PI_HALF_u4f12#0 +(dword) PI_HALF_u4f28 +(dword) PI_HALF_u4f28#0 (word) PI_u4f12 (word) PI_u4f12#0 +(dword) PI_u4f28 +(dword) PI_u4f28#0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (word~) div16u::$0 (label) div16u::@2 @@ -672,6 +730,7 @@ SYMBOL TABLE SSA (word) divr16u::rem (word) divr16u::rem#0 (word) divr16u::rem#1 +(word) divr16u::rem#10 (word) divr16u::rem#2 (word) divr16u::rem#3 (word) divr16u::rem#4 @@ -956,6 +1015,49 @@ SYMBOL TABLE SSA (byte*) print_str::str#3 (byte*) print_str::str#4 (byte*) print_str::str#5 +(signed word) rem16s +(signed word) rem16s#0 +(word) rem16u +(word) rem16u#0 +(word) rem16u#1 +(word) rem16u#10 +(word) rem16u#11 +(word) rem16u#12 +(word) rem16u#13 +(word) rem16u#14 +(word) rem16u#15 +(word) rem16u#16 +(word) rem16u#17 +(word) rem16u#18 +(word) rem16u#19 +(word) rem16u#2 +(word) rem16u#20 +(word) rem16u#21 +(word) rem16u#22 +(word) rem16u#23 +(word) rem16u#24 +(word) rem16u#25 +(word) rem16u#26 +(word) rem16u#27 +(word) rem16u#28 +(word) rem16u#29 +(word) rem16u#3 +(word) rem16u#30 +(word) rem16u#31 +(word) rem16u#32 +(word) rem16u#33 +(word) rem16u#34 +(word) rem16u#35 +(word) rem16u#4 +(word) rem16u#5 +(word) rem16u#6 +(word) rem16u#7 +(word) rem16u#8 +(word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (signed byte()) sin8s((word) sin8s::x) (bool~) sin8s::$0 (bool~) sin8s::$1 @@ -1114,9 +1216,13 @@ Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 Alias (word) divr16u::rem#2 = (word~) divr16u::$10 +Alias (word) divr16u::rem#10 = (word) divr16u::rem#8 Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 +Alias (word) rem16u#1 = (word) rem16u#10 (word) rem16u#2 Alias (word) divr16u::return#2 = (word) divr16u::return#4 +Alias (word) rem16u#11 = (word) rem16u#3 (word) rem16u#12 (word) rem16u#4 Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 +Alias (word) rem16u#0 = (word) rem16u#35 (word) rem16u#32 (word) rem16u#29 (word) rem16u#27 (word) rem16u#26 (word) rem16u#23 Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 @@ -1126,6 +1232,7 @@ Alias (word) mul8u::res#1 = (word~) mul8u::$4 Alias (word) div16u::return#2 = (word) div16u::return#4 Alias (signed byte*) sin8s_gen::sintab#4 = (signed byte*) sin8s_gen::sintab#5 Alias (word) sin8s_gen::wavelength#1 = (word) sin8s_gen::wavelength#4 +Alias (word) rem16u#13 = (word) rem16u#5 Alias (word) sin8s_gen::step#0 = (word~) sin8s_gen::$0 Alias (signed byte) sin8s::return#0 = (signed byte) sin8s::return#3 Alias (signed byte*) sin8s_gen::sintab#2 = (signed byte*) sin8s_gen::sintab#3 @@ -1133,6 +1240,7 @@ Alias (word) sin8s_gen::x#2 = (word) sin8s_gen::x#3 Alias (word) sin8s_gen::step#1 = (word) sin8s_gen::step#2 Alias (word) sin8s_gen::i#2 = (word) sin8s_gen::i#3 Alias (word) sin8s_gen::wavelength#2 = (word) sin8s_gen::wavelength#3 +Alias (word) rem16u#14 = (word) rem16u#20 (word) rem16u#24 (word) rem16u#6 Alias (word) sin8s_gen::x#1 = (word~) sin8s_gen::$2 Alias (word) sin8s::x#3 = (word) sin8s::x#5 Alias (word) sin8s::x#1 = (word~) sin8s::$2 @@ -1179,17 +1287,21 @@ Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen# Alias (byte*) print_screen#4 = (byte*) print_screen#5 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#49 +Alias (word) rem16u#15 = (word) rem16u#7 (word) rem16u#33 Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#32 Alias (signed byte) main::sb#0 = (signed byte~) main::$3 (signed byte) main::sb#3 (signed byte) main::sb#2 Alias (byte) main::i#3 = (byte) main::i#4 (byte) main::i#5 +Alias (word) rem16u#16 = (word) rem16u#25 (word) rem16u#28 (word) rem16u#22 (word) rem16u#8 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#16 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4 Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#33 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#36 (byte*) print_char_cursor#18 Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#50 Alias (byte) main::i#2 = (byte) main::i#7 (byte) main::i#6 +Alias (word) rem16u#30 = (word) rem16u#34 (word) rem16u#31 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#19 (byte*) print_line_cursor#18 Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#35 +Alias (word) rem16u#17 = (word) rem16u#9 Alias (byte*) print_line_cursor#5 = (byte*) print_line_cursor#9 Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#37 Successful SSA optimization Pass2AliasElimination @@ -1203,26 +1315,34 @@ Alias (word) mul8u::mb#2 = (word) mul8u::mb#3 Alias (byte) sin8s::isUpper#10 = (byte) sin8s::isUpper#3 (byte) sin8s::isUpper#2 Alias (signed byte) main::sb#0 = (signed byte) main::sb#1 Alias (byte) main::i#2 = (byte) main::i#3 +Alias (word) rem16u#16 = (word) rem16u#30 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#17 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (word) divr16u::divisor#1 Self Phi Eliminated (word) sin8s_gen::step#1 Self Phi Eliminated (word) sin8s_gen::wavelength#2 +Self Phi Eliminated (word) rem16u#14 Self Phi Eliminated (byte*) print_line_cursor#1 +Self Phi Eliminated (word) rem16u#16 Self Phi Eliminated (byte*) print_line_cursor#11 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (word) divr16u::rem#8 (word) divr16u::rem#3 +Redundant Phi (word) divr16u::rem#9 (word) divr16u::rem#3 Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1 Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0 Redundant Phi (word) divr16u::divisor#1 (word) divr16u::divisor#5 Redundant Phi (word) div16u::dividend#1 (word) div16u::dividend#0 Redundant Phi (word) div16u::divisor#1 (word) div16u::divisor#0 +Redundant Phi (word) rem16u#18 (word) rem16u#19 +Redundant Phi (word) rem16u#11 (word) rem16u#1 Redundant Phi (byte) mul8u::b#1 (byte) mul8u::b#0 Redundant Phi (byte) mul8u::a#5 (byte) mul8u::a#1 Redundant Phi (word) sin8s_gen::wavelength#1 (word) sin8s_gen::wavelength#0 +Redundant Phi (word) rem16u#19 (word) rem16u#21 Redundant Phi (signed byte*) sin8s_gen::sintab#4 (signed byte*) sin8s_gen::sintab#1 +Redundant Phi (word) rem16u#13 (word) rem16u#11 Redundant Phi (word) sin8s_gen::step#1 (word) sin8s_gen::step#0 Redundant Phi (word) sin8s_gen::wavelength#2 (word) sin8s_gen::wavelength#1 +Redundant Phi (word) rem16u#14 (word) rem16u#13 Redundant Phi (word) sin8s::x#3 (word) sin8s::x#0 Redundant Phi (signed byte) print_sbyte::b#2 (signed byte) print_sbyte::b#1 Redundant Phi (byte*) print_char_cursor#39 (byte*) print_char_cursor#44 @@ -1235,15 +1355,19 @@ Redundant Phi (byte*) print_char_cursor#26 (byte*) print_char_cursor#10 Redundant Phi (byte*) print_char_cursor#27 (byte*) print_char_cursor#10 Redundant Phi (byte*) print_screen#1 (byte*) print_screen#4 Redundant Phi (byte*) print_line_cursor#1 (byte*) print_screen#1 +Redundant Phi (word) rem16u#21 (word) rem16u#0 Redundant Phi (byte*) print_screen#4 (byte*) print_line_cursor#0 Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#0 Redundant Phi (byte*) print_char_cursor#43 (byte*) print_line_cursor#0 +Redundant Phi (word) rem16u#15 (word) rem16u#14 Redundant Phi (byte*) print_line_cursor#3 (byte*) print_line_cursor#1 Redundant Phi (byte*) print_char_cursor#14 (byte*) print_line_cursor#1 +Redundant Phi (word) rem16u#16 (word) rem16u#15 Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#3 Redundant Phi (byte*) print_char_cursor#15 (byte*) print_char_cursor#24 Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#2 Redundant Phi (byte*) print_char_cursor#17 (byte*) print_char_cursor#2 +Redundant Phi (word) rem16u#17 (word) rem16u#16 Redundant Phi (byte*) print_line_cursor#5 (byte*) print_line_cursor#11 Redundant Phi (byte*) print_char_cursor#19 (byte*) print_char_cursor#16 Successful SSA optimization Pass2RedundantPhiElimination @@ -1265,10 +1389,17 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$5 if((signed byte) main::sb#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 Simple Condition (bool~) main::$9 if((byte) main::i#1!=rangelast(0,191)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) rem8u#0 = 0 +Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const word) mul8u::res#0 = 0 +Constant (const dword) PI2_u4f28#0 = 1686629713 +Constant (const dword) PI_u4f28#0 = 843314857 +Constant (const dword) PI_HALF_u4f28#0 = 421657428 Constant (const word) PI2_u4f12#0 = 25736 Constant (const word) PI_u4f12#0 = 12868 Constant (const word) PI_HALF_u4f12#0 = 6434 @@ -1305,6 +1436,7 @@ Constant (const word) div16u::divisor#0 = sin8s_gen::wavelength#0 Successful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::divisor#0 = div16u::divisor#0 Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (signed byte) sin8s::sinx#0 ← ((signed byte)) (byte) sin8s::usinx#4 Eliminating Noop Cast (signed byte~) sin8s::$21 ← ((signed byte)) (byte) sin8s::usinx#4 Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sbyte::b#4 @@ -1314,7 +1446,9 @@ Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16 Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ Resolved ranged comparison value if(main::i#1!=rangelast(0,191)) goto main::@1 to (byte/word/signed word/dword/signed dword) 192 -Culled Empty Block (label) divr16u::@6 +Culled Empty Block (label) @2 +Culled Empty Block (label) @5 +Culled Empty Block (label) @6 Culled Empty Block (label) mul8u::@3 Culled Empty Block (label) @13 Culled Empty Block (label) @20 @@ -1456,16 +1590,16 @@ Coalesced [168] mul8u::a#8 ← mul8u::a#0 Coalesced [169] mul8u::res#7 ← mul8u::res#6 Coalesced [170] mul8u::mb#7 ← mul8u::mb#1 Coalesced (already) [171] mul8u::res#8 ← mul8u::res#2 -Coalesced [184] divr16u::rem#12 ← divr16u::rem#1 -Coalesced [191] divr16u::rem#14 ← divr16u::rem#2 +Coalesced [184] divr16u::rem#13 ← divr16u::rem#1 +Coalesced [191] divr16u::rem#15 ← divr16u::rem#2 Coalesced [192] divr16u::return#6 ← divr16u::quotient#2 -Coalesced [197] divr16u::rem#10 ← divr16u::rem#9 -Coalesced [198] divr16u::dividend#8 ← divr16u::dividend#0 -Coalesced [199] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [200] divr16u::i#7 ← divr16u::i#1 -Coalesced [201] divr16u::rem#13 ← divr16u::rem#5 -Coalesced [202] divr16u::return#5 ← divr16u::quotient#1 -Coalesced [203] divr16u::rem#11 ← divr16u::rem#0 +Coalesced [198] divr16u::rem#11 ← divr16u::rem#10 +Coalesced [199] divr16u::dividend#8 ← divr16u::dividend#0 +Coalesced [200] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [201] divr16u::i#7 ← divr16u::i#1 +Coalesced [202] divr16u::rem#14 ← divr16u::rem#5 +Coalesced [203] divr16u::return#5 ← divr16u::quotient#1 +Coalesced [204] divr16u::rem#12 ← divr16u::rem#0 Coalesced down to 23 phi equivalence classes Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@11 @@ -1770,7 +1904,7 @@ divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 [137] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [137] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [137] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [137] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#9 ) + [137] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) [138] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [139] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 @@ -1791,19 +1925,25 @@ divr16u::@5: scope:[divr16u] from divr16u::@2 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 [149] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [149] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [149] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [151] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + to:divr16u::@6 +divr16u::@6: scope:[divr16u] from divr16u::@3 + [152] (word) rem16u#1 ← (word) divr16u::rem#10 to:divr16u::@return -divr16u::@return: scope:[divr16u] from divr16u::@3 - [152] return +divr16u::@return: scope:[divr16u] from divr16u::@6 + [153] return to:@return VARIABLE REGISTER WEIGHTS (word) PI2_u4f12 +(dword) PI2_u4f28 (word) PI_HALF_u4f12 +(dword) PI_HALF_u4f28 (word) PI_u4f12 +(dword) PI_u4f28 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (word) div16u::dividend (word) div16u::divisor @@ -1827,12 +1967,12 @@ VARIABLE REGISTER WEIGHTS (word) divr16u::rem (word) divr16u::rem#0 8.25 (word) divr16u::rem#1 22.0 +(word) divr16u::rem#10 11.666666666666666 (word) divr16u::rem#2 22.0 (word) divr16u::rem#4 22.0 (word) divr16u::rem#5 11.0 -(word) divr16u::rem#9 11.0 (word) divr16u::return -(word) divr16u::return#0 7.000000000000001 +(word) divr16u::return#0 5.833333333333333 (word) divr16u::return#2 4.0 (void()) main() (byte) main::i @@ -1920,6 +2060,11 @@ VARIABLE REGISTER WEIGHTS (byte*) print_str::str#0 202.0 (byte*) print_str::str#3 101.5 (byte*) print_str::str#5 2.0 +(signed word) rem16s +(word) rem16u +(word) rem16u#1 20.0 +(signed byte) rem8s +(byte) rem8u (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$6 4.0 (byte) sin8s::DIV_6 @@ -1991,7 +2136,7 @@ Initial phi equivalence classes [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -[ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] [ divr16u::dividend#2 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] @@ -2026,6 +2171,7 @@ Added variable divr16u::return#2 to zero page equivalence class [ divr16u::retur Added variable div16u::return#0 to zero page equivalence class [ div16u::return#0 ] Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ] Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ] +Added variable rem16u#1 to zero page equivalence class [ rem16u#1 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ print_str::str#3 print_str::str#5 print_str::str#0 ] @@ -2046,7 +2192,7 @@ Complete equivalence classes [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -[ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] [ divr16u::dividend#2 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] @@ -2081,6 +2227,7 @@ Complete equivalence classes [ div16u::return#0 ] [ divr16u::$1 ] [ divr16u::$2 ] +[ rem16u#1 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] Allocated zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] @@ -2100,7 +2247,7 @@ Allocated zp ZP_BYTE:24 [ mulu8_sel::select#5 ] Allocated zp ZP_BYTE:25 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] Allocated zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] Allocated zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] -Allocated zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] Allocated zp ZP_WORD:32 [ divr16u::dividend#2 divr16u::dividend#0 ] Allocated zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] Allocated zp ZP_BYTE:36 [ divr16u::i#2 divr16u::i#1 ] @@ -2135,6 +2282,7 @@ Allocated zp ZP_WORD:70 [ divr16u::return#2 ] Allocated zp ZP_WORD:72 [ div16u::return#0 ] Allocated zp ZP_BYTE:74 [ divr16u::$1 ] Allocated zp ZP_BYTE:75 [ divr16u::$2 ] +Allocated zp ZP_WORD:76 [ rem16u#1 ] INITIAL ASM //SEG0 Basic Upstart @@ -2146,6 +2294,7 @@ INITIAL ASM .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 + .label rem16u = $4c .label print_char_cursor = 7 //SEG2 @begin bbegin: @@ -3045,7 +3194,7 @@ divr16u: { //SEG277 [137] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy //SEG278 [137] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy //SEG279 [137] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG280 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG280 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 //SEG281 divr16u::@1 b1: @@ -3112,7 +3261,7 @@ divr16u: { b3_from_b2: b3_from_b5: //SEG298 [149] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG299 [149] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG299 [149] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 //SEG300 divr16u::@3 b3: @@ -3122,10 +3271,18 @@ divr16u: { lda i cmp #$10 bne b1_from_b3 + jmp b6 + //SEG303 divr16u::@6 + b6: + //SEG304 [152] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 + lda rem + sta rem16u + lda rem+1 + sta rem16u+1 jmp breturn - //SEG303 divr16u::@return + //SEG305 divr16u::@return breturn: - //SEG304 [152] return + //SEG306 [153] return rts } print_hextab: .text "0123456789abcdef" @@ -3183,6 +3340,7 @@ Statement [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a Statement [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [152] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::return#0 ] ) always clobbers reg byte a Statement [9] (signed byte) main::sb#0 ← *((const signed byte[192]) main::sintab2#0 + (byte) main::i#2) - (signed byte)*((const byte[]) main::sintabref#0 + (byte) main::i#2) [ main::i#2 print_char_cursor#45 main::sb#0 ] ( main:2 [ main::i#2 print_char_cursor#45 main::sb#0 ] ) always clobbers reg byte a Statement [23] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y Statement [25] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:12 [ main::i#2 main::sb#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:17 [ main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y @@ -3222,6 +3380,7 @@ Statement [140] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed Statement [142] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a Statement [146] if((word) divr16u::rem#5<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a Statement [148] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [152] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8s_gen:5::div16u:55::divr16u:132 [ divr16u::return#0 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:3 , Potential registers zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] : zp ZP_BYTE:5 , reg byte x , @@ -3241,7 +3400,7 @@ Potential registers zp ZP_BYTE:24 [ mulu8_sel::select#5 ] : zp ZP_BYTE:24 , reg Potential registers zp ZP_BYTE:25 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , Potential registers zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] : zp ZP_WORD:26 , Potential registers zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] : zp ZP_WORD:28 , -Potential registers zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:30 , +Potential registers zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:30 , Potential registers zp ZP_WORD:32 [ divr16u::dividend#2 divr16u::dividend#0 ] : zp ZP_WORD:32 , Potential registers zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:34 , Potential registers zp ZP_BYTE:36 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , @@ -3276,12 +3435,13 @@ Potential registers zp ZP_WORD:70 [ divr16u::return#2 ] : zp ZP_WORD:70 , Potential registers zp ZP_WORD:72 [ div16u::return#0 ] : zp ZP_WORD:72 , Potential registers zp ZP_BYTE:74 [ divr16u::$1 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:75 [ divr16u::$2 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:76 [ rem16u#1 ] : zp ZP_WORD:76 , REGISTER UPLIFT SCOPES Uplift Scope [mul8u] 353.83: zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp ZP_BYTE:69 [ mul8u::$1 ] 170: zp ZP_BYTE:25 [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] 4: zp ZP_BYTE:61 [ mul8u::b#0 ] 4: zp ZP_WORD:62 [ mul8u::return#2 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplift Scope [divr16u] 96.25: zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 37.25: zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:74 [ divr16u::$1 ] 22: zp ZP_BYTE:75 [ divr16u::$2 ] 18.19: zp ZP_BYTE:36 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:32 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:70 [ divr16u::return#2 ] -Uplift Scope [] 186.32: zp ZP_WORD:7 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 ] +Uplift Scope [divr16u] 96.92: zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 36.08: zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:74 [ divr16u::$1 ] 22: zp ZP_BYTE:75 [ divr16u::$2 ] 18.19: zp ZP_BYTE:36 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:32 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:70 [ divr16u::return#2 ] +Uplift Scope [] 186.32: zp ZP_WORD:7 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 ] 20: zp ZP_WORD:76 [ rem16u#1 ] Uplift Scope [sin8s] 27.5: zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] 22: zp ZP_BYTE:44 [ sin8s::return#0 ] 13: zp ZP_BYTE:21 [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] 10: zp ZP_BYTE:20 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp ZP_WORD:46 [ sin8s::$6 ] 4: zp ZP_BYTE:50 [ sin8s::x2#0 ] 4: zp ZP_BYTE:54 [ sin8s::x3_6#0 ] 4: zp ZP_BYTE:57 [ sin8s::x4#0 ] 4: zp ZP_BYTE:59 [ sin8s::x5#0 ] 4: zp ZP_BYTE:60 [ sin8s::x5_128#0 ] 1: zp ZP_BYTE:52 [ sin8s::x3#0 ] 0.64: zp ZP_BYTE:48 [ sin8s::x1#0 ] 0.33: zp ZP_BYTE:55 [ sin8s::usinx#0 ] 0.06: zp ZP_BYTE:17 [ sin8s::isUpper#10 ] Uplift Scope [mulu8_sel] 24: zp ZP_BYTE:22 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 21: zp ZP_BYTE:23 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp ZP_BYTE:49 [ mulu8_sel::return#0 ] 4: zp ZP_BYTE:51 [ mulu8_sel::return#1 ] 4: zp ZP_BYTE:53 [ mulu8_sel::return#2 ] 4: zp ZP_BYTE:56 [ mulu8_sel::return#10 ] 4: zp ZP_BYTE:58 [ mulu8_sel::return#11 ] 4: zp ZP_WORD:64 [ mulu8_sel::$0 ] 4: zp ZP_WORD:66 [ mulu8_sel::$1 ] 1.71: zp ZP_BYTE:68 [ mulu8_sel::return#12 ] 0.33: zp ZP_BYTE:24 [ mulu8_sel::select#5 ] Uplift Scope [sin8s_gen] 22: zp ZP_BYTE:45 [ sin8s_gen::$1 ] 19.25: zp ZP_WORD:15 [ sin8s_gen::i#2 sin8s_gen::i#1 ] 12.05: zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] 11: zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] 1.18: zp ZP_WORD:42 [ sin8s_gen::step#0 ] @@ -3292,56 +3452,57 @@ Uplift Scope [print_byte] 4: zp ZP_BYTE:38 [ print_byte::$0 ] 4: zp ZP_BYTE:39 [ Uplift Scope [print_sbyte] 7.83: zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Uplift Scope [div16u] 4: zp ZP_WORD:40 [ div16u::return#2 ] 1.33: zp ZP_WORD:72 [ div16u::return#0 ] -Uplifting [mul8u] best 19014 combination zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:62 [ mul8u::return#2 ] -Uplifting [print_str] best 19014 combination zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [divr16u] best 18804 combination zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:32 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:70 [ divr16u::return#2 ] -Uplifting [] best 18804 combination zp ZP_WORD:7 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 ] -Uplifting [sin8s] best 18699 combination zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:46 [ sin8s::$6 ] zp ZP_BYTE:50 [ sin8s::x2#0 ] zp ZP_BYTE:54 [ sin8s::x3_6#0 ] zp ZP_BYTE:57 [ sin8s::x4#0 ] zp ZP_BYTE:59 [ sin8s::x5#0 ] zp ZP_BYTE:60 [ sin8s::x5_128#0 ] zp ZP_BYTE:52 [ sin8s::x3#0 ] zp ZP_BYTE:48 [ sin8s::x1#0 ] zp ZP_BYTE:55 [ sin8s::usinx#0 ] zp ZP_BYTE:17 [ sin8s::isUpper#10 ] +Uplifting [mul8u] best 19029 combination zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:28 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#2 mul8u::a#1 mul8u::a#0 ] reg byte a [ mul8u::b#0 ] zp ZP_WORD:62 [ mul8u::return#2 ] +Uplifting [print_str] best 19029 combination zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [divr16u] best 18819 combination zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:32 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:70 [ divr16u::return#2 ] +Uplifting [] best 18819 combination zp ZP_WORD:7 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 ] zp ZP_WORD:76 [ rem16u#1 ] +Uplifting [sin8s] best 18714 combination zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] reg byte a [ sin8s::return#0 ] reg byte a [ sin8s::return#1 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:46 [ sin8s::$6 ] zp ZP_BYTE:50 [ sin8s::x2#0 ] zp ZP_BYTE:54 [ sin8s::x3_6#0 ] zp ZP_BYTE:57 [ sin8s::x4#0 ] zp ZP_BYTE:59 [ sin8s::x5#0 ] zp ZP_BYTE:60 [ sin8s::x5_128#0 ] zp ZP_BYTE:52 [ sin8s::x3#0 ] zp ZP_BYTE:48 [ sin8s::x1#0 ] zp ZP_BYTE:55 [ sin8s::usinx#0 ] zp ZP_BYTE:17 [ sin8s::isUpper#10 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [mulu8_sel] best 18653 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:53 [ mulu8_sel::return#2 ] zp ZP_BYTE:56 [ mulu8_sel::return#10 ] zp ZP_BYTE:58 [ mulu8_sel::return#11 ] zp ZP_WORD:64 [ mulu8_sel::$0 ] zp ZP_WORD:66 [ mulu8_sel::$1 ] zp ZP_BYTE:68 [ mulu8_sel::return#12 ] zp ZP_BYTE:24 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 18668 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:53 [ mulu8_sel::return#2 ] zp ZP_BYTE:56 [ mulu8_sel::return#10 ] zp ZP_BYTE:58 [ mulu8_sel::return#11 ] zp ZP_WORD:64 [ mulu8_sel::$0 ] zp ZP_WORD:66 [ mulu8_sel::$1 ] zp ZP_BYTE:68 [ mulu8_sel::return#12 ] zp ZP_BYTE:24 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [sin8s_gen] best 18593 combination reg byte a [ sin8s_gen::$1 ] zp ZP_WORD:15 [ sin8s_gen::i#2 sin8s_gen::i#1 ] zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp ZP_WORD:42 [ sin8s_gen::step#0 ] -Uplifting [print_cls] best 18593 combination zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [main] best 18473 combination reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:37 [ main::sb#0 ] -Uplifting [print_char] best 18458 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [print_byte] best 18450 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_sbyte] best 18450 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [div16u] best 18450 combination zp ZP_WORD:40 [ div16u::return#2 ] zp ZP_WORD:72 [ div16u::return#0 ] +Uplifting [sin8s_gen] best 18608 combination reg byte a [ sin8s_gen::$1 ] zp ZP_WORD:15 [ sin8s_gen::i#2 sin8s_gen::i#1 ] zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp ZP_WORD:42 [ sin8s_gen::step#0 ] +Uplifting [print_cls] best 18608 combination zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [main] best 18488 combination reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:37 [ main::sb#0 ] +Uplifting [print_char] best 18473 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [print_byte] best 18465 combination reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_sbyte] best 18465 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [div16u] best 18465 combination zp ZP_WORD:40 [ div16u::return#2 ] zp ZP_WORD:72 [ div16u::return#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 18450 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [print_sbyte] best 18465 combination zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ main::sb#0 ] -Uplifting [main] best 18450 combination zp ZP_BYTE:37 [ main::sb#0 ] +Uplifting [main] best 18465 combination zp ZP_BYTE:37 [ main::sb#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:50 [ sin8s::x2#0 ] -Uplifting [sin8s] best 18446 combination reg byte a [ sin8s::x2#0 ] +Uplifting [sin8s] best 18461 combination reg byte a [ sin8s::x2#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:53 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 18440 combination reg byte a [ mulu8_sel::return#2 ] +Uplifting [mulu8_sel] best 18455 combination reg byte a [ mulu8_sel::return#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:54 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 18436 combination reg byte a [ sin8s::x3_6#0 ] +Uplifting [sin8s] best 18451 combination reg byte a [ sin8s::x3_6#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:56 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 18430 combination reg byte a [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 18445 combination reg byte a [ mulu8_sel::return#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:57 [ sin8s::x4#0 ] -Uplifting [sin8s] best 18426 combination reg byte a [ sin8s::x4#0 ] +Uplifting [sin8s] best 18441 combination reg byte a [ sin8s::x4#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:58 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 18420 combination reg byte a [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 18435 combination reg byte a [ mulu8_sel::return#11 ] Attempting to uplift remaining variables inzp ZP_BYTE:59 [ sin8s::x5#0 ] -Uplifting [sin8s] best 18414 combination reg byte a [ sin8s::x5#0 ] +Uplifting [sin8s] best 18429 combination reg byte a [ sin8s::x5#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:60 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 18408 combination reg byte a [ sin8s::x5_128#0 ] +Uplifting [sin8s] best 18423 combination reg byte a [ sin8s::x5_128#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:68 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 18390 combination reg byte a [ mulu8_sel::return#12 ] +Uplifting [mulu8_sel] best 18405 combination reg byte a [ mulu8_sel::return#12 ] Attempting to uplift remaining variables inzp ZP_BYTE:52 [ sin8s::x3#0 ] -Uplifting [sin8s] best 18390 combination zp ZP_BYTE:52 [ sin8s::x3#0 ] +Uplifting [sin8s] best 18405 combination zp ZP_BYTE:52 [ sin8s::x3#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:48 [ sin8s::x1#0 ] -Uplifting [sin8s] best 18390 combination zp ZP_BYTE:48 [ sin8s::x1#0 ] +Uplifting [sin8s] best 18405 combination zp ZP_BYTE:48 [ sin8s::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 18390 combination zp ZP_BYTE:24 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 18405 combination zp ZP_BYTE:24 [ mulu8_sel::select#5 ] Attempting to uplift remaining variables inzp ZP_BYTE:55 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 18390 combination zp ZP_BYTE:55 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 18405 combination zp ZP_BYTE:55 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 18390 combination zp ZP_BYTE:17 [ sin8s::isUpper#10 ] +Uplifting [sin8s] best 18405 combination zp ZP_BYTE:17 [ sin8s::isUpper#10 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] with [ zp ZP_BYTE:37 [ main::sb#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 ] ] with [ zp ZP_WORD:46 [ sin8s::$6 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:62 [ mul8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:76 [ rem16u#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:70 [ divr16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ div16u::return#2 ] ] with [ zp ZP_WORD:42 [ sin8s_gen::step#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:40 [ div16u::return#2 sin8s_gen::step#0 ] ] with [ zp ZP_WORD:72 [ div16u::return#0 ] ] - score: 1 @@ -3350,12 +3511,12 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mul8u::re Coalescing zero page register with common assignment [ zp ZP_WORD:34 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:40 [ div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 ] ] with [ zp ZP_WORD:9 [ print_cls::sc#2 print_cls::sc#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:11 [ sin8s_gen::x#2 sin8s_gen::x#1 ] ] -Coalescing zero page register [ zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 ] ] with [ zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 ] ] with [ zp ZP_WORD:30 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 main::sb#0 ] ] with [ zp ZP_BYTE:17 [ sin8s::isUpper#10 ] ] Coalescing zero page register [ zp ZP_WORD:7 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 ] ] with [ zp ZP_WORD:13 [ sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ] Coalescing zero page register [ zp ZP_WORD:7 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] ] with [ zp ZP_WORD:32 [ divr16u::dividend#2 divr16u::dividend#0 ] ] Coalescing zero page register [ zp ZP_WORD:18 [ sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$6 ] ] with [ zp ZP_WORD:26 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 ] ] -Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 main::sb#0 sin8s::isUpper#10 ] Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#2 divr16u::dividend#0 ] Allocated (was zp ZP_WORD:15) zp ZP_WORD:7 [ sin8s_gen::i#2 sin8s_gen::i#1 ] @@ -3377,6 +3538,7 @@ ASSEMBLER BEFORE OPTIMIZATION .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 + .label rem16u = 2 .label print_char_cursor = 5 //SEG2 @begin bbegin: @@ -4171,7 +4333,7 @@ divr16u: { //SEG277 [137] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy //SEG278 [137] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy //SEG279 [137] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG280 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG280 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 //SEG281 divr16u::@1 b1: @@ -4234,7 +4396,7 @@ divr16u: { b3_from_b2: b3_from_b5: //SEG298 [149] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG299 [149] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG299 [149] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 //SEG300 divr16u::@3 b3: @@ -4243,10 +4405,15 @@ divr16u: { //SEG302 [151] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 + jmp b6 + //SEG303 divr16u::@6 + b6: + //SEG304 [152] (word) rem16u#1 ← (word) divr16u::rem#10 + // (word) rem16u#1 = (word) divr16u::rem#10 // register copy zp ZP_WORD:2 jmp breturn - //SEG303 divr16u::@return + //SEG305 divr16u::@return breturn: - //SEG304 [152] return + //SEG306 [153] return rts } print_hextab: .text "0123456789abcdef" @@ -4304,6 +4471,7 @@ Removing instruction jmp b4 Removing instruction jmp b2 Removing instruction jmp b5 Removing instruction jmp b3 +Removing instruction jmp b6 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda sb @@ -4427,6 +4595,7 @@ Removing instruction breturn: Removing instruction b1_from_divr16u: Removing instruction b4: Removing instruction b5: +Removing instruction b6: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination Relabelling long label b1_from_sin8s to b5 @@ -4445,10 +4614,13 @@ FINAL SYMBOL TABLE (label) @end (word) PI2_u4f12 (const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(dword) PI2_u4f28 (word) PI_HALF_u4f12 (const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 +(dword) PI_HALF_u4f28 (word) PI_u4f12 (const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868 +(dword) PI_u4f28 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@2 (label) div16u::@return @@ -4465,6 +4637,7 @@ FINAL SYMBOL TABLE (label) divr16u::@3 (label) divr16u::@4 (label) divr16u::@5 +(label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend (word) divr16u::dividend#0 dividend zp ZP_WORD:5 2.75 @@ -4480,12 +4653,12 @@ FINAL SYMBOL TABLE (word) divr16u::rem (word) divr16u::rem#0 rem zp ZP_WORD:2 8.25 (word) divr16u::rem#1 rem zp ZP_WORD:2 22.0 +(word) divr16u::rem#10 rem zp ZP_WORD:2 11.666666666666666 (word) divr16u::rem#2 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#4 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#5 rem zp ZP_WORD:2 11.0 -(word) divr16u::rem#9 rem zp ZP_WORD:2 11.0 (word) divr16u::return -(word) divr16u::return#0 return zp ZP_WORD:14 7.000000000000001 +(word) divr16u::return#0 return zp ZP_WORD:14 5.833333333333333 (word) divr16u::return#2 return zp ZP_WORD:14 4.0 (void()) main() (label) main::@1 @@ -4607,6 +4780,11 @@ FINAL SYMBOL TABLE (byte*) print_str::str#0 str zp ZP_WORD:2 202.0 (byte*) print_str::str#3 str zp ZP_WORD:2 101.5 (byte*) print_str::str#5 str zp ZP_WORD:2 2.0 +(signed word) rem16s +(word) rem16u +(word) rem16u#1 rem16u zp ZP_WORD:2 20.0 +(signed byte) rem8s +(byte) rem8u (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$6 $6 zp ZP_WORD:9 4.0 (label) sin8s::@1 @@ -4679,7 +4857,7 @@ FINAL SYMBOL TABLE (word) sin8s_gen::x#2 x zp ZP_WORD:2 4.714285714285714 reg byte x [ main::i#2 main::i#1 ] -zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] zp ZP_BYTE:4 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 main::sb#0 sin8s::isUpper#10 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] zp ZP_WORD:5 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#2 divr16u::dividend#0 ] @@ -4730,6 +4908,7 @@ Score: 15007 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 .label print_line_cursor = $400 + .label rem16u = 2 .label print_char_cursor = 5 //SEG2 @begin //SEG3 [1] phi from @begin to @40 [phi:@begin->@40] @@ -5382,7 +5561,7 @@ divr16u: { //SEG277 [137] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy //SEG278 [137] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy //SEG279 [137] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG280 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG280 [137] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy //SEG281 divr16u::@1 b1: //SEG282 [138] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 @@ -5435,7 +5614,7 @@ divr16u: { sta rem+1 //SEG297 [149] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] //SEG298 [149] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG299 [149] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG299 [149] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy //SEG300 divr16u::@3 b3: //SEG301 [150] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx @@ -5443,8 +5622,11 @@ divr16u: { //SEG302 [151] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG303 divr16u::@return - //SEG304 [152] return + //SEG303 divr16u::@6 + //SEG304 [152] (word) rem16u#1 ← (word) divr16u::rem#10 + // (word) rem16u#1 = (word) divr16u::rem#10 // register copy zp ZP_WORD:2 + //SEG305 divr16u::@return + //SEG306 [153] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgen8.sym b/src/test/ref/sinusgen8.sym index 5394252f9..84e955bd0 100644 --- a/src/test/ref/sinusgen8.sym +++ b/src/test/ref/sinusgen8.sym @@ -3,10 +3,13 @@ (label) @end (word) PI2_u4f12 (const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(dword) PI2_u4f28 (word) PI_HALF_u4f12 (const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 +(dword) PI_HALF_u4f28 (word) PI_u4f12 (const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868 +(dword) PI_u4f28 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@2 (label) div16u::@return @@ -23,6 +26,7 @@ (label) divr16u::@3 (label) divr16u::@4 (label) divr16u::@5 +(label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend (word) divr16u::dividend#0 dividend zp ZP_WORD:5 2.75 @@ -38,12 +42,12 @@ (word) divr16u::rem (word) divr16u::rem#0 rem zp ZP_WORD:2 8.25 (word) divr16u::rem#1 rem zp ZP_WORD:2 22.0 +(word) divr16u::rem#10 rem zp ZP_WORD:2 11.666666666666666 (word) divr16u::rem#2 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#4 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#5 rem zp ZP_WORD:2 11.0 -(word) divr16u::rem#9 rem zp ZP_WORD:2 11.0 (word) divr16u::return -(word) divr16u::return#0 return zp ZP_WORD:14 7.000000000000001 +(word) divr16u::return#0 return zp ZP_WORD:14 5.833333333333333 (word) divr16u::return#2 return zp ZP_WORD:14 4.0 (void()) main() (label) main::@1 @@ -165,6 +169,11 @@ (byte*) print_str::str#0 str zp ZP_WORD:2 202.0 (byte*) print_str::str#3 str zp ZP_WORD:2 101.5 (byte*) print_str::str#5 str zp ZP_WORD:2 2.0 +(signed word) rem16s +(word) rem16u +(word) rem16u#1 rem16u zp ZP_WORD:2 20.0 +(signed byte) rem8s +(byte) rem8u (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$6 $6 zp ZP_WORD:9 4.0 (label) sin8s::@1 @@ -237,7 +246,7 @@ (word) sin8s_gen::x#2 x zp ZP_WORD:2 4.714285714285714 reg byte x [ main::i#2 main::i#1 ] -zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin8s_gen::x#2 sin8s_gen::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] zp ZP_BYTE:4 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 main::sb#0 sin8s::isUpper#10 ] reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] zp ZP_WORD:5 [ print_char_cursor#29 print_char_cursor#47 print_char_cursor#44 print_char_cursor#45 print_char_cursor#2 print_char_cursor#10 print_char_cursor#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 divr16u::dividend#2 divr16u::dividend#0 ] diff --git a/src/test/ref/sinusgen8b.log b/src/test/ref/sinusgen8b.log index b10b2da7a..7d0360c97 100644 --- a/src/test/ref/sinusgen8b.log +++ b/src/test/ref/sinusgen8b.log @@ -1,10 +1,11 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@2 @2: scope:[] from @begin (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - to:@13 + to:@5 divr16u: scope:[divr16u] from div16u div32u16u div32u16u::@2 (word) divr16u::divisor#7 ← phi( div16u/(word) divr16u::divisor#0 div32u16u/(word) divr16u::divisor#1 div32u16u::@2/(word) divr16u::divisor#2 ) (word) divr16u::dividend#6 ← phi( div16u/(word) divr16u::dividend#1 div32u16u/(word) divr16u::dividend#2 div32u16u::@2/(word) divr16u::dividend#3 ) @@ -149,6 +150,14 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3 (word) rem16u#7 ← (word) rem16u#21 return to:@return +@5: scope:[] from @2 + (word) rem16u#51 ← phi( @2/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @5 + (word) rem16u#48 ← phi( @5/(word) rem16u#51 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@13 mul8u: scope:[mul8u] from mulu8_sel (byte) mul8u::a#5 ← phi( mulu8_sel/(byte) mul8u::a#1 ) (byte) mul8u::b#1 ← phi( mulu8_sel/(byte) mul8u::b#0 ) @@ -243,8 +252,8 @@ mul16u::@return: scope:[mul16u] from mul16u::@3 (dword) mul16u::return#1 ← (dword) mul16u::return#3 return to:@return -@13: scope:[] from @2 - (word) rem16u#45 ← phi( @2/(word) rem16u#0 ) +@13: scope:[] from @6 + (word) rem16u#45 ← phi( @6/(word) rem16u#48 ) (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 @@ -832,7 +841,7 @@ main::@6: scope:[main] from main::@5 call print_cls to:main::@7 main::@7: scope:[main] from main::@6 - (word) rem16u#48 ← phi( main::@6/(word) rem16u#13 ) + (word) rem16u#49 ← phi( main::@6/(word) rem16u#13 ) (byte*) print_char_cursor#32 ← phi( main::@6/(byte*) print_char_cursor#13 ) (byte*) print_line_cursor#7 ← phi( main::@6/(byte*) print_line_cursor#2 ) (byte*) print_line_cursor#3 ← (byte*) print_line_cursor#7 @@ -841,7 +850,7 @@ main::@7: scope:[main] from main::@6 to:main::@1 main::@1: scope:[main] from main::@7 main::@9 (byte*) print_line_cursor#18 ← phi( main::@7/(byte*) print_line_cursor#3 main::@9/(byte*) print_line_cursor#11 ) - (word) rem16u#46 ← phi( main::@7/(word) rem16u#48 main::@9/(word) rem16u#37 ) + (word) rem16u#46 ← phi( main::@7/(word) rem16u#49 main::@9/(word) rem16u#37 ) (byte*) print_char_cursor#50 ← phi( main::@7/(byte*) print_char_cursor#14 main::@9/(byte*) print_char_cursor#16 ) (byte) main::i#2 ← phi( main::@7/(byte) main::i#0 main::@9/(byte) main::i#1 ) (signed byte) main::sb#0 ← *((signed byte[192]) main::sintabb#0 + (byte) main::i#2) @@ -887,7 +896,7 @@ main::@9: scope:[main] from main::@8 to:main::@return main::@3: scope:[main] from main::@1 (byte*) print_line_cursor#20 ← phi( main::@1/(byte*) print_line_cursor#18 ) - (word) rem16u#49 ← phi( main::@1/(word) rem16u#46 ) + (word) rem16u#50 ← phi( main::@1/(word) rem16u#46 ) (byte) main::i#7 ← phi( main::@1/(byte) main::i#2 ) (signed byte) main::sd#3 ← phi( main::@1/(signed byte) main::sd#0 ) (byte*) print_char_cursor#45 ← phi( main::@1/(byte*) print_char_cursor#50 ) @@ -896,7 +905,7 @@ main::@3: scope:[main] from main::@1 to:main::@10 main::@10: scope:[main] from main::@3 (byte*) print_line_cursor#19 ← phi( main::@3/(byte*) print_line_cursor#20 ) - (word) rem16u#47 ← phi( main::@3/(word) rem16u#49 ) + (word) rem16u#47 ← phi( main::@3/(word) rem16u#50 ) (byte) main::i#6 ← phi( main::@3/(byte) main::i#7 ) (signed byte) main::sd#2 ← phi( main::@3/(signed byte) main::sd#3 ) (byte*) print_char_cursor#35 ← phi( main::@3/(byte*) print_char_cursor#2 ) @@ -936,6 +945,8 @@ SYMBOL TABLE SSA (label) @32 (label) @40 (label) @41 +(label) @5 +(label) @6 (label) @begin (label) @end (word) PI2_u4f12 @@ -1449,6 +1460,8 @@ SYMBOL TABLE SSA (byte*) print_str::str#3 (byte*) print_str::str#4 (byte*) print_str::str#5 +(signed word) rem16s +(signed word) rem16s#0 (word) rem16u (word) rem16u#0 (word) rem16u#1 @@ -1496,10 +1509,16 @@ SYMBOL TABLE SSA (word) rem16u#48 (word) rem16u#49 (word) rem16u#5 +(word) rem16u#50 +(word) rem16u#51 (word) rem16u#6 (word) rem16u#7 (word) rem16u#8 (word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (signed word()) sin16s((dword) sin16s::x) (bool~) sin16s::$0 (bool~) sin16s::$1 @@ -1806,6 +1825,7 @@ Alias (word) divr16u::return#4 = (word) divr16u::return#8 Alias (word) rem16u#20 = (word) rem16u#6 (word) rem16u#21 (word) rem16u#7 Alias (word) div32u16u::quotient_lo#0 = (word~) div32u16u::$3 Alias (dword) div32u16u::return#0 = (dword) div32u16u::quotient#0 (dword) div32u16u::return#3 (dword) div32u16u::return#1 +Alias (word) rem16u#0 = (word) rem16u#51 (word) rem16u#48 (word) rem16u#45 (word) rem16u#43 (word) rem16u#42 (word) rem16u#38 Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6 Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#3 (word) mul8u::return#1 @@ -1818,7 +1838,6 @@ Alias (dword) mul16u::res#2 = (dword) mul16u::res#5 (dword) mul16u::res#4 (dword Alias (word) mul16u::a#0 = (word~) mul16u::$5 Alias (dword) mul16u::mb#1 = (dword~) mul16u::$6 Alias (dword) mul16u::res#1 = (dword~) mul16u::$4 -Alias (word) rem16u#0 = (word) rem16u#45 (word) rem16u#43 (word) rem16u#42 (word) rem16u#38 Alias (dword) div32u16u::return#2 = (dword) div32u16u::return#4 Alias (signed word*) sin16s_gen::sintab#4 = (signed word*) sin16s_gen::sintab#5 Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#4 @@ -1920,7 +1939,7 @@ Alias (byte*) print_screen#4 = (byte*) print_screen#5 (byte*) print_screen#6 Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#13 (byte*) print_line_cursor#16 Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#49 (byte*) print_char_cursor#52 Alias (word) rem16u#12 = (word) rem16u#26 -Alias (word) rem16u#13 = (word) rem16u#27 (word) rem16u#48 +Alias (word) rem16u#13 = (word) rem16u#27 (word) rem16u#49 Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#7 Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#32 Alias (signed byte) main::sd#0 = (signed byte~) main::$8 (signed byte) main::sd#3 (signed byte) main::sd#2 @@ -1931,7 +1950,7 @@ Alias (byte*) print_char_cursor#15 = (byte*) print_char_cursor#33 Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#36 (byte*) print_char_cursor#18 Alias (byte*) print_char_cursor#45 = (byte*) print_char_cursor#50 Alias (byte) main::i#2 = (byte) main::i#7 (byte) main::i#6 -Alias (word) rem16u#46 = (word) rem16u#49 (word) rem16u#47 +Alias (word) rem16u#46 = (word) rem16u#50 (word) rem16u#47 Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#19 Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#35 Alias (word) rem16u#15 = (word) rem16u#29 @@ -2047,11 +2066,14 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$10 if((signed byte) main::sd#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 Simple Condition (bool~) main::$14 if((byte) main::i#1!=rangelast(0,191)) goto main::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) rem8u#0 = 0 Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 Constant (const word) divr16u::rem#4 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const word) mul8u::res#0 = 0 Constant (const dword) mul16u::res#0 = 0 Constant (const dword) PI2_u4f28#0 = 1686629713 @@ -2126,6 +2148,8 @@ Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u: Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ Resolved ranged comparison value if(main::i#1!=rangelast(0,191)) goto main::@1 to (byte/word/signed word/dword/signed dword) 192 Culled Empty Block (label) @2 +Culled Empty Block (label) @5 +Culled Empty Block (label) @6 Culled Empty Block (label) mul8u::@3 Culled Empty Block (label) mul16u::@3 Culled Empty Block (label) @13 @@ -3058,8 +3082,11 @@ VARIABLE REGISTER WEIGHTS (byte*) print_str::str#0 202.0 (byte*) print_str::str#3 101.5 (byte*) print_str::str#5 2.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 4.0 (byte) sin16s::isUpper @@ -7809,8 +7836,11 @@ FINAL SYMBOL TABLE (byte*) print_str::str#0 str zp ZP_WORD:2 202.0 (byte*) print_str::str#3 str zp ZP_WORD:2 101.5 (byte*) print_str::str#5 str zp ZP_WORD:2 2.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 $6 zp ZP_DWORD:11 4.0 (label) sin16s::@1 diff --git a/src/test/ref/sinusgen8b.sym b/src/test/ref/sinusgen8b.sym index ec0c8e288..96b10fd53 100644 --- a/src/test/ref/sinusgen8b.sym +++ b/src/test/ref/sinusgen8b.sym @@ -250,8 +250,11 @@ (byte*) print_str::str#0 str zp ZP_WORD:2 202.0 (byte*) print_str::str#3 str zp ZP_WORD:2 101.5 (byte*) print_str::str#5 str zp ZP_WORD:2 2.0 +(signed word) rem16s (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:2 0.8 +(signed byte) rem8s +(byte) rem8u (signed word()) sin16s((dword) sin16s::x) (dword~) sin16s::$6 $6 zp ZP_DWORD:11 4.0 (label) sin16s::@1 diff --git a/src/test/ref/sinusgenscale8.asm b/src/test/ref/sinusgenscale8.asm index 0729540ad..97974c35d 100644 --- a/src/test/ref/sinusgenscale8.asm +++ b/src/test/ref/sinusgenscale8.asm @@ -4,6 +4,7 @@ .const PI2_u4f12 = $6488 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 + .label rem16u = 2 .label print_char_cursor = $d .label print_line_cursor = 8 jsr main diff --git a/src/test/ref/sinusgenscale8.cfg b/src/test/ref/sinusgenscale8.cfg index 691296766..c94ee4670 100644 --- a/src/test/ref/sinusgenscale8.cfg +++ b/src/test/ref/sinusgenscale8.cfg @@ -246,190 +246,194 @@ mul8su::@4: scope:[mul8su] from mul8su [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 to:mul8su::@2 mul8su::@2: scope:[mul8su] from mul8su::@4 - [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 - [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 - [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 + [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 + [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 + [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 + [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 to:mul8su::@1 mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@4 - [125] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) + [126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) to:mul8su::@return mul8su::@return: scope:[mul8su] from mul8su::@1 - [126] return + [127] return to:@return mul8u: scope:[mul8u] from mul8su mulu8_sel - [127] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) - [127] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) - [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [128] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) + [128] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) + [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [129] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [130] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [130] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [130] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [131] return + [132] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [136] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 sin8s: scope:[sin8s] from sin8u_table::@1 - [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 + [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 to:sin8s::@5 sin8s::@5: scope:[sin8s] from sin8s - [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 + [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 to:sin8s::@1 sin8s::@1: scope:[sin8s] from sin8s sin8s::@5 - [140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) - [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 + [141] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [141] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) + [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 to:sin8s::@6 sin8s::@6: scope:[sin8s] from sin8s::@1 - [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 + [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 to:sin8s::@2 sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6 - [143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) - [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 - [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 - [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 - [148] call mulu8_sel - [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + [144] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) + [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 + [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 + [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 + [149] call mulu8_sel + [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 to:sin8s::@10 sin8s::@10: scope:[sin8s] from sin8s::@2 - [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 - [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 - [153] call mulu8_sel - [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 + [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 + [154] call mulu8_sel + [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 to:sin8s::@11 sin8s::@11: scope:[sin8s] from sin8s::@10 - [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 - [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 - [157] call mulu8_sel - [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 + [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 + [158] call mulu8_sel + [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 to:sin8s::@12 sin8s::@12: scope:[sin8s] from sin8s::@11 - [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 - [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 - [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 - [163] call mulu8_sel - [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 + [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 + [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 + [164] call mulu8_sel + [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 to:sin8s::@13 sin8s::@13: scope:[sin8s] from sin8s::@12 - [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 - [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 - [168] call mulu8_sel - [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 + [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 + [169] call mulu8_sel + [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 to:sin8s::@14 sin8s::@14: scope:[sin8s] from sin8s::@13 - [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 - [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 + [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 + [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 to:sin8s::@7 sin8s::@7: scope:[sin8s] from sin8s::@14 - [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 + [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 to:sin8s::@3 sin8s::@3: scope:[sin8s] from sin8s::@14 sin8s::@7 - [175] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) - [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 + [176] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) + [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 to:sin8s::@8 sin8s::@8: scope:[sin8s] from sin8s::@3 - [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 + [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 sin8s::@4: scope:[sin8s] from sin8s::@18 sin8s::@8 - [178] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) + [179] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) to:sin8s::@return sin8s::@return: scope:[sin8s] from sin8s::@4 - [179] return + [180] return to:@return sin8s::@18: scope:[sin8s] from sin8s::@3 - [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 + [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@2 - [181] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) - [181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) - [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 - [184] call mul8u - [185] (word) mul8u::return#3 ← (word) mul8u::res#2 + [182] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [182] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) + [182] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) + [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 + [185] call mul8u + [186] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mulu8_sel::@2 mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel - [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 - [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 + [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 + [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 to:mulu8_sel::@return mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 - [189] return + [190] return to:@return div16u: scope:[div16u] from sin8u_table - [190] phi() - [191] call divr16u - [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + [191] phi() + [192] call divr16u + [193] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@2 div16u::@2: scope:[div16u] from div16u - [193] (word) div16u::return#0 ← (word) divr16u::return#2 + [194] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@2 - [194] return + [195] return to:@return divr16u: scope:[divr16u] from div16u - [195] phi() + [196] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [196] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [196] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [196] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#9 ) - [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [200] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [197] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [197] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [197] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) + [197] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) + [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 + [203] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 + [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [208] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [209] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [209] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + to:divr16u::@6 +divr16u::@6: scope:[divr16u] from divr16u::@3 + [212] (word) rem16u#1 ← (word) divr16u::rem#10 to:divr16u::@return -divr16u::@return: scope:[divr16u] from divr16u::@3 - [211] return +divr16u::@return: scope:[divr16u] from divr16u::@6 + [213] return to:@return print_cls: scope:[print_cls] from main - [212] phi() + [214] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [213] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [214] *((byte*) print_cls::sc#2) ← (byte) ' ' - [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [216] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [215] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [216] *((byte*) print_cls::sc#2) ← (byte) ' ' + [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [217] return + [219] return to:@return diff --git a/src/test/ref/sinusgenscale8.log b/src/test/ref/sinusgenscale8.log index 2a69f53dc..a510d976b 100644 --- a/src/test/ref/sinusgenscale8.log +++ b/src/test/ref/sinusgenscale8.log @@ -1,11 +1,15 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from - to:@13 + (byte) rem8u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +@2: scope:[] from @begin + (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@5 divr16u: scope:[divr16u] from div16u (word) divr16u::divisor#5 ← phi( div16u/(word) divr16u::divisor#0 ) (word) divr16u::dividend#4 ← phi( div16u/(word) divr16u::dividend#1 ) - (word) divr16u::rem#8 ← phi( div16u/(word) divr16u::rem#3 ) + (word) divr16u::rem#9 ← phi( div16u/(word) divr16u::rem#3 ) (word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:divr16u::@1 @@ -14,7 +18,7 @@ divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 (word) divr16u::divisor#3 ← phi( divr16u/(word) divr16u::divisor#5 divr16u::@3/(word) divr16u::divisor#6 ) (word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 ) (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#4 divr16u::@3/(word) divr16u::dividend#5 ) - (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#8 divr16u::@3/(word) divr16u::rem#9 ) + (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#9 divr16u::@3/(word) divr16u::rem#10 ) (word~) divr16u::$0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 (word) divr16u::rem#0 ← (word~) divr16u::$0 (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 @@ -50,7 +54,7 @@ divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 (word) divr16u::divisor#6 ← phi( divr16u::@2/(word) divr16u::divisor#1 divr16u::@5/(word) divr16u::divisor#2 ) (word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) (word) divr16u::dividend#5 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#7 ) - (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) (byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 ) (byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,15) (bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,15) @@ -68,14 +72,19 @@ divr16u::@5: scope:[divr16u] from divr16u::@2 to:divr16u::@3 divr16u::@6: scope:[divr16u] from divr16u::@3 (word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 ) + (word) divr16u::rem#8 ← phi( divr16u::@3/(word) divr16u::rem#10 ) + (word) rem16u#1 ← (word) divr16u::rem#8 (word) divr16u::return#0 ← (word) divr16u::quotient#5 to:divr16u::@return divr16u::@return: scope:[divr16u] from divr16u::@6 + (word) rem16u#10 ← phi( divr16u::@6/(word) rem16u#1 ) (word) divr16u::return#3 ← phi( divr16u::@6/(word) divr16u::return#0 ) (word) divr16u::return#1 ← (word) divr16u::return#3 + (word) rem16u#2 ← (word) rem16u#10 return to:@return div16u: scope:[div16u] from sin8u_table + (word) rem16u#18 ← phi( sin8u_table/(word) rem16u#20 ) (word) div16u::divisor#1 ← phi( sin8u_table/(word) div16u::divisor#0 ) (word) div16u::dividend#1 ← phi( sin8u_table/(word) div16u::dividend#0 ) (word) divr16u::dividend#1 ← (word) div16u::dividend#1 @@ -85,15 +94,27 @@ div16u: scope:[div16u] from sin8u_table (word) divr16u::return#2 ← (word) divr16u::return#1 to:div16u::@2 div16u::@2: scope:[div16u] from div16u + (word) rem16u#11 ← phi( div16u/(word) rem16u#2 ) (word) divr16u::return#4 ← phi( div16u/(word) divr16u::return#2 ) (word~) div16u::$0 ← (word) divr16u::return#4 + (word) rem16u#3 ← (word) rem16u#11 (word) div16u::return#0 ← (word~) div16u::$0 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@2 + (word) rem16u#12 ← phi( div16u::@2/(word) rem16u#3 ) (word) div16u::return#3 ← phi( div16u::@2/(word) div16u::return#0 ) (word) div16u::return#1 ← (word) div16u::return#3 + (word) rem16u#4 ← (word) rem16u#12 return to:@return +@5: scope:[] from @2 + (word) rem16u#32 ← phi( @2/(word) rem16u#0 ) + (signed byte) rem8s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@6 +@6: scope:[] from @5 + (word) rem16u#30 ← phi( @5/(word) rem16u#32 ) + (signed word) rem16s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@13 mul8u: scope:[mul8u] from mul8su mulu8_sel (byte) mul8u::a#6 ← phi( mul8su/(byte) mul8u::a#1 mulu8_sel/(byte) mul8u::a#2 ) (byte) mul8u::b#2 ← phi( mul8su/(byte) mul8u::b#0 mulu8_sel/(byte) mul8u::b#1 ) @@ -169,6 +190,7 @@ mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@4 mul8su::@2: scope:[mul8su] from mul8su::@4 (byte) mul8su::b#2 ← phi( mul8su::@4/(byte) mul8su::b#3 ) (word) mul8su::m#3 ← phi( mul8su::@4/(word) mul8su::m#0 ) + (byte~) mul8su::$5 ← > (word) mul8su::m#3 (byte~) mul8su::$6 ← > (word) mul8su::m#3 (byte~) mul8su::$7 ← ((byte)) (byte) mul8su::b#2 (byte~) mul8su::$8 ← (byte~) mul8su::$6 - (byte~) mul8su::$7 @@ -180,7 +202,11 @@ mul8su::@return: scope:[mul8su] from mul8su::@1 (signed word) mul8su::return#1 ← (signed word) mul8su::return#3 return to:@return -@13: scope:[] from @begin +@13: scope:[] from @6 + (word) rem16u#28 ← phi( @6/(word) rem16u#30 ) + (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 + (dword) PI_u4f28#0 ← (dword/signed dword) 843314857 + (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 @@ -342,6 +368,7 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 return to:@return @20: scope:[] from @13 + (word) rem16u#26 ← phi( @13/(word) rem16u#28 ) (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 @@ -499,6 +526,7 @@ print_word::@return: scope:[print_word] from print_word::@2 to:@return @32: scope:[] from @20 (byte*) print_screen#6 ← phi( @20/(byte*) print_screen#0 ) + (word) rem16u#25 ← phi( @20/(word) rem16u#26 ) (byte*) print_char_cursor#110 ← phi( @20/(byte*) print_char_cursor#0 ) (byte*) print_line_cursor#30 ← phi( @20/(byte*) print_line_cursor#0 ) (byte[]) print_hextab#0 ← (const string) $0 @@ -564,6 +592,7 @@ print_cls::@return: scope:[print_cls] from print_cls::@2 return to:@return main: scope:[main] from @41 + (word) rem16u#23 ← phi( @41/(word) rem16u#22 ) (byte*) print_char_cursor#101 ← phi( @41/(byte*) print_char_cursor#104 ) (byte*) print_line_cursor#24 ← phi( @41/(byte*) print_line_cursor#27 ) (byte*) print_screen#4 ← phi( @41/(byte*) print_screen#5 ) @@ -572,6 +601,7 @@ main: scope:[main] from @41 call print_cls to:main::@1 main::@1: scope:[main] from main + (word) rem16u#19 ← phi( main/(word) rem16u#23 ) (word) main::tabsize#1 ← phi( main/(word) main::tabsize#0 ) (byte*) print_char_cursor#67 ← phi( main/(byte*) print_char_cursor#21 ) (byte*) print_line_cursor#16 ← phi( main/(byte*) print_line_cursor#4 ) @@ -586,20 +616,25 @@ main::@1: scope:[main] from main main::@2: scope:[main] from main::@1 (byte*) print_line_cursor#17 ← phi( main::@1/(byte*) print_line_cursor#10 ) (byte*) print_char_cursor#68 ← phi( main::@1/(byte*) print_char_cursor#45 ) + (word) rem16u#13 ← phi( main::@1/(word) rem16u#8 ) + (word) rem16u#5 ← (word) rem16u#13 (byte*) print_char_cursor#23 ← (byte*) print_char_cursor#68 (byte*) print_line_cursor#6 ← (byte*) print_line_cursor#17 to:main::@return main::@return: scope:[main] from main::@2 + (word) rem16u#14 ← phi( main::@2/(word) rem16u#5 ) (byte*) print_char_cursor#69 ← phi( main::@2/(byte*) print_char_cursor#23 ) (byte*) print_line_cursor#18 ← phi( main::@2/(byte*) print_line_cursor#6 ) (byte*) print_line_cursor#7 ← (byte*) print_line_cursor#18 (byte*) print_char_cursor#24 ← (byte*) print_char_cursor#69 + (word) rem16u#6 ← (word) rem16u#14 return to:@return sin8u_table: scope:[sin8u_table] from main::@1 (byte*) sin8u_table::sintab#26 ← phi( main::@1/(byte*) sin8u_table::sintab#0 ) (byte*) print_line_cursor#49 ← phi( main::@1/(byte*) print_line_cursor#5 ) (byte*) print_char_cursor#108 ← phi( main::@1/(byte*) print_char_cursor#22 ) + (word) rem16u#20 ← phi( main::@1/(word) rem16u#19 ) (word) sin8u_table::tabsize#1 ← phi( main::@1/(word) sin8u_table::tabsize#0 ) (byte) sin8u_table::min#1 ← phi( main::@1/(byte) sin8u_table::min#0 ) (byte) sin8u_table::max#1 ← phi( main::@1/(byte) sin8u_table::max#0 ) @@ -626,13 +661,16 @@ sin8u_table::@3: scope:[sin8u_table] from sin8u_table (byte) sin8u_table::max#7 ← phi( sin8u_table/(byte) sin8u_table::max#1 ) (byte) sin8u_table::min#5 ← phi( sin8u_table/(byte) sin8u_table::min#1 ) (byte*) print_char_cursor#102 ← phi( sin8u_table/(byte*) print_char_cursor#108 ) + (word) rem16u#15 ← phi( sin8u_table/(word) rem16u#4 ) (word) div16u::return#4 ← phi( sin8u_table/(word) div16u::return#2 ) (word~) sin8u_table::$6 ← (word) div16u::return#4 + (word) rem16u#7 ← (word) rem16u#15 (word) sin8u_table::step#0 ← (word~) sin8u_table::$6 (byte*) print_str::str#1 ← (const string) sin8u_table::str call print_str to:sin8u_table::@4 sin8u_table::@4: scope:[sin8u_table] from sin8u_table::@3 + (word) rem16u#50 ← phi( sin8u_table::@3/(word) rem16u#7 ) (word) sin8u_table::tabsize#24 ← phi( sin8u_table::@3/(word) sin8u_table::tabsize#25 ) (byte*) sin8u_table::sintab#24 ← phi( sin8u_table::@3/(byte*) sin8u_table::sintab#25 ) (byte*) print_line_cursor#45 ← phi( sin8u_table::@3/(byte*) print_line_cursor#47 ) @@ -647,6 +685,7 @@ sin8u_table::@4: scope:[sin8u_table] from sin8u_table::@3 call print_word to:sin8u_table::@5 sin8u_table::@5: scope:[sin8u_table] from sin8u_table::@4 + (word) rem16u#49 ← phi( sin8u_table::@4/(word) rem16u#50 ) (word) sin8u_table::tabsize#23 ← phi( sin8u_table::@4/(word) sin8u_table::tabsize#24 ) (word) sin8u_table::step#23 ← phi( sin8u_table::@4/(word) sin8u_table::step#1 ) (byte*) sin8u_table::sintab#23 ← phi( sin8u_table::@4/(byte*) sin8u_table::sintab#24 ) @@ -661,6 +700,7 @@ sin8u_table::@5: scope:[sin8u_table] from sin8u_table::@4 call print_str to:sin8u_table::@6 sin8u_table::@6: scope:[sin8u_table] from sin8u_table::@5 + (word) rem16u#48 ← phi( sin8u_table::@5/(word) rem16u#49 ) (word) sin8u_table::tabsize#22 ← phi( sin8u_table::@5/(word) sin8u_table::tabsize#23 ) (word) sin8u_table::step#22 ← phi( sin8u_table::@5/(word) sin8u_table::step#23 ) (byte*) sin8u_table::sintab#21 ← phi( sin8u_table::@5/(byte*) sin8u_table::sintab#23 ) @@ -675,6 +715,7 @@ sin8u_table::@6: scope:[sin8u_table] from sin8u_table::@5 call print_byte to:sin8u_table::@7 sin8u_table::@7: scope:[sin8u_table] from sin8u_table::@6 + (word) rem16u#47 ← phi( sin8u_table::@6/(word) rem16u#48 ) (word) sin8u_table::tabsize#21 ← phi( sin8u_table::@6/(word) sin8u_table::tabsize#22 ) (word) sin8u_table::step#21 ← phi( sin8u_table::@6/(word) sin8u_table::step#22 ) (byte*) sin8u_table::sintab#19 ← phi( sin8u_table::@6/(byte*) sin8u_table::sintab#21 ) @@ -688,6 +729,7 @@ sin8u_table::@7: scope:[sin8u_table] from sin8u_table::@6 call print_str to:sin8u_table::@8 sin8u_table::@8: scope:[sin8u_table] from sin8u_table::@7 + (word) rem16u#46 ← phi( sin8u_table::@7/(word) rem16u#47 ) (word) sin8u_table::tabsize#20 ← phi( sin8u_table::@7/(word) sin8u_table::tabsize#21 ) (word) sin8u_table::step#20 ← phi( sin8u_table::@7/(word) sin8u_table::step#21 ) (byte*) sin8u_table::sintab#17 ← phi( sin8u_table::@7/(byte*) sin8u_table::sintab#19 ) @@ -701,6 +743,7 @@ sin8u_table::@8: scope:[sin8u_table] from sin8u_table::@7 call print_byte to:sin8u_table::@9 sin8u_table::@9: scope:[sin8u_table] from sin8u_table::@8 + (word) rem16u#45 ← phi( sin8u_table::@8/(word) rem16u#46 ) (word) sin8u_table::tabsize#19 ← phi( sin8u_table::@8/(word) sin8u_table::tabsize#20 ) (word) sin8u_table::step#19 ← phi( sin8u_table::@8/(word) sin8u_table::step#20 ) (byte*) sin8u_table::sintab#15 ← phi( sin8u_table::@8/(byte*) sin8u_table::sintab#17 ) @@ -713,6 +756,7 @@ sin8u_table::@9: scope:[sin8u_table] from sin8u_table::@8 call print_str to:sin8u_table::@10 sin8u_table::@10: scope:[sin8u_table] from sin8u_table::@9 + (word) rem16u#44 ← phi( sin8u_table::@9/(word) rem16u#45 ) (word) sin8u_table::tabsize#18 ← phi( sin8u_table::@9/(word) sin8u_table::tabsize#19 ) (word) sin8u_table::step#18 ← phi( sin8u_table::@9/(word) sin8u_table::step#19 ) (byte*) sin8u_table::sintab#13 ← phi( sin8u_table::@9/(byte*) sin8u_table::sintab#15 ) @@ -725,6 +769,7 @@ sin8u_table::@10: scope:[sin8u_table] from sin8u_table::@9 call print_byte to:sin8u_table::@11 sin8u_table::@11: scope:[sin8u_table] from sin8u_table::@10 + (word) rem16u#43 ← phi( sin8u_table::@10/(word) rem16u#44 ) (word) sin8u_table::tabsize#17 ← phi( sin8u_table::@10/(word) sin8u_table::tabsize#18 ) (word) sin8u_table::step#17 ← phi( sin8u_table::@10/(word) sin8u_table::step#18 ) (byte*) sin8u_table::sintab#11 ← phi( sin8u_table::@10/(byte*) sin8u_table::sintab#13 ) @@ -737,6 +782,7 @@ sin8u_table::@11: scope:[sin8u_table] from sin8u_table::@10 call print_str to:sin8u_table::@12 sin8u_table::@12: scope:[sin8u_table] from sin8u_table::@11 + (word) rem16u#42 ← phi( sin8u_table::@11/(word) rem16u#43 ) (word) sin8u_table::tabsize#16 ← phi( sin8u_table::@11/(word) sin8u_table::tabsize#17 ) (word) sin8u_table::step#16 ← phi( sin8u_table::@11/(word) sin8u_table::step#17 ) (byte*) sin8u_table::sintab#9 ← phi( sin8u_table::@11/(byte*) sin8u_table::sintab#11 ) @@ -749,6 +795,7 @@ sin8u_table::@12: scope:[sin8u_table] from sin8u_table::@11 call print_byte to:sin8u_table::@13 sin8u_table::@13: scope:[sin8u_table] from sin8u_table::@12 + (word) rem16u#41 ← phi( sin8u_table::@12/(word) rem16u#42 ) (word) sin8u_table::tabsize#15 ← phi( sin8u_table::@12/(word) sin8u_table::tabsize#16 ) (word) sin8u_table::step#15 ← phi( sin8u_table::@12/(word) sin8u_table::step#16 ) (byte*) sin8u_table::sintab#7 ← phi( sin8u_table::@12/(byte*) sin8u_table::sintab#9 ) @@ -760,6 +807,7 @@ sin8u_table::@13: scope:[sin8u_table] from sin8u_table::@12 call print_ln to:sin8u_table::@14 sin8u_table::@14: scope:[sin8u_table] from sin8u_table::@13 + (word) rem16u#40 ← phi( sin8u_table::@13/(word) rem16u#41 ) (word) sin8u_table::tabsize#14 ← phi( sin8u_table::@13/(word) sin8u_table::tabsize#15 ) (word) sin8u_table::step#14 ← phi( sin8u_table::@13/(word) sin8u_table::step#15 ) (byte*) sin8u_table::sintab#5 ← phi( sin8u_table::@13/(byte*) sin8u_table::sintab#7 ) @@ -773,6 +821,7 @@ sin8u_table::@14: scope:[sin8u_table] from sin8u_table::@13 (word) sin8u_table::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:sin8u_table::@1 sin8u_table::@1: scope:[sin8u_table] from sin8u_table::@14 sin8u_table::@25 + (word) rem16u#39 ← phi( sin8u_table::@14/(word) rem16u#40 sin8u_table::@25/(word) rem16u#21 ) (word) sin8u_table::tabsize#13 ← phi( sin8u_table::@14/(word) sin8u_table::tabsize#14 sin8u_table::@25/(word) sin8u_table::tabsize#2 ) (word) sin8u_table::i#13 ← phi( sin8u_table::@14/(word) sin8u_table::i#0 sin8u_table::@25/(word) sin8u_table::i#1 ) (word) sin8u_table::step#13 ← phi( sin8u_table::@14/(word) sin8u_table::step#14 sin8u_table::@25/(word) sin8u_table::step#2 ) @@ -787,6 +836,7 @@ sin8u_table::@1: scope:[sin8u_table] from sin8u_table::@14 sin8u_table::@25 (signed byte) sin8s::return#2 ← (signed byte) sin8s::return#1 to:sin8u_table::@15 sin8u_table::@15: scope:[sin8u_table] from sin8u_table::@1 + (word) rem16u#38 ← phi( sin8u_table::@1/(word) rem16u#39 ) (word) sin8u_table::tabsize#12 ← phi( sin8u_table::@1/(word) sin8u_table::tabsize#13 ) (word) sin8u_table::i#12 ← phi( sin8u_table::@1/(word) sin8u_table::i#13 ) (word) sin8u_table::step#12 ← phi( sin8u_table::@1/(word) sin8u_table::step#13 ) @@ -807,6 +857,7 @@ sin8u_table::@15: scope:[sin8u_table] from sin8u_table::@1 to:sin8u_table::@16 sin8u_table::@16: scope:[sin8u_table] from sin8u_table::@15 (byte) sin8u_table::amplitude#24 ← phi( sin8u_table::@15/(byte) sin8u_table::amplitude#2 ) + (word) rem16u#37 ← phi( sin8u_table::@15/(word) rem16u#38 ) (word) sin8u_table::tabsize#11 ← phi( sin8u_table::@15/(word) sin8u_table::tabsize#12 ) (word) sin8u_table::i#11 ← phi( sin8u_table::@15/(word) sin8u_table::i#12 ) (word) sin8u_table::step#11 ← phi( sin8u_table::@15/(word) sin8u_table::step#12 ) @@ -831,6 +882,7 @@ sin8u_table::@17: scope:[sin8u_table] from sin8u_table::@16 (byte*) sin8u_table::sintab#22 ← phi( sin8u_table::@16/(byte*) sin8u_table::sintab#1 ) (byte) sin8u_table::mid#24 ← phi( sin8u_table::@16/(byte) sin8u_table::mid#2 ) (byte) sin8u_table::amplitude#23 ← phi( sin8u_table::@16/(byte) sin8u_table::amplitude#24 ) + (word) rem16u#36 ← phi( sin8u_table::@16/(word) rem16u#37 ) (word) sin8u_table::tabsize#10 ← phi( sin8u_table::@16/(word) sin8u_table::tabsize#11 ) (word) sin8u_table::i#10 ← phi( sin8u_table::@16/(word) sin8u_table::i#11 ) (word) sin8u_table::step#10 ← phi( sin8u_table::@16/(word) sin8u_table::step#11 ) @@ -848,6 +900,7 @@ sin8u_table::@18: scope:[sin8u_table] from sin8u_table::@17 (byte*) sin8u_table::sintab#20 ← phi( sin8u_table::@17/(byte*) sin8u_table::sintab#22 ) (byte) sin8u_table::mid#23 ← phi( sin8u_table::@17/(byte) sin8u_table::mid#24 ) (byte) sin8u_table::amplitude#22 ← phi( sin8u_table::@17/(byte) sin8u_table::amplitude#23 ) + (word) rem16u#35 ← phi( sin8u_table::@17/(word) rem16u#36 ) (word) sin8u_table::tabsize#9 ← phi( sin8u_table::@17/(word) sin8u_table::tabsize#10 ) (word) sin8u_table::i#9 ← phi( sin8u_table::@17/(word) sin8u_table::i#10 ) (word) sin8u_table::step#9 ← phi( sin8u_table::@17/(word) sin8u_table::step#10 ) @@ -865,6 +918,7 @@ sin8u_table::@19: scope:[sin8u_table] from sin8u_table::@18 (byte*) sin8u_table::sintab#18 ← phi( sin8u_table::@18/(byte*) sin8u_table::sintab#20 ) (byte) sin8u_table::mid#22 ← phi( sin8u_table::@18/(byte) sin8u_table::mid#23 ) (byte) sin8u_table::amplitude#21 ← phi( sin8u_table::@18/(byte) sin8u_table::amplitude#22 ) + (word) rem16u#34 ← phi( sin8u_table::@18/(word) rem16u#35 ) (word) sin8u_table::tabsize#8 ← phi( sin8u_table::@18/(word) sin8u_table::tabsize#9 ) (word) sin8u_table::i#8 ← phi( sin8u_table::@18/(word) sin8u_table::i#9 ) (word) sin8u_table::step#8 ← phi( sin8u_table::@18/(word) sin8u_table::step#9 ) @@ -882,6 +936,7 @@ sin8u_table::@20: scope:[sin8u_table] from sin8u_table::@19 (byte*) sin8u_table::sintab#16 ← phi( sin8u_table::@19/(byte*) sin8u_table::sintab#18 ) (byte) sin8u_table::mid#20 ← phi( sin8u_table::@19/(byte) sin8u_table::mid#22 ) (byte) sin8u_table::amplitude#20 ← phi( sin8u_table::@19/(byte) sin8u_table::amplitude#21 ) + (word) rem16u#33 ← phi( sin8u_table::@19/(word) rem16u#34 ) (word) sin8u_table::tabsize#7 ← phi( sin8u_table::@19/(word) sin8u_table::tabsize#8 ) (word) sin8u_table::i#7 ← phi( sin8u_table::@19/(word) sin8u_table::i#8 ) (word) sin8u_table::step#7 ← phi( sin8u_table::@19/(word) sin8u_table::step#8 ) @@ -898,6 +953,7 @@ sin8u_table::@21: scope:[sin8u_table] from sin8u_table::@20 (byte*) sin8u_table::sintab#14 ← phi( sin8u_table::@20/(byte*) sin8u_table::sintab#16 ) (byte) sin8u_table::mid#18 ← phi( sin8u_table::@20/(byte) sin8u_table::mid#20 ) (byte) sin8u_table::amplitude#18 ← phi( sin8u_table::@20/(byte) sin8u_table::amplitude#20 ) + (word) rem16u#31 ← phi( sin8u_table::@20/(word) rem16u#33 ) (word) sin8u_table::tabsize#6 ← phi( sin8u_table::@20/(word) sin8u_table::tabsize#7 ) (word) sin8u_table::i#6 ← phi( sin8u_table::@20/(word) sin8u_table::i#7 ) (word) sin8u_table::step#6 ← phi( sin8u_table::@20/(word) sin8u_table::step#7 ) @@ -914,6 +970,7 @@ sin8u_table::@22: scope:[sin8u_table] from sin8u_table::@21 (byte*) sin8u_table::sintab#12 ← phi( sin8u_table::@21/(byte*) sin8u_table::sintab#14 ) (byte) sin8u_table::mid#16 ← phi( sin8u_table::@21/(byte) sin8u_table::mid#18 ) (byte) sin8u_table::amplitude#16 ← phi( sin8u_table::@21/(byte) sin8u_table::amplitude#18 ) + (word) rem16u#29 ← phi( sin8u_table::@21/(word) rem16u#31 ) (word) sin8u_table::tabsize#5 ← phi( sin8u_table::@21/(word) sin8u_table::tabsize#6 ) (word) sin8u_table::i#5 ← phi( sin8u_table::@21/(word) sin8u_table::i#6 ) (word) sin8u_table::step#5 ← phi( sin8u_table::@21/(word) sin8u_table::step#6 ) @@ -929,6 +986,7 @@ sin8u_table::@23: scope:[sin8u_table] from sin8u_table::@22 (byte*) sin8u_table::sintab#10 ← phi( sin8u_table::@22/(byte*) sin8u_table::sintab#12 ) (byte) sin8u_table::mid#14 ← phi( sin8u_table::@22/(byte) sin8u_table::mid#16 ) (byte) sin8u_table::amplitude#13 ← phi( sin8u_table::@22/(byte) sin8u_table::amplitude#16 ) + (word) rem16u#27 ← phi( sin8u_table::@22/(word) rem16u#29 ) (word) sin8u_table::tabsize#4 ← phi( sin8u_table::@22/(word) sin8u_table::tabsize#5 ) (word) sin8u_table::i#4 ← phi( sin8u_table::@22/(word) sin8u_table::i#5 ) (word) sin8u_table::step#4 ← phi( sin8u_table::@22/(word) sin8u_table::step#5 ) @@ -944,6 +1002,7 @@ sin8u_table::@24: scope:[sin8u_table] from sin8u_table::@23 (byte*) sin8u_table::sintab#8 ← phi( sin8u_table::@23/(byte*) sin8u_table::sintab#10 ) (byte) sin8u_table::mid#12 ← phi( sin8u_table::@23/(byte) sin8u_table::mid#14 ) (byte) sin8u_table::amplitude#10 ← phi( sin8u_table::@23/(byte) sin8u_table::amplitude#13 ) + (word) rem16u#24 ← phi( sin8u_table::@23/(word) rem16u#27 ) (word) sin8u_table::tabsize#3 ← phi( sin8u_table::@23/(word) sin8u_table::tabsize#4 ) (word) sin8u_table::i#3 ← phi( sin8u_table::@23/(word) sin8u_table::i#4 ) (word) sin8u_table::step#3 ← phi( sin8u_table::@23/(word) sin8u_table::step#4 ) @@ -957,6 +1016,7 @@ sin8u_table::@25: scope:[sin8u_table] from sin8u_table::@24 (byte*) sin8u_table::sintab#6 ← phi( sin8u_table::@24/(byte*) sin8u_table::sintab#8 ) (byte) sin8u_table::mid#9 ← phi( sin8u_table::@24/(byte) sin8u_table::mid#12 ) (byte) sin8u_table::amplitude#7 ← phi( sin8u_table::@24/(byte) sin8u_table::amplitude#10 ) + (word) rem16u#21 ← phi( sin8u_table::@24/(word) rem16u#24 ) (word) sin8u_table::tabsize#2 ← phi( sin8u_table::@24/(word) sin8u_table::tabsize#3 ) (word) sin8u_table::i#2 ← phi( sin8u_table::@24/(word) sin8u_table::i#3 ) (word) sin8u_table::step#2 ← phi( sin8u_table::@24/(word) sin8u_table::step#3 ) @@ -974,39 +1034,53 @@ sin8u_table::@25: scope:[sin8u_table] from sin8u_table::@24 sin8u_table::@return: scope:[sin8u_table] from sin8u_table::@25 (byte*) print_line_cursor#21 ← phi( sin8u_table::@25/(byte*) print_line_cursor#9 ) (byte*) print_char_cursor#90 ← phi( sin8u_table::@25/(byte*) print_char_cursor#44 ) + (word) rem16u#16 ← phi( sin8u_table::@25/(word) rem16u#21 ) + (word) rem16u#8 ← (word) rem16u#16 (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#90 (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#21 return to:@return @41: scope:[] from @32 (byte*) print_screen#5 ← phi( @32/(byte*) print_screen#6 ) + (word) rem16u#22 ← phi( @32/(word) rem16u#25 ) (byte*) print_char_cursor#104 ← phi( @32/(byte*) print_char_cursor#110 ) (byte*) print_line_cursor#27 ← phi( @32/(byte*) print_line_cursor#30 ) call main to:@42 @42: scope:[] from @41 + (word) rem16u#17 ← phi( @41/(word) rem16u#6 ) (byte*) print_char_cursor#91 ← phi( @41/(byte*) print_char_cursor#24 ) (byte*) print_line_cursor#22 ← phi( @41/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#22 (byte*) print_char_cursor#46 ← (byte*) print_char_cursor#91 + (word) rem16u#9 ← (word) rem16u#17 to:@end @end: scope:[] from @42 SYMBOL TABLE SSA (const string) $0 = (string) "0123456789abcdef" (label) @13 +(label) @2 (label) @20 (label) @32 (label) @41 (label) @42 +(label) @5 +(label) @6 (label) @begin (label) @end (word) PI2_u4f12 (word) PI2_u4f12#0 +(dword) PI2_u4f28 +(dword) PI2_u4f28#0 (word) PI_HALF_u4f12 (word) PI_HALF_u4f12#0 +(dword) PI_HALF_u4f28 +(dword) PI_HALF_u4f28#0 (word) PI_u4f12 (word) PI_u4f12#0 +(dword) PI_u4f28 +(dword) PI_u4f28#0 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (word~) div16u::$0 (label) div16u::@2 @@ -1081,6 +1155,7 @@ SYMBOL TABLE SSA (word) divr16u::rem (word) divr16u::rem#0 (word) divr16u::rem#1 +(word) divr16u::rem#10 (word) divr16u::rem#2 (word) divr16u::rem#3 (word) divr16u::rem#4 @@ -1111,6 +1186,7 @@ SYMBOL TABLE SSA (word~) mul8su::$2 (bool~) mul8su::$3 (bool~) mul8su::$4 +(byte~) mul8su::$5 (byte~) mul8su::$6 (byte~) mul8su::$7 (byte~) mul8su::$8 @@ -1515,6 +1591,64 @@ SYMBOL TABLE SSA (word) print_word::w#2 (word) print_word::w#3 (word) print_word::w#4 +(signed word) rem16s +(signed word) rem16s#0 +(word) rem16u +(word) rem16u#0 +(word) rem16u#1 +(word) rem16u#10 +(word) rem16u#11 +(word) rem16u#12 +(word) rem16u#13 +(word) rem16u#14 +(word) rem16u#15 +(word) rem16u#16 +(word) rem16u#17 +(word) rem16u#18 +(word) rem16u#19 +(word) rem16u#2 +(word) rem16u#20 +(word) rem16u#21 +(word) rem16u#22 +(word) rem16u#23 +(word) rem16u#24 +(word) rem16u#25 +(word) rem16u#26 +(word) rem16u#27 +(word) rem16u#28 +(word) rem16u#29 +(word) rem16u#3 +(word) rem16u#30 +(word) rem16u#31 +(word) rem16u#32 +(word) rem16u#33 +(word) rem16u#34 +(word) rem16u#35 +(word) rem16u#36 +(word) rem16u#37 +(word) rem16u#38 +(word) rem16u#39 +(word) rem16u#4 +(word) rem16u#40 +(word) rem16u#41 +(word) rem16u#42 +(word) rem16u#43 +(word) rem16u#44 +(word) rem16u#45 +(word) rem16u#46 +(word) rem16u#47 +(word) rem16u#48 +(word) rem16u#49 +(word) rem16u#5 +(word) rem16u#50 +(word) rem16u#6 +(word) rem16u#7 +(word) rem16u#8 +(word) rem16u#9 +(signed byte) rem8s +(signed byte) rem8s#0 +(byte) rem8u +(byte) rem8u#0 (signed byte()) sin8s((word) sin8s::x) (bool~) sin8s::$0 (bool~) sin8s::$1 @@ -1889,9 +2023,13 @@ Alias (word) divr16u::rem#5 = (word) divr16u::rem#7 Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2 Alias (byte) divr16u::i#3 = (byte) divr16u::i#4 Alias (word) divr16u::rem#2 = (word~) divr16u::$10 +Alias (word) divr16u::rem#10 = (word) divr16u::rem#8 Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1 +Alias (word) rem16u#1 = (word) rem16u#10 (word) rem16u#2 Alias (word) divr16u::return#2 = (word) divr16u::return#4 +Alias (word) rem16u#11 = (word) rem16u#3 (word) rem16u#12 (word) rem16u#4 Alias (word) div16u::return#0 = (word~) div16u::$0 (word) div16u::return#3 (word) div16u::return#1 +Alias (word) rem16u#0 = (word) rem16u#32 (word) rem16u#30 (word) rem16u#28 (word) rem16u#26 (word) rem16u#25 (word) rem16u#22 Alias (byte) mul8u::a#3 = (byte) mul8u::a#4 (byte) mul8u::a#7 Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5 Alias (word) mul8u::res#2 = (word) mul8u::res#5 (word) mul8u::res#4 (word) mul8u::return#0 (word) mul8u::res#3 (word) mul8u::return#4 (word) mul8u::return#1 @@ -1961,8 +2099,10 @@ Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#62 (byte*) print_ Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#65 (byte*) print_char_cursor#19 Alias (byte*) print_line_cursor#15 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#20 (byte*) print_char_cursor#66 (byte*) print_line_cursor#4 (byte*) print_char_cursor#21 Alias (word) main::tabsize#0 = (word) main::tabsize#1 +Alias (word) rem16u#19 = (word) rem16u#23 Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#5 Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#67 +Alias (word) rem16u#13 = (word) rem16u#5 (word) rem16u#14 (word) rem16u#6 Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#68 (byte*) print_char_cursor#69 (byte*) print_char_cursor#24 Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#6 (byte*) print_line_cursor#18 (byte*) print_line_cursor#7 Alias (byte) sin8u_table::amplitude#0 = (byte~) sin8u_table::$0 (byte) sin8u_table::amplitude#19 (byte) sin8u_table::amplitude#17 (byte) sin8u_table::amplitude#14 (byte) sin8u_table::amplitude#11 (byte) sin8u_table::amplitude#8 (byte) sin8u_table::amplitude#5 (byte) sin8u_table::amplitude#3 (byte) sin8u_table::amplitude#1 (byte) sin8u_table::amplitude#15 (byte) sin8u_table::amplitude#12 (byte) sin8u_table::amplitude#9 (byte) sin8u_table::amplitude#6 @@ -1975,6 +2115,7 @@ Alias (byte) sin8u_table::max#1 = (byte) sin8u_table::max#7 (byte) sin8u_table:: Alias (byte*) print_line_cursor#25 = (byte*) print_line_cursor#47 (byte*) print_line_cursor#49 (byte*) print_line_cursor#45 (byte*) print_line_cursor#43 (byte*) print_line_cursor#41 (byte*) print_line_cursor#39 (byte*) print_line_cursor#37 (byte*) print_line_cursor#35 (byte*) print_line_cursor#33 (byte*) print_line_cursor#31 (byte*) print_line_cursor#28 Alias (byte*) sin8u_table::sintab#11 = (byte*) sin8u_table::sintab#25 (byte*) sin8u_table::sintab#26 (byte*) sin8u_table::sintab#24 (byte*) sin8u_table::sintab#23 (byte*) sin8u_table::sintab#21 (byte*) sin8u_table::sintab#19 (byte*) sin8u_table::sintab#17 (byte*) sin8u_table::sintab#15 (byte*) sin8u_table::sintab#13 (byte*) sin8u_table::sintab#9 (byte*) sin8u_table::sintab#7 (byte*) sin8u_table::sintab#5 Alias (word) sin8u_table::tabsize#1 = (word) sin8u_table::tabsize#25 (word) sin8u_table::tabsize#24 (word) sin8u_table::tabsize#23 (word) sin8u_table::tabsize#22 (word) sin8u_table::tabsize#21 (word) sin8u_table::tabsize#20 (word) sin8u_table::tabsize#19 (word) sin8u_table::tabsize#18 (word) sin8u_table::tabsize#17 (word) sin8u_table::tabsize#16 (word) sin8u_table::tabsize#15 (word) sin8u_table::tabsize#14 +Alias (word) rem16u#15 = (word) rem16u#7 (word) rem16u#50 (word) rem16u#49 (word) rem16u#48 (word) rem16u#47 (word) rem16u#46 (word) rem16u#45 (word) rem16u#44 (word) rem16u#43 (word) rem16u#42 (word) rem16u#41 (word) rem16u#40 Alias (word) sin8u_table::step#0 = (word~) sin8u_table::$6 (word) sin8u_table::step#1 (word) sin8u_table::step#23 (word) sin8u_table::step#22 (word) sin8u_table::step#21 (word) sin8u_table::step#20 (word) sin8u_table::step#19 (word) sin8u_table::step#18 (word) sin8u_table::step#17 (word) sin8u_table::step#16 (word) sin8u_table::step#15 (word) sin8u_table::step#14 Alias (byte*) print_char_cursor#25 = (byte*) print_char_cursor#70 Alias (byte*) print_char_cursor#26 = (byte*) print_char_cursor#71 @@ -1998,6 +2139,7 @@ Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#46 (byte*) print_ Alias (word) sin8u_table::step#10 = (word) sin8u_table::step#12 (word) sin8u_table::step#13 (word) sin8u_table::step#11 (word) sin8u_table::step#9 (word) sin8u_table::step#8 (word) sin8u_table::step#7 (word) sin8u_table::step#6 (word) sin8u_table::step#5 (word) sin8u_table::step#4 (word) sin8u_table::step#3 (word) sin8u_table::step#2 Alias (word) sin8u_table::i#10 = (word) sin8u_table::i#12 (word) sin8u_table::i#13 (word) sin8u_table::i#11 (word) sin8u_table::i#9 (word) sin8u_table::i#8 (word) sin8u_table::i#7 (word) sin8u_table::i#6 (word) sin8u_table::i#5 (word) sin8u_table::i#4 (word) sin8u_table::i#3 (word) sin8u_table::i#2 Alias (word) sin8u_table::tabsize#10 = (word) sin8u_table::tabsize#12 (word) sin8u_table::tabsize#13 (word) sin8u_table::tabsize#11 (word) sin8u_table::tabsize#9 (word) sin8u_table::tabsize#8 (word) sin8u_table::tabsize#7 (word) sin8u_table::tabsize#6 (word) sin8u_table::tabsize#5 (word) sin8u_table::tabsize#4 (word) sin8u_table::tabsize#3 (word) sin8u_table::tabsize#2 +Alias (word) rem16u#16 = (word) rem16u#38 (word) rem16u#39 (word) rem16u#37 (word) rem16u#36 (word) rem16u#35 (word) rem16u#34 (word) rem16u#33 (word) rem16u#31 (word) rem16u#29 (word) rem16u#27 (word) rem16u#24 (word) rem16u#21 (word) rem16u#8 Alias (signed byte) sin8u_table::sinx#0 = (signed byte~) sin8u_table::$18 (signed byte) sin8u_table::sinx#4 (signed byte) sin8u_table::sinx#3 (signed byte) sin8u_table::sinx#2 (signed byte) sin8u_table::sinx#1 Alias (byte) mul8su::b#0 = (byte/signed word/word/dword/signed dword~) sin8u_table::$19 Alias (signed word) mul8su::return#2 = (signed word) mul8su::return#4 @@ -2017,6 +2159,7 @@ Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#89 (byte*) print_ Alias (word) sin8u_table::x#1 = (word~) sin8u_table::$32 Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#22 Alias (byte*) print_char_cursor#46 = (byte*) print_char_cursor#91 +Alias (word) rem16u#17 = (word) rem16u#9 Successful SSA optimization Pass2AliasElimination Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3 Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6 @@ -2034,13 +2177,16 @@ Self Phi Eliminated (byte) sin8u_table::amplitude#10 Self Phi Eliminated (byte) sin8u_table::mid#12 Self Phi Eliminated (word) sin8u_table::step#10 Self Phi Eliminated (word) sin8u_table::tabsize#10 +Self Phi Eliminated (word) rem16u#16 Successful SSA optimization Pass2SelfPhiElimination -Redundant Phi (word) divr16u::rem#8 (word) divr16u::rem#3 +Redundant Phi (word) divr16u::rem#9 (word) divr16u::rem#3 Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1 Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0 Redundant Phi (word) divr16u::divisor#1 (word) divr16u::divisor#5 Redundant Phi (word) div16u::dividend#1 (word) div16u::dividend#0 Redundant Phi (word) div16u::divisor#1 (word) div16u::divisor#0 +Redundant Phi (word) rem16u#18 (word) rem16u#20 +Redundant Phi (word) rem16u#11 (word) rem16u#1 Redundant Phi (signed byte) mul8su::a#1 (signed byte) mul8su::a#0 Redundant Phi (byte) mul8su::b#1 (byte) mul8su::b#0 Redundant Phi (word) sin8s::x#3 (word) sin8s::x#2 @@ -2063,16 +2209,20 @@ Redundant Phi (byte*) print_line_cursor#15 (byte*) print_screen#1 Redundant Phi (byte*) print_screen#4 (byte*) print_line_cursor#0 Redundant Phi (byte*) print_line_cursor#24 (byte*) print_line_cursor#0 Redundant Phi (byte*) print_char_cursor#101 (byte*) print_line_cursor#0 +Redundant Phi (word) rem16u#19 (word) rem16u#0 Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#15 Redundant Phi (byte*) print_char_cursor#22 (byte*) print_line_cursor#15 +Redundant Phi (word) rem16u#13 (word) rem16u#16 Redundant Phi (byte*) print_char_cursor#23 (byte*) print_char_cursor#44 Redundant Phi (byte*) print_line_cursor#17 (byte*) print_line_cursor#10 Redundant Phi (byte) sin8u_table::max#1 (byte) sin8u_table::max#0 Redundant Phi (byte) sin8u_table::min#1 (byte) sin8u_table::min#0 Redundant Phi (word) sin8u_table::tabsize#1 (word) sin8u_table::tabsize#0 +Redundant Phi (word) rem16u#20 (word) rem16u#19 Redundant Phi (byte*) print_char_cursor#102 (byte*) print_char_cursor#22 Redundant Phi (byte*) print_line_cursor#25 (byte*) print_line_cursor#16 Redundant Phi (byte*) sin8u_table::sintab#11 (byte*) sin8u_table::sintab#0 +Redundant Phi (word) rem16u#15 (word) rem16u#11 Redundant Phi (byte*) print_char_cursor#25 (byte*) print_char_cursor#2 Redundant Phi (byte*) print_char_cursor#26 (byte*) print_char_cursor#13 Redundant Phi (byte*) print_char_cursor#27 (byte*) print_char_cursor#2 @@ -2089,6 +2239,7 @@ Redundant Phi (byte) sin8u_table::amplitude#10 (byte) sin8u_table::amplitude#0 Redundant Phi (byte) sin8u_table::mid#12 (byte) sin8u_table::mid#0 Redundant Phi (word) sin8u_table::step#10 (word) sin8u_table::step#0 Redundant Phi (word) sin8u_table::tabsize#10 (word) sin8u_table::tabsize#1 +Redundant Phi (word) rem16u#16 (word) rem16u#15 Redundant Phi (byte*) print_char_cursor#36 (byte*) print_char_cursor#2 Redundant Phi (byte*) print_char_cursor#37 (byte*) print_char_cursor#13 Redundant Phi (byte*) print_char_cursor#38 (byte*) print_char_cursor#2 @@ -2101,6 +2252,7 @@ Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#1 Redundant Phi (byte*) print_char_cursor#44 (byte*) print_line_cursor#1 Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#17 Redundant Phi (byte*) print_char_cursor#46 (byte*) print_char_cursor#23 +Redundant Phi (word) rem16u#17 (word) rem16u#13 Successful SSA optimization Pass2RedundantPhiElimination Redundant Phi (byte*) print_char_cursor#93 (byte*) print_char_cursor#18 Redundant Phi (byte*) print_char_cursor#98 (byte*) print_char_cursor#18 @@ -2124,10 +2276,17 @@ Simple Condition (bool~) print_sbyte::$0 if((signed byte) print_sbyte::b#1<(byte Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 Simple Condition (bool~) sin8u_table::$33 if((word) sin8u_table::i#1<(word) sin8u_table::tabsize#0) goto sin8u_table::@1 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) rem8u#0 = 0 +Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const word) divr16u::rem#3 = 0 +Constant (const signed byte) rem8s#0 = 0 +Constant (const signed word) rem16s#0 = 0 Constant (const word) mul8u::res#0 = 0 +Constant (const dword) PI2_u4f28#0 = 1686629713 +Constant (const dword) PI_u4f28#0 = 843314857 +Constant (const dword) PI_HALF_u4f28#0 = 421657428 Constant (const word) PI2_u4f12#0 = 25736 Constant (const word) PI_u4f12#0 = 12868 Constant (const word) PI_HALF_u4f12#0 = 6434 @@ -2188,6 +2347,7 @@ Constant (const byte) sin8u_table::mid#0 = ((byte))sin8u_table::$4 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) print_byte::b#6 = sin8u_table::mid#0 Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars Eliminating Noop Cast (byte) mul8u::a#1 ← ((byte)) (signed byte) mul8su::a#0 Eliminating Noop Cast (signed word) mul8su::return#0 ← ((signed word)) (word) mul8su::m#2 Eliminating Noop Cast (signed byte) sin8s::sinx#0 ← ((signed byte)) (byte) sin8s::usinx#4 @@ -2197,7 +2357,9 @@ Eliminating Noop Cast (byte) print_byte::b#0 ← ((byte)) (signed byte) print_sb Successful SSA optimization Pass2NopCastElimination Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++ Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16 -Culled Empty Block (label) divr16u::@6 +Culled Empty Block (label) @2 +Culled Empty Block (label) @5 +Culled Empty Block (label) @6 Culled Empty Block (label) mul8u::@3 Culled Empty Block (label) @13 Culled Empty Block (label) @20 @@ -2327,9 +2489,9 @@ Calls in [print_sword] to print_char:114 print_word:121 Calls in [print_word] to print_byte:129 print_byte:133 Calls in [print_sbyte] to print_char:137 print_byte:142 print_char:145 Calls in [mul8su] to mul8u:149 -Calls in [sin8s] to mulu8_sel:192 mulu8_sel:199 mulu8_sel:204 mulu8_sel:212 mulu8_sel:219 -Calls in [mulu8_sel] to mul8u:242 -Calls in [div16u] to divr16u:249 +Calls in [sin8s] to mulu8_sel:193 mulu8_sel:200 mulu8_sel:205 mulu8_sel:213 mulu8_sel:220 +Calls in [mulu8_sel] to mul8u:243 +Calls in [div16u] to divr16u:250 Created 41 initial phi equivalence classes Coalesced [15] print_word::w#7 ← print_word::w#1 @@ -2379,44 +2541,44 @@ Coalesced [138] print_sbyte::b#9 ← print_sbyte::b#1 Coalesced (already) [141] print_char_cursor#112 ← print_char_cursor#18 Coalesced (already) [144] print_char_cursor#122 ← print_char_cursor#2 Coalesced [147] print_sbyte::b#8 ← print_sbyte::b#0 -Coalesced [156] mul8su::m#4 ← mul8su::m#1 -Coalesced [159] mul8su::m#5 ← mul8su::m#0 -Coalesced [162] mul8u::a#10 ← mul8u::a#6 -Coalesced [163] mul8u::mb#6 ← mul8u::mb#0 -Coalesced [170] mul8u::res#9 ← mul8u::res#1 -Coalesced [174] mul8u::a#11 ← mul8u::a#0 -Coalesced [175] mul8u::res#7 ← mul8u::res#6 -Coalesced [176] mul8u::mb#7 ← mul8u::mb#1 -Coalesced (already) [177] mul8u::res#8 ← mul8u::res#2 -Coalesced [180] sin8s::x#9 ← sin8s::x#0 -Coalesced [184] sin8s::x#11 ← sin8s::x#1 -Coalesced [190] mulu8_sel::v1#10 ← mulu8_sel::v1#0 -Coalesced [191] mulu8_sel::v2#9 ← mulu8_sel::v2#0 -Coalesced [197] mulu8_sel::v1#6 ← mulu8_sel::v1#1 -Coalesced [198] mulu8_sel::v2#6 ← mulu8_sel::v2#1 -Coalesced [203] mulu8_sel::v1#7 ← mulu8_sel::v1#2 -Coalesced [210] mulu8_sel::v1#8 ← mulu8_sel::v1#3 -Coalesced [211] mulu8_sel::v2#7 ← mulu8_sel::v2#3 -Coalesced [217] mulu8_sel::v1#9 ← mulu8_sel::v1#4 -Coalesced [218] mulu8_sel::v2#8 ← mulu8_sel::v2#4 -Coalesced [226] sin8s::usinx#9 ← sin8s::usinx#2 -Coalesced [230] sin8s::return#6 ← sin8s::sinx#1 -Coalesced [234] sin8s::usinx#8 ← sin8s::usinx#1 -Coalesced [235] sin8s::x#10 ← sin8s::x#4 -Coalesced [236] sin8s::x#8 ← sin8s::x#2 -Coalesced [240] mul8u::b#3 ← mul8u::b#1 -Coalesced [241] mul8u::a#9 ← mul8u::a#2 -Coalesced [260] divr16u::rem#12 ← divr16u::rem#1 -Coalesced [267] divr16u::rem#14 ← divr16u::rem#2 -Coalesced [268] divr16u::return#6 ← divr16u::quotient#2 -Coalesced [273] divr16u::rem#10 ← divr16u::rem#9 -Coalesced [274] divr16u::dividend#8 ← divr16u::dividend#0 -Coalesced [275] divr16u::quotient#9 ← divr16u::return#0 -Coalesced [276] divr16u::i#7 ← divr16u::i#1 -Coalesced [277] divr16u::rem#13 ← divr16u::rem#5 -Coalesced [278] divr16u::return#5 ← divr16u::quotient#1 -Coalesced [279] divr16u::rem#11 ← divr16u::rem#0 -Coalesced [286] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [157] mul8su::m#4 ← mul8su::m#1 +Coalesced [160] mul8su::m#5 ← mul8su::m#0 +Coalesced [163] mul8u::a#10 ← mul8u::a#6 +Coalesced [164] mul8u::mb#6 ← mul8u::mb#0 +Coalesced [171] mul8u::res#9 ← mul8u::res#1 +Coalesced [175] mul8u::a#11 ← mul8u::a#0 +Coalesced [176] mul8u::res#7 ← mul8u::res#6 +Coalesced [177] mul8u::mb#7 ← mul8u::mb#1 +Coalesced (already) [178] mul8u::res#8 ← mul8u::res#2 +Coalesced [181] sin8s::x#9 ← sin8s::x#0 +Coalesced [185] sin8s::x#11 ← sin8s::x#1 +Coalesced [191] mulu8_sel::v1#10 ← mulu8_sel::v1#0 +Coalesced [192] mulu8_sel::v2#9 ← mulu8_sel::v2#0 +Coalesced [198] mulu8_sel::v1#6 ← mulu8_sel::v1#1 +Coalesced [199] mulu8_sel::v2#6 ← mulu8_sel::v2#1 +Coalesced [204] mulu8_sel::v1#7 ← mulu8_sel::v1#2 +Coalesced [211] mulu8_sel::v1#8 ← mulu8_sel::v1#3 +Coalesced [212] mulu8_sel::v2#7 ← mulu8_sel::v2#3 +Coalesced [218] mulu8_sel::v1#9 ← mulu8_sel::v1#4 +Coalesced [219] mulu8_sel::v2#8 ← mulu8_sel::v2#4 +Coalesced [227] sin8s::usinx#9 ← sin8s::usinx#2 +Coalesced [231] sin8s::return#6 ← sin8s::sinx#1 +Coalesced [235] sin8s::usinx#8 ← sin8s::usinx#1 +Coalesced [236] sin8s::x#10 ← sin8s::x#4 +Coalesced [237] sin8s::x#8 ← sin8s::x#2 +Coalesced [241] mul8u::b#3 ← mul8u::b#1 +Coalesced [242] mul8u::a#9 ← mul8u::a#2 +Coalesced [261] divr16u::rem#13 ← divr16u::rem#1 +Coalesced [268] divr16u::rem#15 ← divr16u::rem#2 +Coalesced [269] divr16u::return#6 ← divr16u::quotient#2 +Coalesced [275] divr16u::rem#11 ← divr16u::rem#10 +Coalesced [276] divr16u::dividend#8 ← divr16u::dividend#0 +Coalesced [277] divr16u::quotient#9 ← divr16u::return#0 +Coalesced [278] divr16u::i#7 ← divr16u::i#1 +Coalesced [279] divr16u::rem#14 ← divr16u::rem#5 +Coalesced [280] divr16u::return#5 ← divr16u::quotient#1 +Coalesced [281] divr16u::rem#12 ← divr16u::rem#0 +Coalesced [288] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 28 phi equivalence classes Culled Empty Block (label) sin8u_table::@26 Culled Empty Block (label) print_ln::@3 @@ -2705,199 +2867,206 @@ mul8su::@4: scope:[mul8su] from mul8su [121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1 to:mul8su::@2 mul8su::@2: scope:[mul8su] from mul8su::@4 - [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 - [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 - [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 + [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 + [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 + [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 + [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 to:mul8su::@1 mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@4 - [125] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) + [126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 ) to:mul8su::@return mul8su::@return: scope:[mul8su] from mul8su::@1 - [126] return + [127] return to:@return mul8u: scope:[mul8u] from mul8su mulu8_sel - [127] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) - [127] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) - [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [128] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 ) + [128] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 ) + [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [129] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [130] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [130] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [130] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [131] return + [132] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [136] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 sin8s: scope:[sin8s] from sin8u_table::@1 - [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 + [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 to:sin8s::@5 sin8s::@5: scope:[sin8s] from sin8s - [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 + [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 to:sin8s::@1 sin8s::@1: scope:[sin8s] from sin8s sin8s::@5 - [140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) - [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 + [141] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [141] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 ) + [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 to:sin8s::@6 sin8s::@6: scope:[sin8s] from sin8s::@1 - [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 + [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 to:sin8s::@2 sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6 - [143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) - [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 - [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 - [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 - [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 - [148] call mulu8_sel - [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + [144] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 ) + [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 + [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 + [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 + [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 + [149] call mulu8_sel + [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 to:sin8s::@10 sin8s::@10: scope:[sin8s] from sin8s::@2 - [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 - [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 - [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 - [153] call mulu8_sel - [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 + [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 + [154] call mulu8_sel + [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 to:sin8s::@11 sin8s::@11: scope:[sin8s] from sin8s::@10 - [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 - [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 - [157] call mulu8_sel - [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 + [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 + [158] call mulu8_sel + [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 to:sin8s::@12 sin8s::@12: scope:[sin8s] from sin8s::@11 - [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 - [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 - [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 - [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 - [163] call mulu8_sel - [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 + [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 + [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 + [164] call mulu8_sel + [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 to:sin8s::@13 sin8s::@13: scope:[sin8s] from sin8s::@12 - [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 - [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 - [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 - [168] call mulu8_sel - [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 + [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 + [169] call mulu8_sel + [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 to:sin8s::@14 sin8s::@14: scope:[sin8s] from sin8s::@13 - [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 - [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 - [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 + [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 + [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 to:sin8s::@7 sin8s::@7: scope:[sin8s] from sin8s::@14 - [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 + [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 to:sin8s::@3 sin8s::@3: scope:[sin8s] from sin8s::@14 sin8s::@7 - [175] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) - [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 + [176] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 ) + [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 to:sin8s::@8 sin8s::@8: scope:[sin8s] from sin8s::@3 - [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 + [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 sin8s::@4: scope:[sin8s] from sin8s::@18 sin8s::@8 - [178] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) + [179] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 ) to:sin8s::@return sin8s::@return: scope:[sin8s] from sin8s::@4 - [179] return + [180] return to:@return sin8s::@18: scope:[sin8s] from sin8s::@3 - [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 + [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 to:sin8s::@4 mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@2 - [181] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) - [181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) - [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 - [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 - [184] call mul8u - [185] (word) mul8u::return#3 ← (word) mul8u::res#2 + [182] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [182] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 ) + [182] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 ) + [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 + [185] call mul8u + [186] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mulu8_sel::@2 mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel - [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 - [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 - [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 + [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 + [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 to:mulu8_sel::@return mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2 - [189] return + [190] return to:@return div16u: scope:[div16u] from sin8u_table - [190] phi() - [191] call divr16u - [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + [191] phi() + [192] call divr16u + [193] (word) divr16u::return#2 ← (word) divr16u::return#0 to:div16u::@2 div16u::@2: scope:[div16u] from div16u - [193] (word) div16u::return#0 ← (word) divr16u::return#2 + [194] (word) div16u::return#0 ← (word) divr16u::return#2 to:div16u::@return div16u::@return: scope:[div16u] from div16u::@2 - [194] return + [195] return to:@return divr16u: scope:[divr16u] from div16u - [195] phi() + [196] phi() to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 - [196] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) - [196] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) - [196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) - [196] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#9 ) - [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 - [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 - [200] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 + [197] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) + [197] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) + [197] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 ) + [197] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 ) + [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 + [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 + [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 to:divr16u::@4 divr16u::@4: scope:[divr16u] from divr16u::@1 - [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 + [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 to:divr16u::@2 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 - [202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) - [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 - [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 + [203] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) + [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 to:divr16u::@5 divr16u::@5: scope:[divr16u] from divr16u::@2 - [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 - [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 + [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 + [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 to:divr16u::@3 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 - [208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) - [208] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) - [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 - [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + [209] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) + [209] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 ) + [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 + [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 + to:divr16u::@6 +divr16u::@6: scope:[divr16u] from divr16u::@3 + [212] (word) rem16u#1 ← (word) divr16u::rem#10 to:divr16u::@return -divr16u::@return: scope:[divr16u] from divr16u::@3 - [211] return +divr16u::@return: scope:[divr16u] from divr16u::@6 + [213] return to:@return print_cls: scope:[print_cls] from main - [212] phi() + [214] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [213] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [214] *((byte*) print_cls::sc#2) ← (byte) ' ' - [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [216] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [215] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [216] *((byte*) print_cls::sc#2) ← (byte) ' ' + [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [217] return + [219] return to:@return VARIABLE REGISTER WEIGHTS (word) PI2_u4f12 +(dword) PI2_u4f28 (word) PI_HALF_u4f12 +(dword) PI_HALF_u4f28 (word) PI_u4f12 +(dword) PI_u4f28 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (word) div16u::dividend (word) div16u::divisor @@ -2921,18 +3090,19 @@ VARIABLE REGISTER WEIGHTS (word) divr16u::rem (word) divr16u::rem#0 8.25 (word) divr16u::rem#1 22.0 +(word) divr16u::rem#10 11.666666666666666 (word) divr16u::rem#2 22.0 (word) divr16u::rem#4 22.0 (word) divr16u::rem#5 11.0 -(word) divr16u::rem#9 11.0 (word) divr16u::return -(word) divr16u::return#0 7.000000000000001 +(word) divr16u::return#0 5.833333333333333 (word) divr16u::return#2 4.0 (void()) main() (byte[20]) main::sintab (word) main::tabsize (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) (byte~) mul8su::$10 4.0 +(byte~) mul8su::$5 20.0 (byte~) mul8su::$6 4.0 (signed byte) mul8su::a (signed byte) mul8su::a#0 2.6 @@ -3046,6 +3216,11 @@ VARIABLE REGISTER WEIGHTS (word) print_word::w#2 22.0 (word) print_word::w#3 6.333333333333334 (word~) print_word::w#5 4.0 +(signed word) rem16s +(word) rem16u +(word) rem16u#1 20.0 +(signed byte) rem8s +(byte) rem8u (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$6 4.0 (byte) sin8s::DIV_6 @@ -3132,7 +3307,7 @@ Initial phi equivalence classes [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] [ mulu8_sel::select#5 ] -[ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] [ divr16u::dividend#2 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] @@ -3149,6 +3324,7 @@ Added variable sin8u_table::sinx_tr#0 to zero page equivalence class [ sin8u_tab Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ] +Added variable mul8su::$5 to zero page equivalence class [ mul8su::$5 ] Added variable mul8su::$6 to zero page equivalence class [ mul8su::$6 ] Added variable mul8su::$10 to zero page equivalence class [ mul8su::$10 ] Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] @@ -3174,6 +3350,7 @@ Added variable divr16u::return#2 to zero page equivalence class [ divr16u::retur Added variable div16u::return#0 to zero page equivalence class [ div16u::return#0 ] Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ] Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ] +Added variable rem16u#1 to zero page equivalence class [ rem16u#1 ] Complete equivalence classes [ sin8u_table::x#10 sin8u_table::x#1 ] [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] @@ -3198,7 +3375,7 @@ Complete equivalence classes [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] [ mulu8_sel::select#5 ] -[ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +[ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] [ divr16u::dividend#2 divr16u::dividend#0 ] [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] [ divr16u::i#2 divr16u::i#1 ] @@ -3215,6 +3392,7 @@ Complete equivalence classes [ print_byte::$0 ] [ print_byte::$2 ] [ mul8u::return#2 ] +[ mul8su::$5 ] [ mul8su::$6 ] [ mul8su::$10 ] [ mul8u::$1 ] @@ -3240,6 +3418,7 @@ Complete equivalence classes [ div16u::return#0 ] [ divr16u::$1 ] [ divr16u::$2 ] +[ rem16u#1 ] Allocated zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] Allocated zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] Allocated zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] @@ -3263,7 +3442,7 @@ Allocated zp ZP_BYTE:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] Allocated zp ZP_BYTE:34 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] Allocated zp ZP_BYTE:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] Allocated zp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Allocated zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] +Allocated zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] Allocated zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] Allocated zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] Allocated zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] @@ -3280,31 +3459,33 @@ Allocated zp ZP_BYTE:58 [ sin8u_table::sinx_tr#0 ] Allocated zp ZP_BYTE:59 [ print_byte::$0 ] Allocated zp ZP_BYTE:60 [ print_byte::$2 ] Allocated zp ZP_WORD:61 [ mul8u::return#2 ] -Allocated zp ZP_BYTE:63 [ mul8su::$6 ] -Allocated zp ZP_BYTE:64 [ mul8su::$10 ] -Allocated zp ZP_BYTE:65 [ mul8u::$1 ] -Allocated zp ZP_WORD:66 [ sin8s::$6 ] -Allocated zp ZP_BYTE:68 [ sin8s::x1#0 ] -Allocated zp ZP_BYTE:69 [ mulu8_sel::return#0 ] -Allocated zp ZP_BYTE:70 [ sin8s::x2#0 ] -Allocated zp ZP_BYTE:71 [ mulu8_sel::return#1 ] -Allocated zp ZP_BYTE:72 [ sin8s::x3#0 ] -Allocated zp ZP_BYTE:73 [ mulu8_sel::return#2 ] -Allocated zp ZP_BYTE:74 [ sin8s::x3_6#0 ] -Allocated zp ZP_BYTE:75 [ sin8s::usinx#0 ] -Allocated zp ZP_BYTE:76 [ mulu8_sel::return#10 ] -Allocated zp ZP_BYTE:77 [ sin8s::x4#0 ] -Allocated zp ZP_BYTE:78 [ mulu8_sel::return#11 ] -Allocated zp ZP_BYTE:79 [ sin8s::x5#0 ] -Allocated zp ZP_BYTE:80 [ sin8s::x5_128#0 ] -Allocated zp ZP_WORD:81 [ mul8u::return#3 ] -Allocated zp ZP_WORD:83 [ mulu8_sel::$0 ] -Allocated zp ZP_WORD:85 [ mulu8_sel::$1 ] -Allocated zp ZP_BYTE:87 [ mulu8_sel::return#12 ] -Allocated zp ZP_WORD:88 [ divr16u::return#2 ] -Allocated zp ZP_WORD:90 [ div16u::return#0 ] -Allocated zp ZP_BYTE:92 [ divr16u::$1 ] -Allocated zp ZP_BYTE:93 [ divr16u::$2 ] +Allocated zp ZP_BYTE:63 [ mul8su::$5 ] +Allocated zp ZP_BYTE:64 [ mul8su::$6 ] +Allocated zp ZP_BYTE:65 [ mul8su::$10 ] +Allocated zp ZP_BYTE:66 [ mul8u::$1 ] +Allocated zp ZP_WORD:67 [ sin8s::$6 ] +Allocated zp ZP_BYTE:69 [ sin8s::x1#0 ] +Allocated zp ZP_BYTE:70 [ mulu8_sel::return#0 ] +Allocated zp ZP_BYTE:71 [ sin8s::x2#0 ] +Allocated zp ZP_BYTE:72 [ mulu8_sel::return#1 ] +Allocated zp ZP_BYTE:73 [ sin8s::x3#0 ] +Allocated zp ZP_BYTE:74 [ mulu8_sel::return#2 ] +Allocated zp ZP_BYTE:75 [ sin8s::x3_6#0 ] +Allocated zp ZP_BYTE:76 [ sin8s::usinx#0 ] +Allocated zp ZP_BYTE:77 [ mulu8_sel::return#10 ] +Allocated zp ZP_BYTE:78 [ sin8s::x4#0 ] +Allocated zp ZP_BYTE:79 [ mulu8_sel::return#11 ] +Allocated zp ZP_BYTE:80 [ sin8s::x5#0 ] +Allocated zp ZP_BYTE:81 [ sin8s::x5_128#0 ] +Allocated zp ZP_WORD:82 [ mul8u::return#3 ] +Allocated zp ZP_WORD:84 [ mulu8_sel::$0 ] +Allocated zp ZP_WORD:86 [ mulu8_sel::$1 ] +Allocated zp ZP_BYTE:88 [ mulu8_sel::return#12 ] +Allocated zp ZP_WORD:89 [ divr16u::return#2 ] +Allocated zp ZP_WORD:91 [ div16u::return#0 ] +Allocated zp ZP_BYTE:93 [ divr16u::$1 ] +Allocated zp ZP_BYTE:94 [ divr16u::$2 ] +Allocated zp ZP_WORD:95 [ rem16u#1 ] INITIAL ASM //SEG0 Basic Upstart @@ -3315,6 +3496,7 @@ INITIAL ASM .const PI2_u4f12 = $6488 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 + .label rem16u = $5f .label print_char_cursor = $10 .label print_line_cursor = 8 //SEG2 @begin @@ -3337,7 +3519,7 @@ bend: main: { .label tabsize = $14 //SEG10 [5] call print_cls - //SEG11 [212] phi from main to print_cls [phi:main->print_cls] + //SEG11 [214] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -3372,7 +3554,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG19 [10] call div16u - //SEG20 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG20 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] div16u_from_sin8u_table: jsr div16u //SEG21 [11] (word) div16u::return#2 ← (word) div16u::return#0 -- vwuz1=vwuz2 @@ -4062,8 +4244,9 @@ print_sbyte: { //SEG264 mul8su mul8su: { .const b = sin8u_table.amplitude+1 - .label _6 = $3f - .label _10 = $40 + .label _5 = $3f + .label _6 = $40 + .label _10 = $41 .label m = $15 .label a = $34 .label return = $35 @@ -4071,10 +4254,10 @@ mul8su: { lda a sta mul8u.a //SEG266 [118] call mul8u - //SEG267 [127] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG267 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //SEG268 [127] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy - //SEG269 [127] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuz1=vbuc1 + //SEG268 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG269 [128] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuz1=vbuc1 lda #b sta mul8u.b jsr mul8u @@ -4098,79 +4281,82 @@ mul8su: { jmp b2 //SEG274 mul8su::@2 b2: - //SEG275 [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 + //SEG275 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 + lda m+1 + sta _5 + //SEG276 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _6 - //SEG276 [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 + //SEG277 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuz1=vbuz2_minus_vbuc1 lda _6 sec sbc #b sta _10 - //SEG277 [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG278 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuz2 lda _10 sta m+1 - //SEG278 [125] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG279 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] b1_from_b2: b1_from_b4: - //SEG279 [125] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG280 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy jmp b1 - //SEG280 mul8su::@1 + //SEG281 mul8su::@1 b1: jmp breturn - //SEG281 mul8su::@return + //SEG282 mul8su::@return breturn: - //SEG282 [126] return + //SEG283 [127] return rts } -//SEG283 mul8u +//SEG284 mul8u mul8u: { - .label _1 = $41 + .label _1 = $42 .label mb = $1b .label a = $18 .label res = $19 .label return = $3d .label b = $17 - .label return_3 = $51 - //SEG284 [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 + .label return_3 = $52 + //SEG285 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG285 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG286 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG286 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG287 [129] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG287 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG288 [130] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG288 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG289 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG289 mul8u::@1 + //SEG290 mul8u::@1 b1: - //SEG290 [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG291 [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG291 mul8u::@return + //SEG292 mul8u::@return breturn: - //SEG292 [131] return + //SEG293 [132] return rts - //SEG293 mul8u::@2 + //SEG294 mul8u::@2 b2: - //SEG294 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG295 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG295 [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG296 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG296 mul8u::@7 + //SEG297 mul8u::@7 b7: - //SEG297 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG298 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -4178,38 +4364,38 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG298 [135] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG299 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG299 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG300 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG300 mul8u::@4 + //SEG301 mul8u::@4 b4: - //SEG301 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG302 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG302 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG303 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG303 [129] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG304 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG304 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG305 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG306 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG305 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG306 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG307 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG307 sin8s +//SEG308 sin8s sin8s: { .const DIV_6 = $2b - .label _6 = $42 + .label _6 = $43 .label x = $1e - .label x1 = $44 - .label x2 = $46 - .label x3 = $48 - .label x3_6 = $4a - .label usinx = $4b - .label x4 = $4d - .label x5 = $4f - .label x5_128 = $50 + .label x1 = $45 + .label x2 = $47 + .label x3 = $49 + .label x3_6 = $4b + .label usinx = $4c + .label x4 = $4e + .label x5 = $50 + .label x5_128 = $51 .label usinx_1 = $20 .label usinx_2 = $20 .label return = $21 @@ -4217,7 +4403,7 @@ sin8s: { .label return_2 = $32 .label usinx_4 = $20 .label isUpper = $1d - //SEG308 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -4227,9 +4413,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG309 sin8s::@5 + //SEG310 sin8s::@5 b5: - //SEG310 [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG311 [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG311 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG312 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG312 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG313 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG313 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG314 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG314 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG315 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG315 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG316 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG317 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG317 sin8s::@1 + //SEG318 sin8s::@1 b1: - //SEG318 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG319 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -4263,9 +4449,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG319 sin8s::@6 + //SEG320 sin8s::@6 b6: - //SEG320 [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG321 [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG321 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG322 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG322 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG323 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG323 sin8s::@2 + //SEG324 sin8s::@2 b2: - //SEG324 [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 + //SEG325 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz2_rol_3 lda x asl sta _6 @@ -4291,232 +4477,232 @@ sin8s: { rol _6+1 asl _6 rol _6+1 - //SEG325 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG326 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG326 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG327 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v1 - //SEG327 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG328 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG328 [148] call mulu8_sel - //SEG329 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG329 [149] call mulu8_sel + //SEG330 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG330 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG331 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG331 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG332 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG332 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG333 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG333 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG334 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return jmp b10 - //SEG334 sin8s::@10 + //SEG335 sin8s::@10 b10: - //SEG335 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 + //SEG336 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 -- vbuz1=vbuz2 lda mulu8_sel.return sta x2 - //SEG336 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 + //SEG337 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuz1=vbuz2 lda x2 sta mulu8_sel.v1 - //SEG337 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG338 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG338 [153] call mulu8_sel - //SEG339 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG339 [154] call mulu8_sel + //SEG340 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG340 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG341 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG341 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG342 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG342 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG343 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG343 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG344 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_1 jmp b11 - //SEG344 sin8s::@11 + //SEG345 sin8s::@11 b11: - //SEG345 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 + //SEG346 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuz2 lda mulu8_sel.return_1 sta x3 - //SEG346 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG347 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG347 [157] call mulu8_sel - //SEG348 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG348 [158] call mulu8_sel + //SEG349 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG349 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG350 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG350 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuz1=vbuc1 + //SEG351 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuz1=vbuc1 lda #DIV_6 sta mulu8_sel.v2 - //SEG351 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG352 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG352 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG353 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_2 jmp b12 - //SEG353 sin8s::@12 + //SEG354 sin8s::@12 b12: - //SEG354 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 + //SEG355 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 -- vbuz1=vbuz2 lda mulu8_sel.return_2 sta x3_6 - //SEG355 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG356 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuz3 lda x1 sec sbc x3_6 sta usinx - //SEG356 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 + //SEG357 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuz1=vbuz2 lda x3 sta mulu8_sel.v1 - //SEG357 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG358 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG358 [163] call mulu8_sel - //SEG359 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG359 [164] call mulu8_sel + //SEG360 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG360 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG361 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG361 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG362 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG362 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG363 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG363 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG364 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_10 jmp b13 - //SEG364 sin8s::@13 + //SEG365 sin8s::@13 b13: - //SEG365 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 + //SEG366 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 -- vbuz1=vbuz2 lda mulu8_sel.return_10 sta x4 - //SEG366 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 + //SEG367 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuz1=vbuz2 lda x4 sta mulu8_sel.v1 - //SEG367 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 + //SEG368 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuz1=vbuz2 lda x1 sta mulu8_sel.v2 - //SEG368 [168] call mulu8_sel - //SEG369 [181] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG369 [169] call mulu8_sel + //SEG370 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG370 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG371 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG371 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG372 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG372 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG373 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG373 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 + //SEG374 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 -- vbuz1=vbuz2 lda mulu8_sel.return_12 sta mulu8_sel.return_11 jmp b14 - //SEG374 sin8s::@14 + //SEG375 sin8s::@14 b14: - //SEG375 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 + //SEG376 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 -- vbuz1=vbuz2 lda mulu8_sel.return_11 sta x5 - //SEG376 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG377 [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda x5 lsr lsr lsr lsr sta x5_128 - //SEG377 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 + //SEG378 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuz1=vbuz2_plus_vbuz3 lda usinx clc adc x5_128 sta usinx_1 - //SEG378 [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 + //SEG379 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuz1_lt_vbuc1_then_la1 lda usinx_1 cmp #$80 bcc b3_from_b14 jmp b7 - //SEG379 sin8s::@7 + //SEG380 sin8s::@7 b7: - //SEG380 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 + //SEG381 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuz1=_dec_vbuz1 dec usinx_2 - //SEG381 [175] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG382 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG382 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG383 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG383 sin8s::@3 + //SEG384 sin8s::@3 b3: - //SEG384 [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG385 [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b18 jmp b8 - //SEG385 sin8s::@8 + //SEG386 sin8s::@8 b8: - //SEG386 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 + //SEG387 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsz1=_neg_vbsz2 lda usinx_4 eor #$ff clc adc #1 sta sinx - //SEG387 [178] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG388 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG388 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG389 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG389 sin8s::@4 + //SEG390 sin8s::@4 b4: jmp breturn - //SEG390 sin8s::@return + //SEG391 sin8s::@return breturn: - //SEG391 [179] return + //SEG392 [180] return rts - //SEG392 sin8s::@18 + //SEG393 sin8s::@18 b18: - //SEG393 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 + //SEG394 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsz1=vbsz2 lda usinx_4 sta return jmp b4_from_b18 } -//SEG394 mulu8_sel +//SEG395 mulu8_sel mulu8_sel: { - .label _0 = $53 - .label _1 = $55 + .label _0 = $54 + .label _1 = $56 .label v1 = $22 .label v2 = $23 - .label return = $45 - .label return_1 = $47 - .label return_2 = $49 - .label return_10 = $4c - .label return_11 = $4e + .label return = $46 + .label return_1 = $48 + .label return_2 = $4a + .label return_10 = $4d + .label return_11 = $4f .label select = $24 - .label return_12 = $57 - //SEG395 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 + .label return_12 = $58 + //SEG396 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 -- vbuz1=vbuz2 lda v1 sta mul8u.a - //SEG396 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 + //SEG397 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuz1=vbuz2 lda v2 sta mul8u.b - //SEG397 [184] call mul8u - //SEG398 [127] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG398 [185] call mul8u + //SEG399 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //SEG399 [127] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG400 [127] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy + //SEG400 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG401 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG401 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG402 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b2 - //SEG402 mulu8_sel::@2 + //SEG403 mulu8_sel::@2 b2: - //SEG403 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG404 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta _0 lda mul8u.return_3+1 sta _0+1 - //SEG404 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 + //SEG405 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz2_rol_vbuz3 lda _0 sta _1 lda _0+1 @@ -4529,117 +4715,117 @@ mulu8_sel: { dey bne !- !e: - //SEG405 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 + //SEG406 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuz1=_hi_vwuz2 lda _1+1 sta return_12 jmp breturn - //SEG406 mulu8_sel::@return + //SEG407 mulu8_sel::@return breturn: - //SEG407 [189] return + //SEG408 [190] return rts } -//SEG408 div16u +//SEG409 div16u div16u: { - .label return = $5a + .label return = $5b .label return_2 = $2e - //SEG409 [191] call divr16u - //SEG410 [195] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG410 [192] call divr16u + //SEG411 [196] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG411 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 + //SEG412 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 jmp b2 - //SEG412 div16u::@2 + //SEG413 div16u::@2 b2: - //SEG413 [193] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 + //SEG414 [194] (word) div16u::return#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2 lda divr16u.return_2 sta return lda divr16u.return_2+1 sta return+1 jmp breturn - //SEG414 div16u::@return + //SEG415 div16u::@return breturn: - //SEG415 [194] return + //SEG416 [195] return rts } -//SEG416 divr16u +//SEG417 divr16u divr16u: { - .label _1 = $5c - .label _2 = $5d + .label _1 = $5d + .label _2 = $5e .label rem = $25 .label dividend = $27 .label quotient = $29 .label i = $2b .label return = $29 - .label return_2 = $58 - //SEG417 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + .label return_2 = $59 + //SEG418 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG418 [196] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 + //SEG419 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG419 [196] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG420 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG420 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG421 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG421 [196] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG422 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #<0 sta rem lda #>0 sta rem+1 jmp b1 - //SEG422 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG423 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG423 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG424 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG425 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG426 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG424 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG425 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG426 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG427 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG427 divr16u::@1 + //SEG428 divr16u::@1 b1: - //SEG428 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG429 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG429 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 + //SEG430 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2 lda dividend+1 sta _1 - //SEG430 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 + //SEG431 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1 lda #$80 and _1 sta _2 - //SEG431 [200] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 + //SEG432 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1 lda _2 cmp #0 beq b2_from_b1 jmp b4 - //SEG432 divr16u::@4 + //SEG433 divr16u::@4 b4: - //SEG433 [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG434 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG434 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG435 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG435 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG436 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG436 divr16u::@2 + //SEG437 divr16u::@2 b2: - //SEG437 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG438 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG438 [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG439 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG440 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3_from_b2 @@ -4649,14 +4835,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG440 divr16u::@5 + //SEG441 divr16u::@5 b5: - //SEG441 [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG442 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG442 [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG443 [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.tabsize sta rem+1 - //SEG443 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG444 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG444 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG445 [208] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG445 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG446 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG446 divr16u::@3 + //SEG447 divr16u::@3 b3: - //SEG447 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 + //SEG448 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG448 [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG449 [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b3 + jmp b6 + //SEG450 divr16u::@6 + b6: + //SEG451 [212] (word) rem16u#1 ← (word) divr16u::rem#10 -- vwuz1=vwuz2 + lda rem + sta rem16u + lda rem+1 + sta rem16u+1 jmp breturn - //SEG449 divr16u::@return + //SEG452 divr16u::@return breturn: - //SEG450 [211] return + //SEG453 [213] return rts } -//SEG451 print_cls +//SEG454 print_cls print_cls: { .label sc = $2c - //SEG452 [213] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG455 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG453 [213] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG456 [215] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG454 [213] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG457 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG455 [213] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG458 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG456 print_cls::@1 + //SEG459 print_cls::@1 b1: - //SEG457 [214] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG460 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG458 [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG461 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG459 [216] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG462 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -4718,9 +4912,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG460 print_cls::@return + //SEG463 print_cls::@return breturn: - //SEG461 [217] return + //SEG464 [219] return rts } print_hextab: .text "0123456789abcdef" @@ -4763,41 +4957,43 @@ Statement [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte:: Statement [119] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ mul8su::a#0 ] Statement [120] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a -Statement [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a -Statement [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 [ mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 ] ) always clobbers reg byte a +Statement [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a +Statement [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a +Statement [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ sin8s::isUpper#10 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:68 [ sin8s::x1#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ sin8s::x1#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ sin8s::x3#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:75 [ sin8s::usinx#0 ] -Statement [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a -Statement [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a -Statement [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [185] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a -Statement [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [193] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ sin8s::x3#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:76 [ sin8s::usinx#0 ] +Statement [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a +Statement [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a +Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a +Statement [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a +Statement [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a +Statement [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [186] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a +Statement [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Statement [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a +Statement [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [193] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [194] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] -Statement [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [214] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [216] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [212] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::return#0 ] ) always clobbers reg byte a +Statement [216] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [11] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 ] ( main:2::sin8u_table:7 [ div16u::return#2 ] ) always clobbers reg byte a Statement [12] (word) sin8u_table::step#0 ← (word) div16u::return#2 [ sin8u_table::step#0 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 ] ) always clobbers reg byte a Statement [14] (word) print_word::w#1 ← (word) sin8u_table::step#0 [ sin8u_table::step#0 print_word::w#1 print_char_cursor#2 ] ( main:2::sin8u_table:7 [ sin8u_table::step#0 print_word::w#1 print_char_cursor#2 ] ) always clobbers reg byte a @@ -4826,34 +5022,36 @@ Statement [104] (byte) print_byte::b#2 ← < (word) print_word::w#3 [ print_char Statement [116] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#1 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::sin8u_table:7::print_sbyte:54 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a Statement [119] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8su::a#0 mul8u::return#2 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::return#2 ] ) always clobbers reg byte a Statement [120] (word) mul8su::m#0 ← (word) mul8u::return#2 [ mul8su::a#0 mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8su::m#0 ] ) always clobbers reg byte a -Statement [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a -Statement [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a -Statement [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a -Statement [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:148::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168::mul8u:184 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a -Statement [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a -Statement [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a -Statement [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a -Statement [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a -Statement [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a -Statement [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a -Statement [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a -Statement [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a -Statement [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a -Statement [185] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a -Statement [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a -Statement [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a -Statement [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:148 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:153 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:157 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:163 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:168 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a -Statement [192] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a -Statement [193] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a -Statement [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a -Statement [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a -Statement [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a -Statement [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a -Statement [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:191 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a -Statement [214] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [216] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 [ mul8su::m#0 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 ] ) always clobbers reg byte a +Statement [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 [ mul8su::m#0 mul8su::$6 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$6 ] ) always clobbers reg byte a +Statement [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 [ mul8su::m#0 mul8su::$10 ] ( main:2::sin8u_table:7::mul8su:40 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::m#0 mul8su::$10 ] ) always clobbers reg byte a +Statement [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::sin8u_table:7::mul8su:40::mul8u:118 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 sin8u_table::sinx#0 print_line_cursor#1 mul8su::a#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:149::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169::mul8u:185 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 [ sin8s::x#2 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#2 ] ) always clobbers reg byte a +Statement [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 [ sin8s::x#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#0 ] ) always clobbers reg byte a +Statement [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 [ sin8s::x#4 sin8s::isUpper#10 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::x#4 sin8s::isUpper#10 ] ) always clobbers reg byte a +Statement [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 [ sin8s::isUpper#10 sin8s::x#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x#1 ] ) always clobbers reg byte a +Statement [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin8s::isUpper#10 sin8s::$6 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::$6 ] ) always clobbers reg byte a +Statement [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 [ sin8s::isUpper#10 sin8s::x1#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 ] ) always clobbers reg byte a +Statement [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 [ sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 sin8s::usinx#0 ] ) always clobbers reg byte a +Statement [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 sin8s::x5_128#0 ] ) always clobbers reg byte a +Statement [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 [ sin8s::isUpper#10 sin8s::usinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#1 ] ) always clobbers reg byte a +Statement [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 [ sin8s::sinx#1 ] ( main:2::sin8u_table:7::sin8s:36 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::sinx#1 ] ) always clobbers reg byte a +Statement [186] (word) mul8u::return#3 ← (word) mul8u::res#2 [ mulu8_sel::select#5 mul8u::return#3 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mul8u::return#3 ] ) always clobbers reg byte a +Statement [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 [ mulu8_sel::select#5 mulu8_sel::$0 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::select#5 mulu8_sel::$0 ] ) always clobbers reg byte a +Statement [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 [ mulu8_sel::$1 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::$1 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::$1 ] ) always clobbers reg byte a +Statement [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 [ mulu8_sel::return#12 ] ( main:2::sin8u_table:7::sin8s:36::mulu8_sel:149 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:154 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:158 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::x3#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:164 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::x1#0 sin8s::usinx#0 mulu8_sel::return#12 ] main:2::sin8u_table:7::sin8s:36::mulu8_sel:169 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::sintab#2 sin8u_table::i#10 print_line_cursor#1 sin8s::isUpper#10 sin8s::usinx#0 mulu8_sel::return#12 ] ) always clobbers reg byte a +Statement [193] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 ] ( main:2::sin8u_table:7::div16u:10 [ divr16u::return#2 ] ) always clobbers reg byte a +Statement [194] (word) div16u::return#0 ← (word) divr16u::return#2 [ div16u::return#0 ] ( main:2::sin8u_table:7::div16u:10 [ div16u::return#0 ] ) always clobbers reg byte a +Statement [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a +Statement [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a +Statement [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a +Statement [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a +Statement [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a +Statement [212] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 ] ( main:2::sin8u_table:7::div16u:10::divr16u:192 [ divr16u::return#0 ] ) always clobbers reg byte a +Statement [216] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] : zp ZP_WORD:2 , Potential registers zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] : zp ZP_WORD:6 , @@ -4877,7 +5075,7 @@ Potential registers zp ZP_BYTE:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx# Potential registers zp ZP_BYTE:34 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:36 [ mulu8_sel::select#5 ] : zp ZP_BYTE:36 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:37 , +Potential registers zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:37 , Potential registers zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] : zp ZP_WORD:39 , Potential registers zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:41 , Potential registers zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:43 , reg byte x , reg byte y , @@ -4894,120 +5092,126 @@ Potential registers zp ZP_BYTE:58 [ sin8u_table::sinx_tr#0 ] : zp ZP_BYTE:58 , r Potential registers zp ZP_BYTE:59 [ print_byte::$0 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:60 [ print_byte::$2 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:61 [ mul8u::return#2 ] : zp ZP_WORD:61 , -Potential registers zp ZP_BYTE:63 [ mul8su::$6 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:64 [ mul8su::$10 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:65 [ mul8u::$1 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:66 [ sin8s::$6 ] : zp ZP_WORD:66 , -Potential registers zp ZP_BYTE:68 [ sin8s::x1#0 ] : zp ZP_BYTE:68 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:69 [ mulu8_sel::return#0 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ sin8s::x2#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:71 [ mulu8_sel::return#1 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:72 [ sin8s::x3#0 ] : zp ZP_BYTE:72 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:73 [ mulu8_sel::return#2 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:74 [ sin8s::x3_6#0 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:75 [ sin8s::usinx#0 ] : zp ZP_BYTE:75 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:76 [ mulu8_sel::return#10 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ sin8s::x4#0 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ mulu8_sel::return#11 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:79 [ sin8s::x5#0 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:80 [ sin8s::x5_128#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:81 [ mul8u::return#3 ] : zp ZP_WORD:81 , -Potential registers zp ZP_WORD:83 [ mulu8_sel::$0 ] : zp ZP_WORD:83 , -Potential registers zp ZP_WORD:85 [ mulu8_sel::$1 ] : zp ZP_WORD:85 , -Potential registers zp ZP_BYTE:87 [ mulu8_sel::return#12 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:88 [ divr16u::return#2 ] : zp ZP_WORD:88 , -Potential registers zp ZP_WORD:90 [ div16u::return#0 ] : zp ZP_WORD:90 , -Potential registers zp ZP_BYTE:92 [ divr16u::$1 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ divr16u::$2 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:63 [ mul8su::$5 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:64 [ mul8su::$6 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ mul8su::$10 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:66 [ mul8u::$1 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:67 [ sin8s::$6 ] : zp ZP_WORD:67 , +Potential registers zp ZP_BYTE:69 [ sin8s::x1#0 ] : zp ZP_BYTE:69 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:70 [ mulu8_sel::return#0 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:71 [ sin8s::x2#0 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:72 [ mulu8_sel::return#1 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ sin8s::x3#0 ] : zp ZP_BYTE:73 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ mulu8_sel::return#2 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:75 [ sin8s::x3_6#0 ] : zp ZP_BYTE:75 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:76 [ sin8s::usinx#0 ] : zp ZP_BYTE:76 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:77 [ mulu8_sel::return#10 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:78 [ sin8s::x4#0 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:79 [ mulu8_sel::return#11 ] : zp ZP_BYTE:79 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:80 [ sin8s::x5#0 ] : zp ZP_BYTE:80 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:81 [ sin8s::x5_128#0 ] : zp ZP_BYTE:81 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:82 [ mul8u::return#3 ] : zp ZP_WORD:82 , +Potential registers zp ZP_WORD:84 [ mulu8_sel::$0 ] : zp ZP_WORD:84 , +Potential registers zp ZP_WORD:86 [ mulu8_sel::$1 ] : zp ZP_WORD:86 , +Potential registers zp ZP_BYTE:88 [ mulu8_sel::return#12 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:89 [ divr16u::return#2 ] : zp ZP_WORD:89 , +Potential registers zp ZP_WORD:91 [ div16u::return#0 ] : zp ZP_WORD:91 , +Potential registers zp ZP_BYTE:93 [ divr16u::$1 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ divr16u::$2 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:95 [ rem16u#1 ] : zp ZP_WORD:95 , REGISTER UPLIFT SCOPES -Uplift Scope [mul8u] 346.86: zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp ZP_BYTE:65 [ mul8u::$1 ] 177.67: zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 8: zp ZP_BYTE:23 [ mul8u::b#2 mul8u::b#1 ] 4: zp ZP_WORD:61 [ mul8u::return#2 ] 4: zp ZP_WORD:81 [ mul8u::return#3 ] -Uplift Scope [] 225.55: zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] 220.73: zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] +Uplift Scope [mul8u] 346.86: zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 249.57: zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 202: zp ZP_BYTE:66 [ mul8u::$1 ] 177.67: zp ZP_BYTE:24 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 8: zp ZP_BYTE:23 [ mul8u::b#2 mul8u::b#1 ] 4: zp ZP_WORD:61 [ mul8u::return#2 ] 4: zp ZP_WORD:82 [ mul8u::return#3 ] +Uplift Scope [] 225.55: zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] 220.73: zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] 20: zp ZP_WORD:95 [ rem16u#1 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplift Scope [divr16u] 96.25: zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 37.25: zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:92 [ divr16u::$1 ] 22: zp ZP_BYTE:93 [ divr16u::$2 ] 18.19: zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:88 [ divr16u::return#2 ] -Uplift Scope [sin8s] 27.5: zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] 22: zp ZP_BYTE:50 [ sin8s::return#2 ] 13: zp ZP_BYTE:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 10: zp ZP_BYTE:32 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp ZP_WORD:66 [ sin8s::$6 ] 4: zp ZP_BYTE:70 [ sin8s::x2#0 ] 4: zp ZP_BYTE:74 [ sin8s::x3_6#0 ] 4: zp ZP_BYTE:77 [ sin8s::x4#0 ] 4: zp ZP_BYTE:79 [ sin8s::x5#0 ] 4: zp ZP_BYTE:80 [ sin8s::x5_128#0 ] 1: zp ZP_BYTE:72 [ sin8s::x3#0 ] 0.64: zp ZP_BYTE:68 [ sin8s::x1#0 ] 0.33: zp ZP_BYTE:75 [ sin8s::usinx#0 ] 0.06: zp ZP_BYTE:29 [ sin8s::isUpper#10 ] -Uplift Scope [mulu8_sel] 24: zp ZP_BYTE:34 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 21: zp ZP_BYTE:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp ZP_BYTE:69 [ mulu8_sel::return#0 ] 4: zp ZP_BYTE:71 [ mulu8_sel::return#1 ] 4: zp ZP_BYTE:73 [ mulu8_sel::return#2 ] 4: zp ZP_BYTE:76 [ mulu8_sel::return#10 ] 4: zp ZP_BYTE:78 [ mulu8_sel::return#11 ] 4: zp ZP_WORD:83 [ mulu8_sel::$0 ] 4: zp ZP_WORD:85 [ mulu8_sel::$1 ] 1.71: zp ZP_BYTE:87 [ mulu8_sel::return#12 ] 0.33: zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Uplift Scope [divr16u] 96.92: zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 36.08: zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 22: zp ZP_BYTE:93 [ divr16u::$1 ] 22: zp ZP_BYTE:94 [ divr16u::$2 ] 18.19: zp ZP_BYTE:43 [ divr16u::i#2 divr16u::i#1 ] 7.46: zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] 4: zp ZP_WORD:89 [ divr16u::return#2 ] +Uplift Scope [sin8s] 27.5: zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] 22: zp ZP_BYTE:50 [ sin8s::return#2 ] 13: zp ZP_BYTE:33 [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] 10: zp ZP_BYTE:32 [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] 4: zp ZP_WORD:67 [ sin8s::$6 ] 4: zp ZP_BYTE:71 [ sin8s::x2#0 ] 4: zp ZP_BYTE:75 [ sin8s::x3_6#0 ] 4: zp ZP_BYTE:78 [ sin8s::x4#0 ] 4: zp ZP_BYTE:80 [ sin8s::x5#0 ] 4: zp ZP_BYTE:81 [ sin8s::x5_128#0 ] 1: zp ZP_BYTE:73 [ sin8s::x3#0 ] 0.64: zp ZP_BYTE:69 [ sin8s::x1#0 ] 0.33: zp ZP_BYTE:76 [ sin8s::usinx#0 ] 0.06: zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplift Scope [mulu8_sel] 24: zp ZP_BYTE:34 [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] 21: zp ZP_BYTE:35 [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] 4: zp ZP_BYTE:70 [ mulu8_sel::return#0 ] 4: zp ZP_BYTE:72 [ mulu8_sel::return#1 ] 4: zp ZP_BYTE:74 [ mulu8_sel::return#2 ] 4: zp ZP_BYTE:77 [ mulu8_sel::return#10 ] 4: zp ZP_BYTE:79 [ mulu8_sel::return#11 ] 4: zp ZP_WORD:84 [ mulu8_sel::$0 ] 4: zp ZP_WORD:86 [ mulu8_sel::$1 ] 1.71: zp ZP_BYTE:88 [ mulu8_sel::return#12 ] 0.33: zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Uplift Scope [mul8su] 22: zp ZP_WORD:53 [ mul8su::return#2 ] 20: zp ZP_BYTE:63 [ mul8su::$5 ] 7.33: zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] 4: zp ZP_BYTE:64 [ mul8su::$6 ] 4: zp ZP_BYTE:65 [ mul8su::$10 ] 2.6: zp ZP_BYTE:52 [ mul8su::a#0 ] Uplift Scope [sin8u_table] 22: zp ZP_BYTE:57 [ sin8u_table::$21 ] 17.19: zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] 8.75: zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] 3.75: zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] 2.2: zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] 2.2: zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] 1.94: zp ZP_BYTE:58 [ sin8u_table::sinx_tr#0 ] 0.27: zp ZP_WORD:48 [ sin8u_table::step#0 ] Uplift Scope [print_byte] 39.25: zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] 4: zp ZP_BYTE:59 [ print_byte::$0 ] 4: zp ZP_BYTE:60 [ print_byte::$2 ] -Uplift Scope [mul8su] 22: zp ZP_WORD:53 [ mul8su::return#2 ] 7.33: zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] 4: zp ZP_BYTE:63 [ mul8su::$6 ] 4: zp ZP_BYTE:64 [ mul8su::$10 ] 2.6: zp ZP_BYTE:52 [ mul8su::a#0 ] Uplift Scope [print_word] 36.33: zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_char] 14: zp ZP_BYTE:11 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] Uplift Scope [print_sword] 12.25: zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] Uplift Scope [print_sbyte] 10.83: zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplift Scope [div16u] 4: zp ZP_WORD:46 [ div16u::return#2 ] 1.33: zp ZP_WORD:90 [ div16u::return#0 ] +Uplift Scope [div16u] 4: zp ZP_WORD:46 [ div16u::return#2 ] 1.33: zp ZP_WORD:91 [ div16u::return#0 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [mul8u] best 24278 combination zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#1 ] zp ZP_WORD:61 [ mul8u::return#2 ] zp ZP_WORD:81 [ mul8u::return#3 ] -Uplifting [] best 24278 combination zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] -Uplifting [print_str] best 24278 combination zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] -Uplifting [divr16u] best 24068 combination zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:88 [ divr16u::return#2 ] -Uplifting [sin8s] best 23963 combination zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] reg byte a [ sin8s::return#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:66 [ sin8s::$6 ] zp ZP_BYTE:70 [ sin8s::x2#0 ] zp ZP_BYTE:74 [ sin8s::x3_6#0 ] zp ZP_BYTE:77 [ sin8s::x4#0 ] zp ZP_BYTE:79 [ sin8s::x5#0 ] zp ZP_BYTE:80 [ sin8s::x5_128#0 ] zp ZP_BYTE:72 [ sin8s::x3#0 ] zp ZP_BYTE:68 [ sin8s::x1#0 ] zp ZP_BYTE:75 [ sin8s::usinx#0 ] zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplifting [mul8u] best 24299 combination zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:27 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#1 ] zp ZP_WORD:61 [ mul8u::return#2 ] zp ZP_WORD:82 [ mul8u::return#3 ] +Uplifting [] best 24299 combination zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] zp ZP_WORD:16 [ print_char_cursor#94 print_char_cursor#105 print_char_cursor#64 print_char_cursor#100 print_char_cursor#18 print_char_cursor#99 print_char_cursor#2 print_char_cursor#126 print_char_cursor#1 ] zp ZP_WORD:95 [ rem16u#1 ] +Uplifting [print_str] best 24299 combination zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] +Uplifting [divr16u] best 24089 combination zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:89 [ divr16u::return#2 ] +Uplifting [sin8s] best 23984 combination zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] reg byte a [ sin8s::return#2 ] reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ] reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ] zp ZP_WORD:67 [ sin8s::$6 ] zp ZP_BYTE:71 [ sin8s::x2#0 ] zp ZP_BYTE:75 [ sin8s::x3_6#0 ] zp ZP_BYTE:78 [ sin8s::x4#0 ] zp ZP_BYTE:80 [ sin8s::x5#0 ] zp ZP_BYTE:81 [ sin8s::x5_128#0 ] zp ZP_BYTE:73 [ sin8s::x3#0 ] zp ZP_BYTE:69 [ sin8s::x1#0 ] zp ZP_BYTE:76 [ sin8s::usinx#0 ] zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Limited combination testing to 100 combinations of 5308416 possible. -Uplifting [mulu8_sel] best 23917 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:73 [ mulu8_sel::return#2 ] zp ZP_BYTE:76 [ mulu8_sel::return#10 ] zp ZP_BYTE:78 [ mulu8_sel::return#11 ] zp ZP_WORD:83 [ mulu8_sel::$0 ] zp ZP_WORD:85 [ mulu8_sel::$1 ] zp ZP_BYTE:87 [ mulu8_sel::return#12 ] zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Uplifting [mulu8_sel] best 23938 combination reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ] reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ] reg byte a [ mulu8_sel::return#0 ] reg byte a [ mulu8_sel::return#1 ] zp ZP_BYTE:74 [ mulu8_sel::return#2 ] zp ZP_BYTE:77 [ mulu8_sel::return#10 ] zp ZP_BYTE:79 [ mulu8_sel::return#11 ] zp ZP_WORD:84 [ mulu8_sel::$0 ] zp ZP_WORD:86 [ mulu8_sel::$1 ] zp ZP_BYTE:88 [ mulu8_sel::return#12 ] zp ZP_BYTE:36 [ mulu8_sel::select#5 ] Limited combination testing to 100 combinations of 196608 possible. -Uplifting [sin8u_table] best 23807 combination reg byte a [ sin8u_table::$21 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] reg byte x [ sin8u_table::sinx_tr#0 ] zp ZP_WORD:48 [ sin8u_table::step#0 ] -Uplifting [print_byte] best 23799 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [mul8su] best 23755 combination zp ZP_WORD:53 [ mul8su::return#2 ] zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] reg byte y [ mul8su::a#0 ] -Uplifting [print_word] best 23755 combination zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] -Uplifting [print_cls] best 23755 combination zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_char] best 23737 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [print_sword] best 23737 combination zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] -Uplifting [print_sbyte] best 23737 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [div16u] best 23737 combination zp ZP_WORD:46 [ div16u::return#2 ] zp ZP_WORD:90 [ div16u::return#0 ] -Uplifting [print_ln] best 23737 combination -Uplifting [main] best 23737 combination +Uplifting [mul8su] best 23923 combination zp ZP_WORD:53 [ mul8su::return#2 ] reg byte a [ mul8su::$5 ] zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] zp ZP_BYTE:52 [ mul8su::a#0 ] +Limited combination testing to 100 combinations of 192 possible. +Uplifting [sin8u_table] best 23813 combination reg byte a [ sin8u_table::$21 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] reg byte x [ sin8u_table::sinx_tr#0 ] zp ZP_WORD:48 [ sin8u_table::step#0 ] +Uplifting [print_byte] best 23805 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 23805 combination zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] +Uplifting [print_cls] best 23805 combination zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_char] best 23787 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplifting [print_sword] best 23787 combination zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] +Uplifting [print_sbyte] best 23787 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Uplifting [div16u] best 23787 combination zp ZP_WORD:46 [ div16u::return#2 ] zp ZP_WORD:91 [ div16u::return#0 ] +Uplifting [print_ln] best 23787 combination +Uplifting [main] best 23787 combination Attempting to uplift remaining variables inzp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] -Uplifting [print_byte] best 23737 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] +Uplifting [print_byte] best 23787 combination zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Uplifting [print_sbyte] best 23737 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:70 [ sin8s::x2#0 ] -Uplifting [sin8s] best 23733 combination reg byte a [ sin8s::x2#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:73 [ mulu8_sel::return#2 ] -Uplifting [mulu8_sel] best 23727 combination reg byte a [ mulu8_sel::return#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:74 [ sin8s::x3_6#0 ] -Uplifting [sin8s] best 23723 combination reg byte a [ sin8s::x3_6#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:76 [ mulu8_sel::return#10 ] -Uplifting [mulu8_sel] best 23717 combination reg byte a [ mulu8_sel::return#10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:77 [ sin8s::x4#0 ] -Uplifting [sin8s] best 23713 combination reg byte a [ sin8s::x4#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:78 [ mulu8_sel::return#11 ] -Uplifting [mulu8_sel] best 23707 combination reg byte a [ mulu8_sel::return#11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:79 [ sin8s::x5#0 ] -Uplifting [sin8s] best 23701 combination reg byte a [ sin8s::x5#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:80 [ sin8s::x5_128#0 ] -Uplifting [sin8s] best 23695 combination reg byte a [ sin8s::x5_128#0 ] +Uplifting [print_sbyte] best 23787 combination zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:71 [ sin8s::x2#0 ] +Uplifting [sin8s] best 23783 combination reg byte a [ sin8s::x2#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:74 [ mulu8_sel::return#2 ] +Uplifting [mulu8_sel] best 23777 combination reg byte a [ mulu8_sel::return#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:75 [ sin8s::x3_6#0 ] +Uplifting [sin8s] best 23773 combination reg byte a [ sin8s::x3_6#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:77 [ mulu8_sel::return#10 ] +Uplifting [mulu8_sel] best 23767 combination reg byte a [ mulu8_sel::return#10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:78 [ sin8s::x4#0 ] +Uplifting [sin8s] best 23763 combination reg byte a [ sin8s::x4#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mulu8_sel::return#11 ] +Uplifting [mulu8_sel] best 23757 combination reg byte a [ mulu8_sel::return#11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:80 [ sin8s::x5#0 ] +Uplifting [sin8s] best 23751 combination reg byte a [ sin8s::x5#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:81 [ sin8s::x5_128#0 ] +Uplifting [sin8s] best 23745 combination reg byte a [ sin8s::x5_128#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ mul8su::a#0 ] +Uplifting [mul8su] best 23713 combination reg byte y [ mul8su::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:51 [ sin8u_table::sinx#0 ] -Uplifting [sin8u_table] best 23695 combination zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:87 [ mulu8_sel::return#12 ] -Uplifting [mulu8_sel] best 23677 combination reg byte a [ mulu8_sel::return#12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:72 [ sin8s::x3#0 ] -Uplifting [sin8s] best 23677 combination zp ZP_BYTE:72 [ sin8s::x3#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:68 [ sin8s::x1#0 ] -Uplifting [sin8s] best 23677 combination zp ZP_BYTE:68 [ sin8s::x1#0 ] +Uplifting [sin8u_table] best 23713 combination zp ZP_BYTE:51 [ sin8u_table::sinx#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:88 [ mulu8_sel::return#12 ] +Uplifting [mulu8_sel] best 23695 combination reg byte a [ mulu8_sel::return#12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:73 [ sin8s::x3#0 ] +Uplifting [sin8s] best 23695 combination zp ZP_BYTE:73 [ sin8s::x3#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:69 [ sin8s::x1#0 ] +Uplifting [sin8s] best 23695 combination zp ZP_BYTE:69 [ sin8s::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Uplifting [mulu8_sel] best 23677 combination zp ZP_BYTE:36 [ mulu8_sel::select#5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:75 [ sin8s::usinx#0 ] -Uplifting [sin8s] best 23677 combination zp ZP_BYTE:75 [ sin8s::usinx#0 ] +Uplifting [mulu8_sel] best 23695 combination zp ZP_BYTE:36 [ mulu8_sel::select#5 ] +Attempting to uplift remaining variables inzp ZP_BYTE:76 [ sin8s::usinx#0 ] +Uplifting [sin8s] best 23695 combination zp ZP_BYTE:76 [ sin8s::usinx#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:29 [ sin8s::isUpper#10 ] -Uplifting [sin8s] best 23677 combination zp ZP_BYTE:29 [ sin8s::isUpper#10 ] +Uplifting [sin8s] best 23695 combination zp ZP_BYTE:29 [ sin8s::isUpper#10 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 ] ] with [ zp ZP_BYTE:20 [ print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 ] ] with [ zp ZP_WORD:18 [ print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 ] ] with [ zp ZP_WORD:53 [ mul8su::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 ] ] with [ zp ZP_WORD:61 [ mul8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:81 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] ] with [ zp ZP_WORD:66 [ sin8s::$6 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:88 [ divr16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:82 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:30 [ sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 ] ] with [ zp ZP_WORD:67 [ sin8s::$6 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:95 [ rem16u#1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:89 [ divr16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ div16u::return#2 ] ] with [ zp ZP_WORD:48 [ sin8u_table::step#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ div16u::return#2 sin8u_table::step#0 ] ] with [ zp ZP_WORD:90 [ div16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:83 [ mulu8_sel::$0 ] ] with [ zp ZP_WORD:85 [ mulu8_sel::$1 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:46 [ div16u::return#2 sin8u_table::step#0 ] ] with [ zp ZP_WORD:91 [ div16u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:84 [ mulu8_sel::$0 ] ] with [ zp ZP_WORD:86 [ mulu8_sel::$1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 ] ] with [ zp ZP_WORD:25 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:55 [ sin8u_table::sinx_sc#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:46 [ div16u::return#2 sin8u_table::step#0 div16u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 ] ] with [ zp ZP_WORD:83 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 -Coalescing zero page register [ zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] ] with [ zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] -Coalescing zero page register [ zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 ] ] with [ zp ZP_WORD:84 [ mulu8_sel::$0 mulu8_sel::$1 ] ] - score: 1 +Coalescing zero page register [ zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 ] ] with [ zp ZP_WORD:37 [ divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] +Coalescing zero page register [ zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ] ] with [ zp ZP_WORD:44 [ print_cls::sc#2 print_cls::sc#1 ] ] Coalescing zero page register [ zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 ] ] with [ zp ZP_WORD:39 [ divr16u::dividend#2 divr16u::dividend#0 ] ] Coalescing zero page register [ zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#4 print_sbyte::b#0 print_sbyte::b#1 ] ] with [ zp ZP_BYTE:29 [ sin8s::isUpper#10 ] ] Coalescing zero page register [ zp ZP_WORD:12 [ print_str::str#10 print_str::str#12 print_str::str#0 ] ] with [ zp ZP_WORD:14 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 ] ] @@ -5019,9 +5223,9 @@ Allocated (was zp ZP_WORD:16) zp ZP_WORD:13 [ print_char_cursor#94 print_char_cu Allocated (was zp ZP_WORD:21) zp ZP_WORD:15 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 mulu8_sel::$0 mulu8_sel::$1 ] Allocated (was zp ZP_BYTE:36) zp ZP_BYTE:17 [ mulu8_sel::select#5 sin8u_table::sinx#0 ] Allocated (was zp ZP_WORD:41) zp ZP_WORD:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8u_table::step#0 div16u::return#0 ] -Allocated (was zp ZP_BYTE:68) zp ZP_BYTE:20 [ sin8s::x1#0 ] -Allocated (was zp ZP_BYTE:72) zp ZP_BYTE:21 [ sin8s::x3#0 ] -Allocated (was zp ZP_BYTE:75) zp ZP_BYTE:22 [ sin8s::usinx#0 ] +Allocated (was zp ZP_BYTE:69) zp ZP_BYTE:20 [ sin8s::x1#0 ] +Allocated (was zp ZP_BYTE:73) zp ZP_BYTE:21 [ sin8s::x3#0 ] +Allocated (was zp ZP_BYTE:76) zp ZP_BYTE:22 [ sin8s::usinx#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -5032,6 +5236,7 @@ ASSEMBLER BEFORE OPTIMIZATION .const PI2_u4f12 = $6488 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 + .label rem16u = 2 .label print_char_cursor = $d .label print_line_cursor = 8 //SEG2 @begin @@ -5054,7 +5259,7 @@ bend: main: { .label tabsize = $14 //SEG10 [5] call print_cls - //SEG11 [212] phi from main to print_cls [phi:main->print_cls] + //SEG11 [214] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -5087,7 +5292,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG19 [10] call div16u - //SEG20 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG20 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] div16u_from_sin8u_table: jsr div16u //SEG21 [11] (word) div16u::return#2 ← (word) div16u::return#0 @@ -5750,10 +5955,10 @@ mul8su: { tya tax //SEG266 [118] call mul8u - //SEG267 [127] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG267 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] mul8u_from_mul8su: - //SEG268 [127] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy - //SEG269 [127] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 + //SEG268 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG269 [128] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 lda #b jsr mul8u //SEG270 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 @@ -5769,67 +5974,69 @@ mul8su: { jmp b2 //SEG274 mul8su::@2 b2: - //SEG275 [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG275 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG276 [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 + //SEG276 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + lda m+1 + //SEG277 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG277 [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG278 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG278 [125] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG279 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] b1_from_b2: b1_from_b4: - //SEG279 [125] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG280 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy jmp b1 - //SEG280 mul8su::@1 + //SEG281 mul8su::@1 b1: jmp breturn - //SEG281 mul8su::@return + //SEG282 mul8su::@return breturn: - //SEG282 [126] return + //SEG283 [127] return rts } -//SEG283 mul8u +//SEG284 mul8u mul8u: { .label mb = $b .label res = $f .label return = $f - //SEG284 [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG285 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG285 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG286 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG286 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG287 [129] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG287 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG288 [130] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG288 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG289 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG289 mul8u::@1 + //SEG290 mul8u::@1 b1: - //SEG290 [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG291 [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG291 mul8u::@return + //SEG292 mul8u::@return breturn: - //SEG292 [131] return + //SEG293 [132] return rts - //SEG293 mul8u::@2 + //SEG294 mul8u::@2 b2: - //SEG294 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG295 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG295 [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG296 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG296 mul8u::@7 + //SEG297 mul8u::@7 b7: - //SEG297 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG298 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5837,28 +6044,28 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG298 [135] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG299 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG299 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG300 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG300 mul8u::@4 + //SEG301 mul8u::@4 b4: - //SEG301 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG302 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG302 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG303 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG303 [129] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG304 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG304 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG305 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG306 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG305 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG306 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG307 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG307 sin8s +//SEG308 sin8s sin8s: { .const DIV_6 = $2b .label _6 = $b @@ -5867,7 +6074,7 @@ sin8s: { .label x3 = $15 .label usinx = $16 .label isUpper = $a - //SEG308 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b1_from_sin8s @@ -5877,9 +6084,9 @@ sin8s: { bcc b1_from_sin8s !: jmp b5 - //SEG309 sin8s::@5 + //SEG310 sin8s::@5 b5: - //SEG310 [139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG311 [140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0 -- vwuz1=vwuz1_minus_vwuc1 lda x sec sbc #PI_u4f12 sta x+1 - //SEG311 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG312 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] b1_from_b5: - //SEG312 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG313 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG313 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG314 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG314 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG315 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b1_from_sin8s: - //SEG315 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG316 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG317 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy jmp b1 - //SEG317 sin8s::@1 + //SEG318 sin8s::@1 b1: - //SEG318 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG319 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2_from_b1 @@ -5913,9 +6120,9 @@ sin8s: { bcc b2_from_b1 !: jmp b6 - //SEG319 sin8s::@6 + //SEG320 sin8s::@6 b6: - //SEG320 [142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 + //SEG321 [143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4 -- vwuz1=vwuc1_minus_vwuz1 sec lda #PI_u4f12 sbc x+1 sta x+1 - //SEG321 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG322 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] b2_from_b1: b2_from_b6: - //SEG322 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG323 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy jmp b2 - //SEG323 sin8s::@2 + //SEG324 sin8s::@2 b2: - //SEG324 [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG325 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _6 rol _6+1 asl _6 rol _6+1 asl _6 rol _6+1 - //SEG325 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG326 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG326 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG327 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 ldx x1 - //SEG327 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG328 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG328 [148] call mulu8_sel - //SEG329 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG329 [149] call mulu8_sel + //SEG330 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] mulu8_sel_from_b2: - //SEG330 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG331 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG331 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG332 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG332 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG333 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG333 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG334 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#12 // register copy reg byte a jmp b10 - //SEG334 sin8s::@10 + //SEG335 sin8s::@10 b10: - //SEG335 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG336 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 // (byte) sin8s::x2#0 = (byte) mulu8_sel::return#0 // register copy reg byte a - //SEG336 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG337 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG337 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG338 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG338 [153] call mulu8_sel - //SEG339 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG339 [154] call mulu8_sel + //SEG340 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] mulu8_sel_from_b10: - //SEG340 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG341 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG341 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG342 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG342 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG343 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG343 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG344 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#12 // register copy reg byte a jmp b11 - //SEG344 sin8s::@11 + //SEG345 sin8s::@11 b11: - //SEG345 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG346 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG346 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG347 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG347 [157] call mulu8_sel - //SEG348 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG348 [158] call mulu8_sel + //SEG349 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] mulu8_sel_from_b11: - //SEG349 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG350 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG350 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG351 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG351 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG352 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG352 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG353 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#12 // register copy reg byte a jmp b12 - //SEG353 sin8s::@12 + //SEG354 sin8s::@12 b12: - //SEG354 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG355 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 // (byte) sin8s::x3_6#0 = (byte) mulu8_sel::return#2 // register copy reg byte a - //SEG355 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG356 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG356 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG357 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG357 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG358 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG358 [163] call mulu8_sel - //SEG359 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG359 [164] call mulu8_sel + //SEG360 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] mulu8_sel_from_b12: - //SEG360 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG361 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG361 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG362 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG362 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG363 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG363 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG364 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#12 // register copy reg byte a jmp b13 - //SEG364 sin8s::@13 + //SEG365 sin8s::@13 b13: - //SEG365 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG366 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 // (byte) sin8s::x4#0 = (byte) mulu8_sel::return#10 // register copy reg byte a - //SEG366 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG367 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG367 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG368 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG368 [168] call mulu8_sel - //SEG369 [181] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG369 [169] call mulu8_sel + //SEG370 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] mulu8_sel_from_b13: - //SEG370 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG371 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG371 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG372 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG372 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG373 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG373 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG374 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#12 // register copy reg byte a jmp b14 - //SEG374 sin8s::@14 + //SEG375 sin8s::@14 b14: - //SEG375 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG376 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 // (byte) sin8s::x5#0 = (byte) mulu8_sel::return#11 // register copy reg byte a - //SEG376 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG377 [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG377 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG378 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG378 [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG379 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #$80 bcc b3_from_b14 jmp b7 - //SEG379 sin8s::@7 + //SEG380 sin8s::@7 b7: - //SEG380 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG381 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG381 [175] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG382 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] b3_from_b14: b3_from_b7: - //SEG382 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG383 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy jmp b3 - //SEG383 sin8s::@3 + //SEG384 sin8s::@3 b3: - //SEG384 [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG385 [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b18 jmp b8 - //SEG385 sin8s::@8 + //SEG386 sin8s::@8 b8: - //SEG386 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG387 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG387 [178] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG388 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] b4_from_b18: b4_from_b8: - //SEG388 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG389 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy jmp b4 - //SEG389 sin8s::@4 + //SEG390 sin8s::@4 b4: jmp breturn - //SEG390 sin8s::@return + //SEG391 sin8s::@return breturn: - //SEG391 [179] return + //SEG392 [180] return rts - //SEG392 sin8s::@18 + //SEG393 sin8s::@18 b18: - //SEG393 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG394 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4_from_b18 } -//SEG394 mulu8_sel +//SEG395 mulu8_sel mulu8_sel: { .label _0 = $f .label _1 = $f .label select = $11 - //SEG395 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG396 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 // (byte) mul8u::a#2 = (byte) mulu8_sel::v1#5 // register copy reg byte x - //SEG396 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG397 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG397 [184] call mul8u - //SEG398 [127] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG398 [185] call mul8u + //SEG399 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] mul8u_from_mulu8_sel: - //SEG399 [127] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG400 [127] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy + //SEG400 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG401 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG401 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG402 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 // (word) mul8u::return#3 = (word) mul8u::res#2 // register copy zp ZP_WORD:15 jmp b2 - //SEG402 mulu8_sel::@2 + //SEG403 mulu8_sel::@2 b2: - //SEG403 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG404 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 // (word~) mulu8_sel::$0 = (word) mul8u::return#3 // register copy zp ZP_WORD:15 - //SEG404 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG405 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -6129,100 +6336,100 @@ mulu8_sel: { dey bne !- !e: - //SEG405 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG406 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 jmp breturn - //SEG406 mulu8_sel::@return + //SEG407 mulu8_sel::@return breturn: - //SEG407 [189] return + //SEG408 [190] return rts } -//SEG408 div16u +//SEG409 div16u div16u: { .label return = $12 - //SEG409 [191] call divr16u - //SEG410 [195] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG410 [192] call divr16u + //SEG411 [196] phi from div16u to divr16u [phi:div16u->divr16u] divr16u_from_div16u: jsr divr16u - //SEG411 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG412 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:18 jmp b2 - //SEG412 div16u::@2 + //SEG413 div16u::@2 b2: - //SEG413 [193] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG414 [194] (word) div16u::return#0 ← (word) divr16u::return#2 // (word) div16u::return#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:18 jmp breturn - //SEG414 div16u::@return + //SEG415 div16u::@return breturn: - //SEG415 [194] return + //SEG416 [195] return rts } -//SEG416 divr16u +//SEG417 divr16u divr16u: { .label rem = 2 .label dividend = 4 .label quotient = $12 .label return = $12 - //SEG417 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG418 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] b1_from_divr16u: - //SEG418 [196] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG419 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG419 [196] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG420 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 lda #<0 sta quotient lda #>0 sta quotient+1 - //SEG420 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG421 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG421 [196] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG422 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 lda #<0 sta rem lda #>0 sta rem+1 jmp b1 - //SEG422 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG423 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] b1_from_b3: - //SEG423 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG424 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG425 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG426 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG424 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG425 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG426 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG427 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy jmp b1 - //SEG427 divr16u::@1 + //SEG428 divr16u::@1 b1: - //SEG428 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG429 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG429 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG430 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG430 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG431 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG431 [200] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG432 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2_from_b1 jmp b4 - //SEG432 divr16u::@4 + //SEG433 divr16u::@4 b4: - //SEG433 [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG434 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG434 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG435 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] b2_from_b1: b2_from_b4: - //SEG435 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG436 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy jmp b2 - //SEG436 divr16u::@2 + //SEG437 divr16u::@2 b2: - //SEG437 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG438 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG438 [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG439 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG440 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3_from_b2 @@ -6232,14 +6439,14 @@ divr16u: { bcc b3_from_b2 !: jmp b5 - //SEG440 divr16u::@5 + //SEG441 divr16u::@5 b5: - //SEG441 [206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 + //SEG442 [207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1 inc quotient bne !+ inc quotient+1 !: - //SEG442 [207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 + //SEG443 [208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0 -- vwuz1=vwuz1_minus_vwuc1 lda rem sec sbc #main.tabsize sta rem+1 - //SEG443 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG444 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] b3_from_b2: b3_from_b5: - //SEG444 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG445 [208] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG445 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG446 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy jmp b3 - //SEG446 divr16u::@3 + //SEG447 divr16u::@3 b3: - //SEG447 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG448 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG448 [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG449 [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1_from_b3 + jmp b6 + //SEG450 divr16u::@6 + b6: + //SEG451 [212] (word) rem16u#1 ← (word) divr16u::rem#10 + // (word) rem16u#1 = (word) divr16u::rem#10 // register copy zp ZP_WORD:2 jmp breturn - //SEG449 divr16u::@return + //SEG452 divr16u::@return breturn: - //SEG450 [211] return + //SEG453 [213] return rts } -//SEG451 print_cls +//SEG454 print_cls print_cls: { .label sc = 2 - //SEG452 [213] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG455 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG453 [213] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG456 [215] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG454 [213] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG457 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG455 [213] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG458 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG456 print_cls::@1 + //SEG459 print_cls::@1 b1: - //SEG457 [214] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG460 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG458 [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG461 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG459 [216] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG462 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -6300,9 +6512,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG460 print_cls::@return + //SEG463 print_cls::@return breturn: - //SEG461 [217] return + //SEG464 [219] return rts } print_hextab: .text "0123456789abcdef" @@ -6385,6 +6597,7 @@ Removing instruction jmp b4 Removing instruction jmp b2 Removing instruction jmp b5 Removing instruction jmp b3 +Removing instruction jmp b6 Removing instruction jmp breturn Removing instruction jmp b1 Removing instruction jmp breturn @@ -6393,6 +6606,7 @@ Removing instruction lda #>0 Removing instruction lda #>0 Replacing instruction ldy sinx with TAY Removing instruction ldy #0 +Removing instruction lda m+1 Removing instruction lda #>0 Replacing instruction ldx x1 with TAX Replacing instruction ldy x1 with TAY @@ -6573,6 +6787,7 @@ Removing instruction breturn: Removing instruction b1_from_divr16u: Removing instruction b4: Removing instruction b5: +Removing instruction b6: Removing instruction breturn: Removing instruction b1_from_print_cls: Removing instruction breturn: @@ -6585,8 +6800,8 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #<0 Succesful ASM optimization Pass5UnnecesaryLoadElimination -Fixing long branch [163] bcc b1 to bcs -Fixing long branch [169] bcc b1 to bcs +Fixing long branch [164] bcc b1 to bcs +Fixing long branch [170] bcc b1 to bcs FINAL SYMBOL TABLE (label) @41 @@ -6594,10 +6809,13 @@ FINAL SYMBOL TABLE (label) @end (word) PI2_u4f12 (const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(dword) PI2_u4f28 (word) PI_HALF_u4f12 (const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 +(dword) PI_HALF_u4f28 (word) PI_u4f12 (const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868 +(dword) PI_u4f28 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@2 (label) div16u::@return @@ -6614,6 +6832,7 @@ FINAL SYMBOL TABLE (label) divr16u::@3 (label) divr16u::@4 (label) divr16u::@5 +(label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend (word) divr16u::dividend#0 dividend zp ZP_WORD:4 2.75 @@ -6629,12 +6848,12 @@ FINAL SYMBOL TABLE (word) divr16u::rem (word) divr16u::rem#0 rem zp ZP_WORD:2 8.25 (word) divr16u::rem#1 rem zp ZP_WORD:2 22.0 +(word) divr16u::rem#10 rem zp ZP_WORD:2 11.666666666666666 (word) divr16u::rem#2 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#4 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#5 rem zp ZP_WORD:2 11.0 -(word) divr16u::rem#9 rem zp ZP_WORD:2 11.0 (word) divr16u::return -(word) divr16u::return#0 return zp ZP_WORD:18 7.000000000000001 +(word) divr16u::return#0 return zp ZP_WORD:18 5.833333333333333 (word) divr16u::return#2 return zp ZP_WORD:18 4.0 (void()) main() (label) main::@1 @@ -6645,6 +6864,7 @@ FINAL SYMBOL TABLE (const word) main::tabsize#0 tabsize = (byte/signed byte/word/signed word/dword/signed dword) 20 (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) (byte~) mul8su::$10 reg byte a 4.0 +(byte~) mul8su::$5 reg byte a 20.0 (byte~) mul8su::$6 reg byte a 4.0 (label) mul8su::@1 (label) mul8su::@2 @@ -6792,6 +7012,11 @@ FINAL SYMBOL TABLE (word) print_word::w#2 w zp ZP_WORD:11 22.0 (word) print_word::w#3 w zp ZP_WORD:11 6.333333333333334 (word~) print_word::w#5 w zp ZP_WORD:11 4.0 +(signed word) rem16s +(word) rem16u +(word) rem16u#1 rem16u zp ZP_WORD:2 20.0 +(signed byte) rem8s +(byte) rem8u (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$6 $6 zp ZP_WORD:11 4.0 (label) sin8s::@1 @@ -6908,7 +7133,7 @@ FINAL SYMBOL TABLE (word) sin8u_table::x#1 x zp ZP_WORD:2 7.333333333333333 (word) sin8u_table::x#10 x zp ZP_WORD:2 1.4193548387096775 -zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] @@ -6932,6 +7157,7 @@ reg byte a [ sin8u_table::$21 ] reg byte x [ sin8u_table::sinx_tr#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +reg byte a [ mul8su::$5 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] reg byte a [ mul8u::$1 ] @@ -6964,6 +7190,7 @@ Score: 19480 .const PI2_u4f12 = $6488 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 + .label rem16u = 2 .label print_char_cursor = $d .label print_line_cursor = 8 //SEG2 @begin @@ -6978,7 +7205,7 @@ Score: 19480 main: { .label tabsize = $14 //SEG10 [5] call print_cls - //SEG11 [212] phi from main to print_cls [phi:main->print_cls] + //SEG11 [214] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] //SEG13 main::@1 @@ -7004,7 +7231,7 @@ sin8u_table: { .label x = 2 .label i = 6 //SEG19 [10] call div16u - //SEG20 [190] phi from sin8u_table to div16u [phi:sin8u_table->div16u] + //SEG20 [191] phi from sin8u_table to div16u [phi:sin8u_table->div16u] jsr div16u //SEG21 [11] (word) div16u::return#2 ← (word) div16u::return#0 // (word) div16u::return#2 = (word) div16u::return#0 // register copy zp ZP_WORD:18 @@ -7535,9 +7762,9 @@ mul8su: { tya tax //SEG266 [118] call mul8u - //SEG267 [127] phi from mul8su to mul8u [phi:mul8su->mul8u] - //SEG268 [127] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy - //SEG269 [127] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 + //SEG267 [128] phi from mul8su to mul8u [phi:mul8su->mul8u] + //SEG268 [128] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8su->mul8u#0] -- register_copy + //SEG269 [128] phi (byte) mul8u::b#2 = ((byte))(const byte) mul8su::b#0 [phi:mul8su->mul8u#1] -- vbuaa=vbuc1 lda #b jsr mul8u //SEG270 [119] (word) mul8u::return#2 ← (word) mul8u::res#2 @@ -7549,54 +7776,55 @@ mul8su: { cpy #0 bpl b1 //SEG274 mul8su::@2 - //SEG275 [122] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG275 [122] (byte~) mul8su::$5 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG276 [123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 + //SEG276 [123] (byte~) mul8su::$6 ← > (word) mul8su::m#0 -- vbuaa=_hi_vwuz1 + //SEG277 [124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0 -- vbuaa=vbuaa_minus_vbuc1 sec sbc #b - //SEG277 [124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa + //SEG278 [125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG278 [125] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] - //SEG279 [125] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy - //SEG280 mul8su::@1 + //SEG279 [126] phi from mul8su::@2 mul8su::@4 to mul8su::@1 [phi:mul8su::@2/mul8su::@4->mul8su::@1] + //SEG280 [126] phi (word) mul8su::m#2 = (word) mul8su::m#1 [phi:mul8su::@2/mul8su::@4->mul8su::@1#0] -- register_copy + //SEG281 mul8su::@1 b1: - //SEG281 mul8su::@return - //SEG282 [126] return + //SEG282 mul8su::@return + //SEG283 [127] return rts } -//SEG283 mul8u +//SEG284 mul8u mul8u: { .label mb = $b .label res = $f .label return = $f - //SEG284 [128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG285 [129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG285 [129] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG286 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG287 [129] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG286 [130] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG287 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG288 [130] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 sta res sta res+1 - //SEG288 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG289 mul8u::@1 + //SEG289 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG290 mul8u::@1 b1: - //SEG290 [130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG291 [131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG291 mul8u::@return - //SEG292 [131] return + //SEG292 mul8u::@return + //SEG293 [132] return rts - //SEG293 mul8u::@2 + //SEG294 mul8u::@2 b2: - //SEG294 [132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG295 [133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG295 [133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG296 [134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG296 mul8u::@7 - //SEG297 [134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG297 mul8u::@7 + //SEG298 [135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -7604,24 +7832,24 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG298 [135] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG299 [135] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG300 mul8u::@4 + //SEG299 [136] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG300 [136] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG301 mul8u::@4 b4: - //SEG301 [136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG302 [137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG302 [137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG303 [138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG303 [129] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG304 [129] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG305 [129] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG306 [129] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG304 [130] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG305 [130] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG306 [130] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG307 [130] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG307 sin8s +//SEG308 sin8s sin8s: { .const DIV_6 = $2b .label _6 = $b @@ -7630,7 +7858,7 @@ sin8s: { .label x3 = $15 .label usinx = $16 .label isUpper = $a - //SEG308 [138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 + //SEG309 [139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_u4f12 bcc b5 @@ -7639,8 +7867,8 @@ sin8s: { cmp #PI_u4f12 sta x+1 - //SEG311 [140] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] - //SEG312 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG312 [141] phi from sin8s::@5 to sin8s::@1 [phi:sin8s::@5->sin8s::@1] + //SEG313 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@5->sin8s::@1#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG313 [140] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy + //SEG314 [141] phi (word) sin8s::x#4 = (word) sin8s::x#0 [phi:sin8s::@5->sin8s::@1#1] -- register_copy jmp b1 - //SEG314 [140] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] + //SEG315 [141] phi from sin8s to sin8s::@1 [phi:sin8s->sin8s::@1] b5: - //SEG315 [140] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 + //SEG316 [141] phi (byte) sin8s::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s->sin8s::@1#0] -- vbuz1=vbuc1 lda #0 sta isUpper - //SEG316 [140] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy - //SEG317 sin8s::@1 + //SEG317 [141] phi (word) sin8s::x#4 = (word) sin8s::x#2 [phi:sin8s->sin8s::@1#1] -- register_copy + //SEG318 sin8s::@1 b1: - //SEG318 [141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 + //SEG319 [142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2 -- vwuz1_lt_vwuc1_then_la1 lda x+1 cmp #>PI_HALF_u4f12 bcc b2 @@ -7671,8 +7899,8 @@ sin8s: { cmp #PI_u4f12 sbc x+1 sta x+1 - //SEG321 [143] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] - //SEG322 [143] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy - //SEG323 sin8s::@2 + //SEG322 [144] phi from sin8s::@1 sin8s::@6 to sin8s::@2 [phi:sin8s::@1/sin8s::@6->sin8s::@2] + //SEG323 [144] phi (word) sin8s::x#6 = (word) sin8s::x#4 [phi:sin8s::@1/sin8s::@6->sin8s::@2#0] -- register_copy + //SEG324 sin8s::@2 b2: - //SEG324 [144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 + //SEG325 [145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 -- vwuz1=vwuz1_rol_3 asl _6 rol _6+1 asl _6 rol _6+1 asl _6 rol _6+1 - //SEG325 [145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 + //SEG326 [146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6 -- vbuz1=_hi_vwuz2 lda _6+1 sta x1 - //SEG326 [146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 + //SEG327 [147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0 -- vbuxx=vbuz1 tax - //SEG327 [147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG328 [148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 tay - //SEG328 [148] call mulu8_sel - //SEG329 [181] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] - //SEG330 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG329 [149] call mulu8_sel + //SEG330 [182] phi from sin8s::@2 to mulu8_sel [phi:sin8s::@2->mulu8_sel] + //SEG331 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@2->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG331 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy - //SEG332 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy + //SEG332 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#0 [phi:sin8s::@2->mulu8_sel#1] -- register_copy + //SEG333 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#0 [phi:sin8s::@2->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG333 [149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 + //SEG334 [150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#0 = (byte) mulu8_sel::return#12 // register copy reg byte a - //SEG334 sin8s::@10 - //SEG335 [150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 + //SEG335 sin8s::@10 + //SEG336 [151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0 // (byte) sin8s::x2#0 = (byte) mulu8_sel::return#0 // register copy reg byte a - //SEG336 [151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa + //SEG337 [152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0 -- vbuxx=vbuaa tax - //SEG337 [152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG338 [153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG338 [153] call mulu8_sel - //SEG339 [181] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] - //SEG340 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG339 [154] call mulu8_sel + //SEG340 [182] phi from sin8s::@10 to mulu8_sel [phi:sin8s::@10->mulu8_sel] + //SEG341 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@10->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG341 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy - //SEG342 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy + //SEG342 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#1 [phi:sin8s::@10->mulu8_sel#1] -- register_copy + //SEG343 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#1 [phi:sin8s::@10->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG343 [154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 + //SEG344 [155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#1 = (byte) mulu8_sel::return#12 // register copy reg byte a - //SEG344 sin8s::@11 - //SEG345 [155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa + //SEG345 sin8s::@11 + //SEG346 [156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1 -- vbuz1=vbuaa sta x3 - //SEG346 [156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG347 [157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 tax - //SEG347 [157] call mulu8_sel - //SEG348 [181] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] - //SEG349 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG348 [158] call mulu8_sel + //SEG349 [182] phi from sin8s::@11 to mulu8_sel [phi:sin8s::@11->mulu8_sel] + //SEG350 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin8s::@11->mulu8_sel#0] -- vbuz1=vbuc1 lda #1 sta mulu8_sel.select - //SEG350 [181] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 + //SEG351 [182] phi (byte) mulu8_sel::v2#5 = (const byte) sin8s::DIV_6#0 [phi:sin8s::@11->mulu8_sel#1] -- vbuyy=vbuc1 ldy #DIV_6 - //SEG351 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy + //SEG352 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#2 [phi:sin8s::@11->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG352 [158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 + //SEG353 [159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#2 = (byte) mulu8_sel::return#12 // register copy reg byte a - //SEG353 sin8s::@12 - //SEG354 [159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 + //SEG354 sin8s::@12 + //SEG355 [160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2 // (byte) sin8s::x3_6#0 = (byte) mulu8_sel::return#2 // register copy reg byte a - //SEG355 [160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa + //SEG356 [161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0 -- vbuz1=vbuz2_minus_vbuaa eor #$ff sec adc x1 sta usinx - //SEG356 [161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 + //SEG357 [162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0 -- vbuxx=vbuz1 ldx x3 - //SEG357 [162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG358 [163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG358 [163] call mulu8_sel - //SEG359 [181] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] - //SEG360 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG359 [164] call mulu8_sel + //SEG360 [182] phi from sin8s::@12 to mulu8_sel [phi:sin8s::@12->mulu8_sel] + //SEG361 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@12->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG361 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy - //SEG362 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy + //SEG362 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#3 [phi:sin8s::@12->mulu8_sel#1] -- register_copy + //SEG363 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#3 [phi:sin8s::@12->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG363 [164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 + //SEG364 [165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#10 = (byte) mulu8_sel::return#12 // register copy reg byte a - //SEG364 sin8s::@13 - //SEG365 [165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 + //SEG365 sin8s::@13 + //SEG366 [166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10 // (byte) sin8s::x4#0 = (byte) mulu8_sel::return#10 // register copy reg byte a - //SEG366 [166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa + //SEG367 [167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0 -- vbuxx=vbuaa tax - //SEG367 [167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 + //SEG368 [168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0 -- vbuyy=vbuz1 ldy x1 - //SEG368 [168] call mulu8_sel - //SEG369 [181] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] - //SEG370 [181] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 + //SEG369 [169] call mulu8_sel + //SEG370 [182] phi from sin8s::@13 to mulu8_sel [phi:sin8s::@13->mulu8_sel] + //SEG371 [182] phi (byte) mulu8_sel::select#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin8s::@13->mulu8_sel#0] -- vbuz1=vbuc1 lda #0 sta mulu8_sel.select - //SEG371 [181] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy - //SEG372 [181] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy + //SEG372 [182] phi (byte) mulu8_sel::v2#5 = (byte) mulu8_sel::v2#4 [phi:sin8s::@13->mulu8_sel#1] -- register_copy + //SEG373 [182] phi (byte) mulu8_sel::v1#5 = (byte) mulu8_sel::v1#4 [phi:sin8s::@13->mulu8_sel#2] -- register_copy jsr mulu8_sel - //SEG373 [169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 + //SEG374 [170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12 // (byte) mulu8_sel::return#11 = (byte) mulu8_sel::return#12 // register copy reg byte a - //SEG374 sin8s::@14 - //SEG375 [170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 + //SEG375 sin8s::@14 + //SEG376 [171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11 // (byte) sin8s::x5#0 = (byte) mulu8_sel::return#11 // register copy reg byte a - //SEG376 [171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 + //SEG377 [172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4 lsr lsr lsr lsr - //SEG377 [172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa + //SEG378 [173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0 -- vbuxx=vbuz1_plus_vbuaa clc adc usinx tax - //SEG378 [173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 + //SEG379 [174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3 -- vbuxx_lt_vbuc1_then_la1 cpx #$80 bcc b3 - //SEG379 sin8s::@7 - //SEG380 [174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx + //SEG380 sin8s::@7 + //SEG381 [175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1 -- vbuxx=_dec_vbuxx dex - //SEG381 [175] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] - //SEG382 [175] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy - //SEG383 sin8s::@3 + //SEG382 [176] phi from sin8s::@14 sin8s::@7 to sin8s::@3 [phi:sin8s::@14/sin8s::@7->sin8s::@3] + //SEG383 [176] phi (byte) sin8s::usinx#4 = (byte) sin8s::usinx#1 [phi:sin8s::@14/sin8s::@7->sin8s::@3#0] -- register_copy + //SEG384 sin8s::@3 b3: - //SEG384 [176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 + //SEG385 [177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18 -- vbuz1_eq_0_then_la1 lda isUpper cmp #0 beq b18 - //SEG385 sin8s::@8 - //SEG386 [177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx + //SEG386 sin8s::@8 + //SEG387 [178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4 -- vbsaa=_neg_vbsxx txa eor #$ff clc adc #1 - //SEG387 [178] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] - //SEG388 [178] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy - //SEG389 sin8s::@4 + //SEG388 [179] phi from sin8s::@18 sin8s::@8 to sin8s::@4 [phi:sin8s::@18/sin8s::@8->sin8s::@4] + //SEG389 [179] phi (signed byte) sin8s::return#0 = (signed byte~) sin8s::return#5 [phi:sin8s::@18/sin8s::@8->sin8s::@4#0] -- register_copy + //SEG390 sin8s::@4 b4: - //SEG390 sin8s::@return - //SEG391 [179] return + //SEG391 sin8s::@return + //SEG392 [180] return rts - //SEG392 sin8s::@18 + //SEG393 sin8s::@18 b18: - //SEG393 [180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx + //SEG394 [181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4 -- vbsaa=vbsxx txa jmp b4 } -//SEG394 mulu8_sel +//SEG395 mulu8_sel mulu8_sel: { .label _0 = $f .label _1 = $f .label select = $11 - //SEG395 [182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 + //SEG396 [183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5 // (byte) mul8u::a#2 = (byte) mulu8_sel::v1#5 // register copy reg byte x - //SEG396 [183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy + //SEG397 [184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5 -- vbuaa=vbuyy tya - //SEG397 [184] call mul8u - //SEG398 [127] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] - //SEG399 [127] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy - //SEG400 [127] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy + //SEG398 [185] call mul8u + //SEG399 [128] phi from mulu8_sel to mul8u [phi:mulu8_sel->mul8u] + //SEG400 [128] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mulu8_sel->mul8u#0] -- register_copy + //SEG401 [128] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mulu8_sel->mul8u#1] -- register_copy jsr mul8u - //SEG401 [185] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG402 [186] (word) mul8u::return#3 ← (word) mul8u::res#2 // (word) mul8u::return#3 = (word) mul8u::res#2 // register copy zp ZP_WORD:15 - //SEG402 mulu8_sel::@2 - //SEG403 [186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 + //SEG403 mulu8_sel::@2 + //SEG404 [187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3 // (word~) mulu8_sel::$0 = (word) mul8u::return#3 // register copy zp ZP_WORD:15 - //SEG404 [187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 + //SEG405 [188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5 -- vwuz1=vwuz1_rol_vbuz2 ldy select beq !e+ !: @@ -7853,82 +8081,82 @@ mulu8_sel: { dey bne !- !e: - //SEG405 [188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 + //SEG406 [189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1 -- vbuaa=_hi_vwuz1 lda _1+1 - //SEG406 mulu8_sel::@return - //SEG407 [189] return + //SEG407 mulu8_sel::@return + //SEG408 [190] return rts } -//SEG408 div16u +//SEG409 div16u div16u: { .label return = $12 - //SEG409 [191] call divr16u - //SEG410 [195] phi from div16u to divr16u [phi:div16u->divr16u] + //SEG410 [192] call divr16u + //SEG411 [196] phi from div16u to divr16u [phi:div16u->divr16u] jsr divr16u - //SEG411 [192] (word) divr16u::return#2 ← (word) divr16u::return#0 + //SEG412 [193] (word) divr16u::return#2 ← (word) divr16u::return#0 // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:18 - //SEG412 div16u::@2 - //SEG413 [193] (word) div16u::return#0 ← (word) divr16u::return#2 + //SEG413 div16u::@2 + //SEG414 [194] (word) div16u::return#0 ← (word) divr16u::return#2 // (word) div16u::return#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:18 - //SEG414 div16u::@return - //SEG415 [194] return + //SEG415 div16u::@return + //SEG416 [195] return rts } -//SEG416 divr16u +//SEG417 divr16u divr16u: { .label rem = 2 .label dividend = 4 .label quotient = $12 .label return = $12 - //SEG417 [196] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] - //SEG418 [196] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 + //SEG418 [197] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1] + //SEG419 [197] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG419 [196] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 + //SEG420 [197] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1 txa sta quotient sta quotient+1 - //SEG420 [196] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 + //SEG421 [197] phi (word) divr16u::dividend#2 = (const word) PI2_u4f12#0 [phi:divr16u->divr16u::@1#2] -- vwuz1=vwuc1 lda #PI2_u4f12 sta dividend+1 - //SEG421 [196] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 + //SEG422 [197] phi (word) divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#3] -- vwuz1=vbuc1 txa sta rem sta rem+1 - //SEG422 [196] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] - //SEG423 [196] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy - //SEG424 [196] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy - //SEG425 [196] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy - //SEG426 [196] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy - //SEG427 divr16u::@1 + //SEG423 [197] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1] + //SEG424 [197] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy + //SEG425 [197] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy + //SEG426 [197] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy + //SEG427 [197] phi (word) divr16u::rem#4 = (word) divr16u::rem#10 [phi:divr16u::@3->divr16u::@1#3] -- register_copy + //SEG428 divr16u::@1 b1: - //SEG428 [197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG429 [198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl rem rol rem+1 - //SEG429 [198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 + //SEG430 [199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1 lda dividend+1 - //SEG430 [199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 + //SEG431 [200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1 and #$80 - //SEG431 [200] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 + //SEG432 [201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1 cmp #0 beq b2 - //SEG432 divr16u::@4 - //SEG433 [201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 + //SEG433 divr16u::@4 + //SEG434 [202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1 lda #1 ora rem sta rem - //SEG434 [202] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] - //SEG435 [202] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy - //SEG436 divr16u::@2 + //SEG435 [203] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2] + //SEG436 [203] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy + //SEG437 divr16u::@2 b2: - //SEG437 [203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG438 [204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl dividend rol dividend+1 - //SEG438 [204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG439 [205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl quotient rol quotient+1 - //SEG439 [205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 + //SEG440 [206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1 lda rem+1 cmp #>main.tabsize bcc b3 @@ -7937,13 +8165,13 @@ divr16u: { cmp #main.tabsize sta rem+1 - //SEG443 [208] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] - //SEG444 [208] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy - //SEG445 [208] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy - //SEG446 divr16u::@3 + //SEG444 [209] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3] + //SEG445 [209] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy + //SEG446 [209] phi (word) divr16u::rem#10 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy + //SEG447 divr16u::@3 b3: - //SEG447 [209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx + //SEG448 [210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx inx - //SEG448 [210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 + //SEG449 [211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1 cpx #$10 bne b1 - //SEG449 divr16u::@return - //SEG450 [211] return + //SEG450 divr16u::@6 + //SEG451 [212] (word) rem16u#1 ← (word) divr16u::rem#10 + // (word) rem16u#1 = (word) divr16u::rem#10 // register copy zp ZP_WORD:2 + //SEG452 divr16u::@return + //SEG453 [213] return rts } -//SEG451 print_cls +//SEG454 print_cls print_cls: { .label sc = 2 - //SEG452 [213] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG453 [213] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG455 [215] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG456 [215] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG454 [213] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG455 [213] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG456 print_cls::@1 + //SEG457 [215] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG458 [215] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG459 print_cls::@1 b1: - //SEG457 [214] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG460 [216] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG458 [215] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG461 [217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG459 [216] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG462 [218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG460 print_cls::@return - //SEG461 [217] return + //SEG463 print_cls::@return + //SEG464 [219] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/sinusgenscale8.sym b/src/test/ref/sinusgenscale8.sym index da7dd15af..b9f2a389e 100644 --- a/src/test/ref/sinusgenscale8.sym +++ b/src/test/ref/sinusgenscale8.sym @@ -3,10 +3,13 @@ (label) @end (word) PI2_u4f12 (const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(dword) PI2_u4f28 (word) PI_HALF_u4f12 (const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 +(dword) PI_HALF_u4f28 (word) PI_u4f12 (const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868 +(dword) PI_u4f28 (word()) div16u((word) div16u::dividend , (word) div16u::divisor) (label) div16u::@2 (label) div16u::@return @@ -23,6 +26,7 @@ (label) divr16u::@3 (label) divr16u::@4 (label) divr16u::@5 +(label) divr16u::@6 (label) divr16u::@return (word) divr16u::dividend (word) divr16u::dividend#0 dividend zp ZP_WORD:4 2.75 @@ -38,12 +42,12 @@ (word) divr16u::rem (word) divr16u::rem#0 rem zp ZP_WORD:2 8.25 (word) divr16u::rem#1 rem zp ZP_WORD:2 22.0 +(word) divr16u::rem#10 rem zp ZP_WORD:2 11.666666666666666 (word) divr16u::rem#2 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#4 rem zp ZP_WORD:2 22.0 (word) divr16u::rem#5 rem zp ZP_WORD:2 11.0 -(word) divr16u::rem#9 rem zp ZP_WORD:2 11.0 (word) divr16u::return -(word) divr16u::return#0 return zp ZP_WORD:18 7.000000000000001 +(word) divr16u::return#0 return zp ZP_WORD:18 5.833333333333333 (word) divr16u::return#2 return zp ZP_WORD:18 4.0 (void()) main() (label) main::@1 @@ -54,6 +58,7 @@ (const word) main::tabsize#0 tabsize = (byte/signed byte/word/signed word/dword/signed dword) 20 (signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b) (byte~) mul8su::$10 reg byte a 4.0 +(byte~) mul8su::$5 reg byte a 20.0 (byte~) mul8su::$6 reg byte a 4.0 (label) mul8su::@1 (label) mul8su::@2 @@ -201,6 +206,11 @@ (word) print_word::w#2 w zp ZP_WORD:11 22.0 (word) print_word::w#3 w zp ZP_WORD:11 6.333333333333334 (word~) print_word::w#5 w zp ZP_WORD:11 4.0 +(signed word) rem16s +(word) rem16u +(word) rem16u#1 rem16u zp ZP_WORD:2 20.0 +(signed byte) rem8s +(byte) rem8u (signed byte()) sin8s((word) sin8s::x) (word~) sin8s::$6 $6 zp ZP_WORD:11 4.0 (label) sin8s::@1 @@ -317,7 +327,7 @@ (word) sin8u_table::x#1 x zp ZP_WORD:2 7.333333333333333 (word) sin8u_table::x#10 x zp ZP_WORD:2 1.4193548387096775 -zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 divr16u::dividend#2 divr16u::dividend#0 ] zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ] zp ZP_WORD:8 [ print_line_cursor#12 print_line_cursor#23 print_line_cursor#1 ] @@ -341,6 +351,7 @@ reg byte a [ sin8u_table::$21 ] reg byte x [ sin8u_table::sinx_tr#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +reg byte a [ mul8su::$5 ] reg byte a [ mul8su::$6 ] reg byte a [ mul8su::$10 ] reg byte a [ mul8u::$1 ] diff --git a/src/test/ref/test-division.log b/src/test/ref/test-division.log index b741e4e53..62ba18b82 100644 --- a/src/test/ref/test-division.log +++ b/src/test/ref/test-division.log @@ -791,6 +791,7 @@ test_8u: scope:[test_8u] from main::@1 (byte) rem8u#45 ← phi( main::@1/(byte) rem8u#33 ) (byte[]) test_8u::dividends#0 ← { (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255, (byte/word/signed word/dword/signed dword) 255 } (byte[]) test_8u::divisors#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 11, (byte/signed byte/word/signed word/dword/signed dword) 13, (byte/signed byte/word/signed word/dword/signed dword) 17, (byte/signed byte/word/signed word/dword/signed dword) 19 } + (byte) test_8u::rem#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) test_8u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:test_8u::@1 test_8u::@1: scope:[test_8u] from test_8u test_8u::@11 @@ -2512,6 +2513,8 @@ SYMBOL TABLE SSA (byte) test_8u::i#7 (byte) test_8u::i#8 (byte) test_8u::i#9 +(byte) test_8u::rem +(byte) test_8u::rem#0 (byte) test_8u::res (byte) test_8u::res#0 (byte) test_8u::res#1 @@ -2960,6 +2963,7 @@ Constant (const word) divr16s::divisoru#0 = 0 Constant (const signed word) divr16s::rem#0 = 0 Constant (const byte[]) test_8u::dividends#0 = { 255, 255, 255, 255, 255, 255 } Constant (const byte[]) test_8u::divisors#0 = { 5, 7, 11, 13, 17, 19 } +Constant (const byte) test_8u::rem#0 = 0 Constant (const byte) test_8u::i#0 = 0 Constant (const byte*) print_str::str#1 = test_8u::str Constant (const byte*) print_str::str#2 = test_8u::str1 @@ -4219,6 +4223,7 @@ VARIABLE REGISTER WEIGHTS (byte) test_8u::i (byte) test_8u::i#1 11.0 (byte) test_8u::i#10 1.8333333333333333 +(byte) test_8u::rem (byte) test_8u::res (byte) test_8u::res#0 2.4444444444444446 @@ -9102,6 +9107,7 @@ FINAL SYMBOL TABLE (byte) test_8u::i (byte) test_8u::i#1 i zp ZP_BYTE:2 11.0 (byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333 +(byte) test_8u::rem (byte) test_8u::res (byte) test_8u::res#0 res zp ZP_BYTE:17 2.4444444444444446 (const string) test_8u::str str = (string) " / @" diff --git a/src/test/ref/test-division.sym b/src/test/ref/test-division.sym index 10b7d239b..a9c04fd3c 100644 --- a/src/test/ref/test-division.sym +++ b/src/test/ref/test-division.sym @@ -407,6 +407,7 @@ (byte) test_8u::i (byte) test_8u::i#1 i zp ZP_BYTE:2 11.0 (byte) test_8u::i#10 i zp ZP_BYTE:2 1.8333333333333333 +(byte) test_8u::rem (byte) test_8u::res (byte) test_8u::res#0 res zp ZP_BYTE:17 2.4444444444444446 (const string) test_8u::str str = (string) " / @" diff --git a/src/test/ref/test-interrupt-volatile-write.asm b/src/test/ref/test-interrupt-volatile-write.asm new file mode 100644 index 000000000..0a2940637 --- /dev/null +++ b/src/test/ref/test-interrupt-volatile-write.asm @@ -0,0 +1,37 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 + lda #0 + sta col + jsr main +main: { + lda #irq + sta KERNEL_IRQ+1 + b2: + lda #$a + cmp col + bcs b2 + lda #0 + sta col + jmp b2 +} +irq: { + lda $dc0d + lda col + sta BGCOL + lda col + cmp #0 + bne b1 + clc + adc #2 + sta col + jmp $ea81 + b1: + inc col + jmp $ea81 +} diff --git a/src/test/ref/test-interrupt-volatile-write.cfg b/src/test/ref/test-interrupt-volatile-write.cfg new file mode 100644 index 000000000..6aeca221c --- /dev/null +++ b/src/test/ref/test-interrupt-volatile-write.cfg @@ -0,0 +1,35 @@ +@begin: scope:[] from + [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +@2: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @2 + [3] phi() +main: scope:[main] from @2 + [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() + to:main::@1 +main::@1: scope:[main] from main main::@2 main::@7 + [5] (byte) col#14 ← phi( main/(byte) col#0 main::@7/(byte) col#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [6] if((byte) col#14<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 + to:main::@7 +main::@7: scope:[main] from main::@2 + [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +irq: scope:[irq] from + asm { lda$dc0d } + [9] *((const byte*) BGCOL#0) ← (byte) col#0 + [10] if((byte) col#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 + to:irq::@3 +irq::@3: scope:[irq] from irq + [11] (byte) col#4 ← (byte) col#0 + (byte/signed byte/word/signed word/dword/signed dword) 2 + to:irq::@return +irq::@return: scope:[irq] from irq::@1 irq::@3 + [12] return + to:@return +irq::@1: scope:[irq] from irq + [13] (byte) col#3 ← ++ (byte) col#0 + to:irq::@return diff --git a/src/test/ref/test-interrupt-volatile-write.log b/src/test/ref/test-interrupt-volatile-write.log new file mode 100644 index 000000000..166cc9ede --- /dev/null +++ b/src/test/ref/test-interrupt-volatile-write.log @@ -0,0 +1,561 @@ +Resolved forward reference irq to interrupt(KERNEL_MIN)(void()) irq() + +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +main: scope:[main] from @2 + (byte) col#16 ← phi( @2/(byte) col#15 ) + (void()*~) main::$0 ← & interrupt(KERNEL_MIN)(void()) irq() + *((void()**) KERNEL_IRQ#0) ← (void()*~) main::$0 + to:main::@1 +main::@1: scope:[main] from main main::@4 main::@7 + (byte) col#14 ← phi( main/(byte) col#16 main::@4/(byte) col#17 main::@7/(byte) col#1 ) + if(true) goto main::@2 + to:main::@return +main::@2: scope:[main] from main::@1 + (byte) col#7 ← phi( main::@1/(byte) col#14 ) + (bool~) main::$1 ← (byte) col#7 > (byte/signed byte/word/signed word/dword/signed dword) 10 + (bool~) main::$2 ← ! (bool~) main::$1 + if((bool~) main::$2) goto main::@4 + to:main::@7 +main::@4: scope:[main] from main::@2 + (byte) col#17 ← phi( main::@2/(byte) col#7 ) + to:main::@1 +main::@7: scope:[main] from main::@2 + (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@return: scope:[main] from main::@1 + (byte) col#8 ← phi( main::@1/(byte) col#14 ) + (byte) col#2 ← (byte) col#8 + return + to:@return +irq: scope:[irq] from + (byte) col#9 ← phi( @2/(byte) col#15 ) + asm { lda$dc0d } + *((byte*) BGCOL#0) ← (byte) col#9 + (bool~) irq::$0 ← (byte) col#9 != (byte/signed byte/word/signed word/dword/signed dword) 0 + if((bool~) irq::$0) goto irq::@1 + to:irq::@3 +irq::@1: scope:[irq] from irq + (byte) col#10 ← phi( irq/(byte) col#9 ) + (byte) col#3 ← ++ (byte) col#10 + to:irq::@return +irq::@3: scope:[irq] from irq + (byte) col#11 ← phi( irq/(byte) col#9 ) + (byte) col#4 ← (byte) col#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 + to:irq::@return +irq::@return: scope:[irq] from irq::@1 irq::@3 + (byte) col#12 ← phi( irq::@1/(byte) col#3 irq::@3/(byte) col#4 ) + (byte) col#5 ← (byte) col#12 + return + to:@return +@2: scope:[] from @begin + (byte) col#15 ← phi( @begin/(byte) col#0 ) + call main + to:@3 +@3: scope:[] from @2 + (byte) col#13 ← phi( @2/(byte) col#2 ) + (byte) col#6 ← (byte) col#13 + to:@end +@end: scope:[] from @3 + +SYMBOL TABLE SSA +(label) @2 +(label) @3 +(label) @begin +(label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte) col +(byte) col#0 +(byte) col#1 +(byte) col#10 +(byte) col#11 +(byte) col#12 +(byte) col#13 +(byte) col#14 +(byte) col#15 +(byte) col#16 +(byte) col#17 +(byte) col#2 +(byte) col#3 +(byte) col#4 +(byte) col#5 +(byte) col#6 +(byte) col#7 +(byte) col#8 +(byte) col#9 +interrupt(KERNEL_MIN)(void()) irq() +(bool~) irq::$0 +(label) irq::@1 +(label) irq::@3 +(label) irq::@return +(void()) main() +(void()*~) main::$0 +(bool~) main::$1 +(bool~) main::$2 +(label) main::@1 +(label) main::@2 +(label) main::@4 +(label) main::@7 +(label) main::@return + +Inversing boolean not (bool~) main::$2 ← (byte) col#7 <= (byte/signed byte/word/signed word/dword/signed dword) 10 from (bool~) main::$1 ← (byte) col#7 > (byte/signed byte/word/signed word/dword/signed dword) 10 +Successful SSA optimization Pass2UnaryNotSimplification +Alias (byte) col#14 = (byte) col#7 (byte) col#17 (byte) col#8 (byte) col#2 +Alias (byte) col#10 = (byte) col#9 (byte) col#11 +Alias (byte) col#12 = (byte) col#5 +Alias (byte) col#0 = (byte) col#15 +Alias (byte) col#13 = (byte) col#6 +Successful SSA optimization Pass2AliasElimination +Self Phi Eliminated (byte) col#14 +Successful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte) col#16 (byte) col#0 +Redundant Phi (byte) col#10 (byte) col#0 +Redundant Phi (byte) col#13 (byte) col#14 +Successful SSA optimization Pass2RedundantPhiElimination +Simple Condition (bool~) main::$2 if((byte) col#14<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@4 +Simple Condition (bool~) irq::$0 if((byte) col#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 +Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const byte*) BGCOL#0 = ((byte*))53280 +Constant (const void()*) main::$0 = &irq +Successful SSA optimization Pass2ConstantIdentification +if() condition always true - replacing block destination if(true) goto main::@2 +Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars +Removing unused block main::@return +Successful SSA optimization Pass2EliminateUnusedBlocks +Culled Empty Block (label) main::@4 +Culled Empty Block (label) @3 +Successful SSA optimization Pass2CullEmptyBlocks +Constant inlined main::$0 = &interrupt(KERNEL_MIN)(void()) irq() +Successful SSA optimization Pass2ConstantInlining +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @end +CALL GRAPH +Calls in [] to main:2 + +Created 1 initial phi equivalence classes +Coalesced [5] col#18 ← col#0 +Coalesced [9] col#19 ← col#1 +Coalesced down to 1 phi equivalence classes +Adding NOP phi() at start of @2 +Adding NOP phi() at start of @end + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:@2 +@2: scope:[] from @begin + [1] phi() + [2] call main + to:@end +@end: scope:[] from @2 + [3] phi() +main: scope:[main] from @2 + [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() + to:main::@1 +main::@1: scope:[main] from main main::@2 main::@7 + [5] (byte) col#14 ← phi( main/(byte) col#0 main::@7/(byte) col#1 ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [6] if((byte) col#14<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 + to:main::@7 +main::@7: scope:[main] from main::@2 + [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +irq: scope:[irq] from + asm { lda$dc0d } + [9] *((const byte*) BGCOL#0) ← (byte) col#0 + [10] if((byte) col#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 + to:irq::@3 +irq::@3: scope:[irq] from irq + [11] (byte) col#4 ← (byte) col#0 + (byte/signed byte/word/signed word/dword/signed dword) 2 + to:irq::@return +irq::@return: scope:[irq] from irq::@1 irq::@3 + [12] return + to:@return +irq::@1: scope:[irq] from irq + [13] (byte) col#3 ← ++ (byte) col#0 + to:irq::@return + + +VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(void()**) KERNEL_IRQ +(byte) col +(byte) col#0 1.9999999999999998 +(byte) col#1 22.0 +(byte) col#14 114.0 +(byte) col#3 20.0 +(byte) col#4 20.0 +interrupt(KERNEL_MIN)(void()) irq() +(void()) main() + +Initial phi equivalence classes +[ col#14 col#0 col#1 ] +Added variable col#4 to zero page equivalence class [ col#4 ] +Added variable col#3 to zero page equivalence class [ col#3 ] +Complete equivalence classes +[ col#14 col#0 col#1 ] +[ col#4 ] +[ col#3 ] +Allocated zp ZP_BYTE:2 [ col#14 col#0 col#1 ] +Allocated zp ZP_BYTE:3 [ col#4 ] +Allocated zp ZP_BYTE:4 [ col#3 ] + +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 + .label col_3 = 4 + .label col_4 = 3 +//SEG2 @begin +bbegin: +//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +b2_from_bbegin: + jmp b2 +//SEG5 @2 +b2: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +bend_from_b2: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG11 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + b1_from_main: + b1_from_b7: + //SEG12 [5] phi (byte) col#14 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + jmp b1 + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + b1_from_b2: + jmp b1 + //SEG14 main::@1 + b1: + jmp b2 + //SEG15 main::@2 + b2: + //SEG16 [6] if((byte) col#14<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_le_vbuc1_then_la1 + lda #$a + cmp col + bcs b1_from_b2 + jmp b7 + //SEG17 main::@7 + b7: + //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col + jmp b1_from_b7 +} +//SEG19 irq +irq: { + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 asm { lda$dc0d } + lda $dc0d + //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + lda col + sta BGCOL + //SEG23 [10] if((byte) col#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuz1_neq_0_then_la1 + lda col + cmp #0 + bne b1 + jmp b3 + //SEG24 irq::@3 + b3: + //SEG25 [11] (byte) col#4 ← (byte) col#0 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz2_plus_2 + lda col + clc + adc #2 + sta col_4 + jmp breturn + //SEG26 irq::@return + breturn: + //SEG27 [12] return - exit interrupt(KERNEL_MIN) + jmp $ea81 + //SEG28 irq::@1 + b1: + //SEG29 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz2 + ldy col + iny + sty col_3 + jmp breturn +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ col#0 ] ( ) always clobbers reg byte a +Statement [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() [ col#0 ] ( main:2 [ col#0 ] ) always clobbers reg byte a +Statement [6] if((byte) col#14<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ col#1 ] ( main:2 [ col#1 ] ) always clobbers reg byte a +Statement asm { lda$dc0d } always clobbers reg byte a +Statement [9] *((const byte*) BGCOL#0) ← (byte) col#0 [ col#0 ] ( ) always clobbers reg byte a +Statement [10] if((byte) col#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 [ col#0 ] ( ) always clobbers reg byte a +Statement [11] (byte) col#4 ← (byte) col#0 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( ) always clobbers reg byte a +Statement [13] (byte) col#3 ← ++ (byte) col#0 [ ] ( ) always clobbers reg byte y +Potential registers zp ZP_BYTE:2 [ col#14 col#0 col#1 ] : zp ZP_BYTE:2 , +Potential registers zp ZP_BYTE:3 [ col#4 ] : zp ZP_BYTE:3 , +Potential registers zp ZP_BYTE:4 [ col#3 ] : zp ZP_BYTE:4 , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 138: zp ZP_BYTE:2 [ col#14 col#0 col#1 ] 20: zp ZP_BYTE:3 [ col#4 ] 20: zp ZP_BYTE:4 [ col#3 ] +Uplift Scope [main] +Uplift Scope [irq] + +Uplifting [] best 1837 combination zp ZP_BYTE:2 [ col#14 col#0 col#1 ] zp ZP_BYTE:3 [ col#4 ] zp ZP_BYTE:4 [ col#3 ] +Uplifting [main] best 1837 combination +Uplifting [irq] best 1837 combination +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ col#14 col#0 col#1 ] +Uplifting [] best 1837 combination zp ZP_BYTE:2 [ col#14 col#0 col#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:3 [ col#4 ] +Uplifting [] best 1837 combination zp ZP_BYTE:3 [ col#4 ] +Attempting to uplift remaining variables inzp ZP_BYTE:4 [ col#3 ] +Uplifting [] best 1837 combination zp ZP_BYTE:4 [ col#3 ] +Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ col#14 col#0 col#1 ] ] with [ zp ZP_BYTE:3 [ col#4 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ col#14 col#0 col#1 col#4 ] ] with [ zp ZP_BYTE:4 [ col#3 ] ] - score: 1 + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 +//SEG2 @begin +bbegin: +//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +b2_from_bbegin: + jmp b2 +//SEG5 @2 +b2: +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +bend_from_b2: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG11 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + b1_from_main: + b1_from_b7: + //SEG12 [5] phi (byte) col#14 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + jmp b1 + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + b1_from_b2: + jmp b1 + //SEG14 main::@1 + b1: + jmp b2 + //SEG15 main::@2 + b2: + //SEG16 [6] if((byte) col#14<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_le_vbuc1_then_la1 + lda #$a + cmp col + bcs b1_from_b2 + jmp b7 + //SEG17 main::@7 + b7: + //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col + jmp b1_from_b7 +} +//SEG19 irq +irq: { + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 asm { lda$dc0d } + lda $dc0d + //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + lda col + sta BGCOL + //SEG23 [10] if((byte) col#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuz1_neq_0_then_la1 + lda col + cmp #0 + bne b1 + jmp b3 + //SEG24 irq::@3 + b3: + //SEG25 [11] (byte) col#4 ← (byte) col#0 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + lda col + clc + adc #2 + sta col + jmp breturn + //SEG26 irq::@return + breturn: + //SEG27 [12] return - exit interrupt(KERNEL_MIN) + jmp $ea81 + //SEG28 irq::@1 + b1: + //SEG29 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 + inc col + jmp breturn +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b2 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b7 +Removing instruction jmp b3 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label b1 with b2 +Replacing label b1_from_b2 with b2 +Removing instruction b2_from_bbegin: +Removing instruction bend_from_b2: +Removing instruction b1_from_main: +Removing instruction b1_from_b2: +Removing instruction b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction bbegin: +Removing instruction b2: +Removing instruction bend: +Removing instruction b7: +Removing instruction b3: +Succesful ASM optimization Pass5UnusedLabelElimination +Skipping double jump to b2 in jmp b1_from_b7 +Skipping double jump to $ea81 in jmp breturn +Succesful ASM optimization Pass5DoubleJumpElimination +Relabelling long label b1_from_b7 to b1 +Succesful ASM optimization Pass5RelabelLongLabels +Removing instruction jmp b2 +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda col +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Removing instruction b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination + +FINAL SYMBOL TABLE +(label) @2 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53280 +(void()**) KERNEL_IRQ +(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte) col +(byte) col#0 col zp ZP_BYTE:2 1.9999999999999998 +(byte) col#1 col zp ZP_BYTE:2 22.0 +(byte) col#14 col zp ZP_BYTE:2 114.0 +(byte) col#3 col zp ZP_BYTE:2 20.0 +(byte) col#4 col zp ZP_BYTE:2 20.0 +interrupt(KERNEL_MIN)(void()) irq() +(label) irq::@1 +(label) irq::@3 +(label) irq::@return +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@7 + +zp ZP_BYTE:2 [ col#14 col#0 col#1 col#4 col#3 ] + + +FINAL ASSEMBLER +Score: 889 + +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .label KERNEL_IRQ = $314 + .label BGCOL = $d020 + .label col = 2 +//SEG2 @begin +//SEG3 [0] (byte) col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col +//SEG4 [1] phi from @begin to @2 [phi:@begin->@2] +//SEG5 @2 +//SEG6 [2] call main + jsr main +//SEG7 [3] phi from @2 to @end [phi:@2->@end] +//SEG8 @end +//SEG9 main +main: { + //SEG10 [4] *((const void()**) KERNEL_IRQ#0) ← &interrupt(KERNEL_MIN)(void()) irq() -- _deref_pptc1=pprc2 + lda #irq + sta KERNEL_IRQ+1 + //SEG11 [5] phi from main main::@7 to main::@1 [phi:main/main::@7->main::@1] + //SEG12 [5] phi (byte) col#14 = (byte) col#0 [phi:main/main::@7->main::@1#0] -- register_copy + //SEG13 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG14 main::@1 + //SEG15 main::@2 + b2: + //SEG16 [6] if((byte) col#14<=(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 -- vbuz1_le_vbuc1_then_la1 + lda #$a + cmp col + bcs b2 + //SEG17 main::@7 + //SEG18 [7] (byte) col#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1 + lda #0 + sta col + jmp b2 +} +//SEG19 irq +irq: { + //SEG20 entry interrupt(KERNEL_MIN) + //SEG21 asm { lda$dc0d } + lda $dc0d + //SEG22 [9] *((const byte*) BGCOL#0) ← (byte) col#0 -- _deref_pbuc1=vbuz1 + lda col + sta BGCOL + //SEG23 [10] if((byte) col#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1 -- vbuz1_neq_0_then_la1 + lda col + cmp #0 + bne b1 + //SEG24 irq::@3 + //SEG25 [11] (byte) col#4 ← (byte) col#0 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2 + clc + adc #2 + sta col + //SEG26 irq::@return + //SEG27 [12] return - exit interrupt(KERNEL_MIN) + jmp $ea81 + //SEG28 irq::@1 + b1: + //SEG29 [13] (byte) col#3 ← ++ (byte) col#0 -- vbuz1=_inc_vbuz1 + inc col + jmp $ea81 +} + diff --git a/src/test/ref/test-interrupt-volatile-write.sym b/src/test/ref/test-interrupt-volatile-write.sym new file mode 100644 index 000000000..b2cb87b29 --- /dev/null +++ b/src/test/ref/test-interrupt-volatile-write.sym @@ -0,0 +1,23 @@ +(label) @2 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53280 +(void()**) KERNEL_IRQ +(const void()**) KERNEL_IRQ#0 KERNEL_IRQ = ((void()**))(word/signed word/dword/signed dword) 788 +(byte) col +(byte) col#0 col zp ZP_BYTE:2 1.9999999999999998 +(byte) col#1 col zp ZP_BYTE:2 22.0 +(byte) col#14 col zp ZP_BYTE:2 114.0 +(byte) col#3 col zp ZP_BYTE:2 20.0 +(byte) col#4 col zp ZP_BYTE:2 20.0 +interrupt(KERNEL_MIN)(void()) irq() +(label) irq::@1 +(label) irq::@3 +(label) irq::@return +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@7 + +zp ZP_BYTE:2 [ col#14 col#0 col#1 col#4 col#3 ] diff --git a/src/test/ref/test-interrupt-volatile.log b/src/test/ref/test-interrupt-volatile.log index 8a837a931..ce1d31223 100644 --- a/src/test/ref/test-interrupt-volatile.log +++ b/src/test/ref/test-interrupt-volatile.log @@ -25,7 +25,7 @@ main::@return: scope:[main] from main::@1 return to:@return irq: scope:[irq] from - (byte) col#6 ← phi( @begin/(byte) col#0 ) + (byte) col#6 ← phi( @2/(byte) col#9 ) asm { lda$dc0d } *((byte*) BGCOL#0) ← (byte) col#6 to:irq::@return diff --git a/src/test/ref/test-keyboard-space.cfg b/src/test/ref/test-keyboard-space.cfg index ac66327aa..dfc712c55 100644 --- a/src/test/ref/test-keyboard-space.cfg +++ b/src/test/ref/test-keyboard-space.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@11 -@11: scope:[] from @begin + to:@12 +@12: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @11 +@end: scope:[] from @12 [3] phi() -main: scope:[main] from @11 +main: scope:[main] from @12 [4] phi() [5] call keyboard_init to:main::@4 diff --git a/src/test/ref/test-keyboard-space.log b/src/test/ref/test-keyboard-space.log index cded97ca7..6003e7c16 100644 --- a/src/test/ref/test-keyboard-space.log +++ b/src/test/ref/test-keyboard-space.log @@ -2,20 +2,155 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 - to:@3 -@3: scope:[] from @begin + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin + (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) KEY_4#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) KEY_Z#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) KEY_S#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) KEY_E#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + (byte) KEY_5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) KEY_R#0 ← (byte/signed byte/word/signed word/dword/signed dword) 17 + (byte) KEY_D#0 ← (byte/signed byte/word/signed word/dword/signed dword) 18 + (byte) KEY_6#0 ← (byte/signed byte/word/signed word/dword/signed dword) 19 + (byte) KEY_C#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 + (byte) KEY_F#0 ← (byte/signed byte/word/signed word/dword/signed dword) 21 + (byte) KEY_T#0 ← (byte/signed byte/word/signed word/dword/signed dword) 22 + (byte) KEY_X#0 ← (byte/signed byte/word/signed word/dword/signed dword) 23 + (byte) KEY_7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 + (byte) KEY_Y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 25 + (byte) KEY_G#0 ← (byte/signed byte/word/signed word/dword/signed dword) 26 + (byte) KEY_8#0 ← (byte/signed byte/word/signed word/dword/signed dword) 27 + (byte) KEY_B#0 ← (byte/signed byte/word/signed word/dword/signed dword) 28 + (byte) KEY_H#0 ← (byte/signed byte/word/signed word/dword/signed dword) 29 + (byte) KEY_U#0 ← (byte/signed byte/word/signed word/dword/signed dword) 30 + (byte) KEY_V#0 ← (byte/signed byte/word/signed word/dword/signed dword) 31 + (byte) KEY_9#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) KEY_I#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33 + (byte) KEY_J#0 ← (byte/signed byte/word/signed word/dword/signed dword) 34 + (byte) KEY_0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 35 + (byte) KEY_M#0 ← (byte/signed byte/word/signed word/dword/signed dword) 36 + (byte) KEY_K#0 ← (byte/signed byte/word/signed word/dword/signed dword) 37 + (byte) KEY_O#0 ← (byte/signed byte/word/signed word/dword/signed dword) 38 + (byte) KEY_N#0 ← (byte/signed byte/word/signed word/dword/signed dword) 39 + (byte) KEY_PLUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte) KEY_P#0 ← (byte/signed byte/word/signed word/dword/signed dword) 41 + (byte) KEY_L#0 ← (byte/signed byte/word/signed word/dword/signed dword) 42 + (byte) KEY_MINUS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 43 + (byte) KEY_DOT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 44 + (byte) KEY_COLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 45 + (byte) KEY_AT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 46 + (byte) KEY_COMMA#0 ← (byte/signed byte/word/signed word/dword/signed dword) 47 + (byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 + (byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52 + (byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 + (byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 57 + (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58 + (byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 + (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 + (byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62 + (byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 63 + (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@11 + to:@8 keyboard_init: scope:[keyboard_init] from main *((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -57,7 +192,19 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#3 return to:@return -main: scope:[main] from @11 +@8: scope:[] from @4 + (byte[8]) keyboard_events#0 ← { fill( 8, 0) } + (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_MODIFIER_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 + (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 + (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } + to:@12 +main: scope:[main] from @12 call keyboard_init to:main::@13 main::@13: scope:[main] from main @@ -91,23 +238,43 @@ main::@10: scope:[main] from main::@14 main::@return: scope:[main] from main::@1 return to:@return -@11: scope:[] from @3 +@12: scope:[] from @8 call main - to:@12 -@12: scope:[] from @11 + to:@13 +@13: scope:[] from @12 to:@end -@end: scope:[] from @12 +@end: scope:[] from @13 SYMBOL TABLE SSA -(label) @11 +(byte~) $0 (label) @12 -(label) @3 +(label) @13 +(label) @4 +(label) @8 (label) @begin (label) @end (byte*) BGCOL (byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 (byte) BLUE (byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A#0 (byte*) CIA1_PORT_A_DDR @@ -116,12 +283,278 @@ SYMBOL TABLE SSA (byte*) CIA1_PORT_B#0 (byte*) CIA1_PORT_B_DDR (byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 (byte) GREEN (byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 +(byte) KEY_0 +(byte) KEY_0#0 +(byte) KEY_1 +(byte) KEY_1#0 +(byte) KEY_2 +(byte) KEY_2#0 +(byte) KEY_3 +(byte) KEY_3#0 +(byte) KEY_4 +(byte) KEY_4#0 +(byte) KEY_5 +(byte) KEY_5#0 +(byte) KEY_6 +(byte) KEY_6#0 +(byte) KEY_7 +(byte) KEY_7#0 +(byte) KEY_8 +(byte) KEY_8#0 +(byte) KEY_9 +(byte) KEY_9#0 +(byte) KEY_A +(byte) KEY_A#0 +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_LEFT#0 +(byte) KEY_ARROW_UP +(byte) KEY_ARROW_UP#0 +(byte) KEY_ASTERISK +(byte) KEY_ASTERISK#0 +(byte) KEY_AT +(byte) KEY_AT#0 +(byte) KEY_B +(byte) KEY_B#0 +(byte) KEY_C +(byte) KEY_C#0 +(byte) KEY_COLON +(byte) KEY_COLON#0 +(byte) KEY_COMMA +(byte) KEY_COMMA#0 +(byte) KEY_COMMODORE +(byte) KEY_COMMODORE#0 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_DOWN#0 +(byte) KEY_CRSR_RIGHT +(byte) KEY_CRSR_RIGHT#0 +(byte) KEY_CTRL +(byte) KEY_CTRL#0 +(byte) KEY_D +(byte) KEY_D#0 +(byte) KEY_DEL +(byte) KEY_DEL#0 +(byte) KEY_DOT +(byte) KEY_DOT#0 +(byte) KEY_E +(byte) KEY_E#0 +(byte) KEY_EQUALS +(byte) KEY_EQUALS#0 +(byte) KEY_F +(byte) KEY_F#0 +(byte) KEY_F1 +(byte) KEY_F1#0 +(byte) KEY_F3 +(byte) KEY_F3#0 +(byte) KEY_F5 +(byte) KEY_F5#0 +(byte) KEY_F7 +(byte) KEY_F7#0 +(byte) KEY_G +(byte) KEY_G#0 +(byte) KEY_H +(byte) KEY_H#0 +(byte) KEY_HOME +(byte) KEY_HOME#0 +(byte) KEY_I +(byte) KEY_I#0 +(byte) KEY_J +(byte) KEY_J#0 +(byte) KEY_K +(byte) KEY_K#0 +(byte) KEY_L +(byte) KEY_L#0 +(byte) KEY_LSHIFT +(byte) KEY_LSHIFT#0 +(byte) KEY_M +(byte) KEY_M#0 +(byte) KEY_MINUS +(byte) KEY_MINUS#0 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_COMMODORE#0 +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_CTRL#0 +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_LSHIFT#0 +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_MODIFIER_SHIFT#0 +(byte) KEY_N +(byte) KEY_N#0 +(byte) KEY_O +(byte) KEY_O#0 +(byte) KEY_P +(byte) KEY_P#0 +(byte) KEY_PLUS +(byte) KEY_PLUS#0 +(byte) KEY_POUND +(byte) KEY_POUND#0 +(byte) KEY_Q +(byte) KEY_Q#0 +(byte) KEY_R +(byte) KEY_R#0 +(byte) KEY_RETURN +(byte) KEY_RETURN#0 +(byte) KEY_RSHIFT +(byte) KEY_RSHIFT#0 +(byte) KEY_RUNSTOP +(byte) KEY_RUNSTOP#0 +(byte) KEY_S +(byte) KEY_S#0 +(byte) KEY_SEMICOLON +(byte) KEY_SEMICOLON#0 +(byte) KEY_SLASH +(byte) KEY_SLASH#0 (byte) KEY_SPACE (byte) KEY_SPACE#0 +(byte) KEY_T +(byte) KEY_T#0 +(byte) KEY_U +(byte) KEY_U#0 +(byte) KEY_V +(byte) KEY_V#0 +(byte) KEY_W +(byte) KEY_W#0 +(byte) KEY_X +(byte) KEY_X#0 +(byte) KEY_Y +(byte) KEY_Y#0 +(byte) KEY_Z +(byte) KEY_Z#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 +(byte[]) keyboard_char_keycodes +(byte[]) keyboard_char_keycodes#0 +(byte[8]) keyboard_events +(byte[8]) keyboard_events#0 +(byte) keyboard_events_size +(byte) keyboard_events_size#0 (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) @@ -163,6 +596,10 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid#1 (byte[8]) keyboard_matrix_row_bitmask (byte[8]) keyboard_matrix_row_bitmask#0 +(byte) keyboard_modifiers +(byte) keyboard_modifiers#0 +(byte[8]) keyboard_scan_values +(byte[8]) keyboard_scan_values#0 (void()) main() (bool~) main::$1 (byte~) main::$2 @@ -179,13 +616,14 @@ SYMBOL TABLE SSA Culled Empty Block (label) main::@13 Culled Empty Block (label) main::@2 -Culled Empty Block (label) @12 +Culled Empty Block (label) @13 Successful SSA optimization Pass2CullEmptyBlocks Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1 Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1 Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4 Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#3 (byte) keyboard_key_pressed::return#1 +Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#4 Successful SSA optimization Pass2AliasElimination Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0 @@ -194,18 +632,162 @@ Successful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$1 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 Simple Condition (bool~) main::$3 if((byte~) main::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 Constant (const byte) GREEN#0 = 5 Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte) KEY_DEL#0 = 0 +Constant (const byte) KEY_RETURN#0 = 1 +Constant (const byte) KEY_CRSR_RIGHT#0 = 2 +Constant (const byte) KEY_F7#0 = 3 +Constant (const byte) KEY_F1#0 = 4 +Constant (const byte) KEY_F3#0 = 5 +Constant (const byte) KEY_F5#0 = 6 +Constant (const byte) KEY_CRSR_DOWN#0 = 7 +Constant (const byte) KEY_3#0 = 8 +Constant (const byte) KEY_W#0 = 9 +Constant (const byte) KEY_A#0 = 10 +Constant (const byte) KEY_4#0 = 11 +Constant (const byte) KEY_Z#0 = 12 +Constant (const byte) KEY_S#0 = 13 +Constant (const byte) KEY_E#0 = 14 +Constant (const byte) KEY_LSHIFT#0 = 15 +Constant (const byte) KEY_5#0 = 16 +Constant (const byte) KEY_R#0 = 17 +Constant (const byte) KEY_D#0 = 18 +Constant (const byte) KEY_6#0 = 19 +Constant (const byte) KEY_C#0 = 20 +Constant (const byte) KEY_F#0 = 21 +Constant (const byte) KEY_T#0 = 22 +Constant (const byte) KEY_X#0 = 23 +Constant (const byte) KEY_7#0 = 24 +Constant (const byte) KEY_Y#0 = 25 +Constant (const byte) KEY_G#0 = 26 +Constant (const byte) KEY_8#0 = 27 +Constant (const byte) KEY_B#0 = 28 +Constant (const byte) KEY_H#0 = 29 +Constant (const byte) KEY_U#0 = 30 +Constant (const byte) KEY_V#0 = 31 +Constant (const byte) KEY_9#0 = 32 +Constant (const byte) KEY_I#0 = 33 +Constant (const byte) KEY_J#0 = 34 +Constant (const byte) KEY_0#0 = 35 +Constant (const byte) KEY_M#0 = 36 +Constant (const byte) KEY_K#0 = 37 +Constant (const byte) KEY_O#0 = 38 +Constant (const byte) KEY_N#0 = 39 +Constant (const byte) KEY_PLUS#0 = 40 +Constant (const byte) KEY_P#0 = 41 +Constant (const byte) KEY_L#0 = 42 +Constant (const byte) KEY_MINUS#0 = 43 +Constant (const byte) KEY_DOT#0 = 44 +Constant (const byte) KEY_COLON#0 = 45 +Constant (const byte) KEY_AT#0 = 46 +Constant (const byte) KEY_COMMA#0 = 47 +Constant (const byte) KEY_POUND#0 = 48 +Constant (const byte) KEY_ASTERISK#0 = 49 +Constant (const byte) KEY_SEMICOLON#0 = 50 +Constant (const byte) KEY_HOME#0 = 51 +Constant (const byte) KEY_RSHIFT#0 = 52 +Constant (const byte) KEY_EQUALS#0 = 53 +Constant (const byte) KEY_ARROW_UP#0 = 54 +Constant (const byte) KEY_SLASH#0 = 55 +Constant (const byte) KEY_1#0 = 56 +Constant (const byte) KEY_ARROW_LEFT#0 = 57 +Constant (const byte) KEY_CTRL#0 = 58 +Constant (const byte) KEY_2#0 = 59 Constant (const byte) KEY_SPACE#0 = 60 +Constant (const byte) KEY_COMMODORE#0 = 61 +Constant (const byte) KEY_Q#0 = 62 +Constant (const byte) KEY_RUNSTOP#0 = 63 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } +Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) } +Constant (const byte) keyboard_events_size#0 = 0 +Constant (const byte) keyboard_modifiers#0 = 0 +Constant (const byte) KEY_MODIFIER_LSHIFT#0 = 1 +Constant (const byte) KEY_MODIFIER_RSHIFT#0 = 2 +Constant (const byte) KEY_MODIFIER_CTRL#0 = 4 +Constant (const byte) KEY_MODIFIER_COMMODORE#0 = 8 +Constant (const byte[8]) keyboard_scan_values#0 = { fill( 8, 0) } Successful SSA optimization Pass2ConstantIdentification +Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } +Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 Constant (const byte) keyboard_key_pressed::key#0 = KEY_SPACE#0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) keyboard_key_pressed::colidx#0 = keyboard_key_pressed::key#0&7 @@ -218,16 +800,19 @@ Consolidated array index constant in *(keyboard_matrix_col_bitmask#0+keyboard_ke Successful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 +Culled Empty Block (label) @8 Culled Empty Block (label) main::@1 Successful SSA optimization Pass2CullEmptyBlocks Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_SPACE#0 Constant inlined keyboard_matrix_read::rowid#0 = (const byte) keyboard_key_pressed::rowidx#0 Successful SSA optimization Pass2ConstantInlining Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @12 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@9 @@ -240,7 +825,7 @@ Calls in [keyboard_key_pressed] to keyboard_matrix_read:15 Created 0 initial phi equivalence classes Coalesced down to 0 phi equivalence classes Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @12 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@9 @@ -249,14 +834,14 @@ Adding NOP phi() at start of keyboard_key_pressed FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@11 -@11: scope:[] from @begin + to:@12 +@12: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @11 +@end: scope:[] from @12 [3] phi() -main: scope:[main] from @11 +main: scope:[main] from @12 [4] phi() [5] call keyboard_init to:main::@4 @@ -308,14 +893,156 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init VARIABLE REGISTER WEIGHTS (byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK (byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (void()) keyboard_init() (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) (byte~) keyboard_key_pressed::$2 4.0 @@ -333,6 +1060,8 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_matrix_read::row_pressed_bits (byte) keyboard_matrix_read::rowid (byte[8]) keyboard_matrix_row_bitmask +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$2 22.0 @@ -374,17 +1103,17 @@ INITIAL ASM .const KEY_SPACE = $3c //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +b12_from_bbegin: + jmp b12 +//SEG4 @12 +b12: //SEG5 [2] call main -//SEG6 [4] phi from @11 to main [phi:@11->main] -main_from_b11: +//SEG6 [4] phi from @12 to main [phi:@12->main] +main_from_b12: jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG7 [3] phi from @12 to @end [phi:@12->@end] +bend_from_b12: jmp bend //SEG8 @end bend: @@ -544,17 +1273,17 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_SPACE = $3c //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +b12_from_bbegin: + jmp b12 +//SEG4 @12 +b12: //SEG5 [2] call main -//SEG6 [4] phi from @11 to main [phi:@11->main] -main_from_b11: +//SEG6 [4] phi from @12 to main [phi:@12->main] +main_from_b12: jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG7 [3] phi from @12 to @end [phi:@12->@end] +bend_from_b12: jmp bend //SEG8 @end bend: @@ -655,7 +1384,7 @@ keyboard_init: { keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80 ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b11 +Removing instruction jmp b12 Removing instruction jmp bend Removing instruction jmp b4 Removing instruction jmp b9 @@ -667,13 +1396,13 @@ Removing instruction jmp breturn Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction bbegin: -Removing instruction b11_from_bbegin: -Removing instruction main_from_b11: -Removing instruction bend_from_b11: +Removing instruction b12_from_bbegin: +Removing instruction main_from_b12: +Removing instruction bend_from_b12: Removing instruction b9_from_b4: Removing instruction keyboard_key_pressed_from_b9: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b11: +Removing instruction b12: Removing instruction bend: Removing instruction b9: Removing instruction b14: @@ -685,13 +1414,22 @@ Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE -(label) @11 +(label) @12 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK (byte) BLUE (const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -700,12 +1438,145 @@ FINAL SYMBOL TABLE (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 (byte*) CIA1_PORT_B_DDR (const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) @@ -731,6 +1602,8 @@ FINAL SYMBOL TABLE (byte) keyboard_matrix_read::rowid (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$2 reg byte a 22.0 (label) main::@10 @@ -765,12 +1638,12 @@ Score: 1147 .const BLUE = 6 .const KEY_SPACE = $3c //SEG2 @begin -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -//SEG4 @11 +//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG4 @12 //SEG5 [2] call main -//SEG6 [4] phi from @11 to main [phi:@11->main] +//SEG6 [4] phi from @12 to main [phi:@12->main] jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] +//SEG7 [3] phi from @12 to @end [phi:@12->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/ref/test-keyboard-space.sym b/src/test/ref/test-keyboard-space.sym index ce65877ce..2aa3fa979 100644 --- a/src/test/ref/test-keyboard-space.sym +++ b/src/test/ref/test-keyboard-space.sym @@ -1,10 +1,19 @@ -(label) @11 +(label) @12 (label) @begin (label) @end (byte*) BGCOL (const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281 +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK (byte) BLUE (const byte) BLUE#0 BLUE = (byte/signed byte/word/signed word/dword/signed dword) 6 +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -13,12 +22,145 @@ (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 (byte*) CIA1_PORT_B_DDR (const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY (byte) GREEN (const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ +(byte) KEY_0 +(byte) KEY_1 +(byte) KEY_2 +(byte) KEY_3 +(byte) KEY_4 +(byte) KEY_5 +(byte) KEY_6 +(byte) KEY_7 +(byte) KEY_8 +(byte) KEY_9 +(byte) KEY_A +(byte) KEY_ARROW_LEFT +(byte) KEY_ARROW_UP +(byte) KEY_ASTERISK +(byte) KEY_AT +(byte) KEY_B +(byte) KEY_C +(byte) KEY_COLON +(byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL +(byte) KEY_D +(byte) KEY_DEL +(byte) KEY_DOT +(byte) KEY_E +(byte) KEY_EQUALS +(byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 +(byte) KEY_G +(byte) KEY_H +(byte) KEY_HOME +(byte) KEY_I +(byte) KEY_J +(byte) KEY_K +(byte) KEY_L +(byte) KEY_LSHIFT +(byte) KEY_M +(byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_N +(byte) KEY_O +(byte) KEY_P +(byte) KEY_PLUS +(byte) KEY_POUND +(byte) KEY_Q +(byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP +(byte) KEY_S +(byte) KEY_SEMICOLON +(byte) KEY_SLASH (byte) KEY_SPACE (const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) 60 +(byte) KEY_T +(byte) KEY_U +(byte) KEY_V +(byte) KEY_W +(byte) KEY_X +(byte) KEY_Y +(byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW +(byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (void()) keyboard_init() (label) keyboard_init::@return (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key) @@ -44,6 +186,8 @@ (byte) keyboard_matrix_read::rowid (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$2 reg byte a 22.0 (label) main::@10 diff --git a/src/test/ref/test-keyboard.cfg b/src/test/ref/test-keyboard.cfg index 9435d3325..d1c1eb0bb 100644 --- a/src/test/ref/test-keyboard.cfg +++ b/src/test/ref/test-keyboard.cfg @@ -1,13 +1,13 @@ @begin: scope:[] from [0] phi() - to:@11 -@11: scope:[] from @begin + to:@12 +@12: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @11 +@end: scope:[] from @12 [3] phi() -main: scope:[main] from @11 +main: scope:[main] from @12 [4] phi() to:main::@1 main::@1: scope:[main] from main main::@1 diff --git a/src/test/ref/test-keyboard.log b/src/test/ref/test-keyboard.log index c42f1a739..ce95606dc 100644 --- a/src/test/ref/test-keyboard.log +++ b/src/test/ref/test-keyboard.log @@ -2,13 +2,95 @@ Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBa CONTROL FLOW GRAPH SSA @begin: scope:[] from + (byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) PROCPORT_RAM_ALL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 + (byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 + (byte) PROCPORT_RAM_CHARROM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 + (byte) PROCPORT_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 + (byte) PROCPORT_BASIC_KERNEL_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 + (byte*) CHARGEN#0 ← ((byte*)) (word/dword/signed dword) 53248 + (word) SPRITE_PTRS#0 ← (word/signed word/dword/signed dword) 1016 + (byte*) SPRITES_XPOS#0 ← ((byte*)) (word/dword/signed dword) 53248 + (byte*) SPRITES_YPOS#0 ← ((byte*)) (word/dword/signed dword) 53249 + (byte*) SPRITES_XMSB#0 ← ((byte*)) (word/dword/signed dword) 53264 (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 + (byte*) SPRITES_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53269 + (byte*) SPRITES_EXPAND_Y#0 ← ((byte*)) (word/dword/signed dword) 53271 + (byte*) SPRITES_PRIORITY#0 ← ((byte*)) (word/dword/signed dword) 53275 + (byte*) SPRITES_MC#0 ← ((byte*)) (word/dword/signed dword) 53276 + (byte*) SPRITES_EXPAND_X#0 ← ((byte*)) (word/dword/signed dword) 53277 + (byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL1#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte*) BGCOL2#0 ← ((byte*)) (word/dword/signed dword) 53282 + (byte*) BGCOL3#0 ← ((byte*)) (word/dword/signed dword) 53283 + (byte*) BGCOL4#0 ← ((byte*)) (word/dword/signed dword) 53284 + (byte*) SPRITES_MC1#0 ← ((byte*)) (word/dword/signed dword) 53285 + (byte*) SPRITES_MC2#0 ← ((byte*)) (word/dword/signed dword) 53286 + (byte*) SPRITES_COLS#0 ← ((byte*)) (word/dword/signed dword) 53287 + (byte*) VIC_CONTROL#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265 + (byte) VIC_RST8#0 ← (byte/word/signed word/dword/signed dword) 128 + (byte) VIC_ECM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 64 + (byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32 + (byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) VIC_CONTROL2#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte*) D016#0 ← ((byte*)) (word/dword/signed dword) 53270 + (byte) VIC_MCM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte) VIC_CSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) VIC_MEMORY#0 ← ((byte*)) (word/dword/signed dword) 53272 + (byte*) LIGHTPEN_X#0 ← ((byte*)) (word/dword/signed dword) 53267 + (byte*) LIGHTPEN_Y#0 ← ((byte*)) (word/dword/signed dword) 53268 + (byte*) IRQ_STATUS#0 ← ((byte*)) (word/dword/signed dword) 53273 + (byte*) IRQ_ENABLE#0 ← ((byte*)) (word/dword/signed dword) 53274 + (byte) IRQ_RASTER#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) IRQ_COLLISION_BG#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) IRQ_COLLISION_SPRITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) IRQ_LIGHTPEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 (byte*) CIA1_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56320 (byte*) CIA1_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56321 (byte*) CIA1_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56322 (byte*) CIA1_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56323 - to:@3 -@3: scope:[] from @begin + (byte*) CIA1_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56333 + (byte) CIA_INTERRUPT_CLEAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 127 + (byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576 + (byte*) CIA2_PORT_B#0 ← ((byte*)) (word/dword/signed dword) 56577 + (byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578 + (byte*) CIA2_PORT_B_DDR#0 ← ((byte*)) (word/dword/signed dword) 56579 + (byte*) CIA2_INTERRUPT#0 ← ((byte*)) (word/dword/signed dword) 56589 + (void()**) KERNEL_IRQ#0 ← ((void()**)) (word/signed word/dword/signed dword) 788 + (void()**) HARDWARE_IRQ#0 ← ((void()**)) (word/dword/signed dword) 65534 + (byte) BLACK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) WHITE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) CYAN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) PURPLE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) YELLOW#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 + (byte) ORANGE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte) BROWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) PINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 + (byte) DARK_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 11 + (byte) GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 + (byte) LIGHT_GREEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 + (byte) LIGHT_BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) LIGHT_GREY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 + to:@4 +@4: scope:[] from @begin + (byte) KEY_DEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_RETURN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_F7#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) KEY_F1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_F3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) KEY_F5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6 + (byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7 (byte) KEY_3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 (byte) KEY_W#0 ← (byte/signed byte/word/signed word/dword/signed dword) 9 (byte) KEY_A#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10 @@ -16,6 +98,7 @@ CONTROL FLOW GRAPH SSA (byte) KEY_Z#0 ← (byte/signed byte/word/signed word/dword/signed dword) 12 (byte) KEY_S#0 ← (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) KEY_E#0 ← (byte/signed byte/word/signed word/dword/signed dword) 14 + (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15 (byte) KEY_5#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) KEY_R#0 ← (byte/signed byte/word/signed word/dword/signed dword) 17 (byte) KEY_D#0 ← (byte/signed byte/word/signed word/dword/signed dword) 18 @@ -51,18 +134,23 @@ CONTROL FLOW GRAPH SSA (byte) KEY_POUND#0 ← (byte/signed byte/word/signed word/dword/signed dword) 48 (byte) KEY_ASTERISK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 49 (byte) KEY_SEMICOLON#0 ← (byte/signed byte/word/signed word/dword/signed dword) 50 + (byte) KEY_HOME#0 ← (byte/signed byte/word/signed word/dword/signed dword) 51 + (byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52 (byte) KEY_EQUALS#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) KEY_ARROW_UP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 54 (byte) KEY_SLASH#0 ← (byte/signed byte/word/signed word/dword/signed dword) 55 (byte) KEY_1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 56 (byte) KEY_ARROW_LEFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 57 + (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58 (byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59 (byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60 + (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61 (byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62 + (byte) KEY_RUNSTOP#0 ← (byte/signed byte/word/signed word/dword/signed dword) 63 (byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } (byte[8]) keyboard_matrix_row_bitmask#0 ← { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } (byte[8]) keyboard_matrix_col_bitmask#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 } - to:@11 + to:@8 keyboard_init: scope:[keyboard_init] from main::@14 *((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 *((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -113,7 +201,19 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k (byte) keyboard_get_keycode::return#1 ← (byte) keyboard_get_keycode::return#3 return to:@return -main: scope:[main] from @11 +@8: scope:[] from @4 + (byte[8]) keyboard_events#0 ← { fill( 8, 0) } + (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (byte) KEY_MODIFIER_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8 + (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0 + (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0 + (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) } + to:@12 +main: scope:[main] from @12 (byte*) main::sc#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:main::@1 main::@1: scope:[main] from main main::@1 @@ -276,19 +376,43 @@ main::@13: scope:[main] from main::@11 main::@13 main::@return: scope:[main] from main::@2 return to:@return -@11: scope:[] from @3 +@12: scope:[] from @8 call main - to:@12 -@12: scope:[] from @11 + to:@13 +@13: scope:[] from @12 to:@end -@end: scope:[] from @12 +@end: scope:[] from @13 SYMBOL TABLE SSA -(label) @11 +(byte~) $0 (label) @12 -(label) @3 +(label) @13 +(label) @4 +(label) @8 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte*) BGCOL1 +(byte*) BGCOL1#0 +(byte*) BGCOL2 +(byte*) BGCOL2#0 +(byte*) BGCOL3 +(byte*) BGCOL3#0 +(byte*) BGCOL4 +(byte*) BGCOL4#0 +(byte) BLACK +(byte) BLACK#0 +(byte) BLUE +(byte) BLUE#0 +(byte*) BORDERCOL +(byte*) BORDERCOL#0 +(byte) BROWN +(byte) BROWN#0 +(byte*) CHARGEN +(byte*) CHARGEN#0 +(byte*) CIA1_INTERRUPT +(byte*) CIA1_INTERRUPT#0 (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A#0 (byte*) CIA1_PORT_A_DDR @@ -297,6 +421,50 @@ SYMBOL TABLE SSA (byte*) CIA1_PORT_B#0 (byte*) CIA1_PORT_B_DDR (byte*) CIA1_PORT_B_DDR#0 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_INTERRUPT#0 +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A#0 +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_A_DDR#0 +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B#0 +(byte*) CIA2_PORT_B_DDR +(byte*) CIA2_PORT_B_DDR#0 +(byte) CIA_INTERRUPT_CLEAR +(byte) CIA_INTERRUPT_CLEAR#0 +(byte*) COLS +(byte*) COLS#0 +(byte) CYAN +(byte) CYAN#0 +(byte*) D011 +(byte*) D011#0 +(byte*) D016 +(byte*) D016#0 +(byte*) D018 +(byte*) D018#0 +(byte) DARK_GREY +(byte) DARK_GREY#0 +(byte) GREEN +(byte) GREEN#0 +(byte) GREY +(byte) GREY#0 +(void()**) HARDWARE_IRQ +(void()**) HARDWARE_IRQ#0 +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_BG#0 +(byte) IRQ_COLLISION_SPRITE +(byte) IRQ_COLLISION_SPRITE#0 +(byte*) IRQ_ENABLE +(byte*) IRQ_ENABLE#0 +(byte) IRQ_LIGHTPEN +(byte) IRQ_LIGHTPEN#0 +(byte) IRQ_RASTER +(byte) IRQ_RASTER#0 +(byte*) IRQ_STATUS +(byte*) IRQ_STATUS#0 +(void()**) KERNEL_IRQ +(void()**) KERNEL_IRQ#0 (byte) KEY_0 (byte) KEY_0#0 (byte) KEY_1 @@ -335,8 +503,18 @@ SYMBOL TABLE SSA (byte) KEY_COLON#0 (byte) KEY_COMMA (byte) KEY_COMMA#0 +(byte) KEY_COMMODORE +(byte) KEY_COMMODORE#0 +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_DOWN#0 +(byte) KEY_CRSR_RIGHT +(byte) KEY_CRSR_RIGHT#0 +(byte) KEY_CTRL +(byte) KEY_CTRL#0 (byte) KEY_D (byte) KEY_D#0 +(byte) KEY_DEL +(byte) KEY_DEL#0 (byte) KEY_DOT (byte) KEY_DOT#0 (byte) KEY_E @@ -345,10 +523,20 @@ SYMBOL TABLE SSA (byte) KEY_EQUALS#0 (byte) KEY_F (byte) KEY_F#0 +(byte) KEY_F1 +(byte) KEY_F1#0 +(byte) KEY_F3 +(byte) KEY_F3#0 +(byte) KEY_F5 +(byte) KEY_F5#0 +(byte) KEY_F7 +(byte) KEY_F7#0 (byte) KEY_G (byte) KEY_G#0 (byte) KEY_H (byte) KEY_H#0 +(byte) KEY_HOME +(byte) KEY_HOME#0 (byte) KEY_I (byte) KEY_I#0 (byte) KEY_J @@ -357,10 +545,22 @@ SYMBOL TABLE SSA (byte) KEY_K#0 (byte) KEY_L (byte) KEY_L#0 +(byte) KEY_LSHIFT +(byte) KEY_LSHIFT#0 (byte) KEY_M (byte) KEY_M#0 (byte) KEY_MINUS (byte) KEY_MINUS#0 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_COMMODORE#0 +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_CTRL#0 +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_LSHIFT#0 +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_RSHIFT#0 +(byte) KEY_MODIFIER_SHIFT +(byte) KEY_MODIFIER_SHIFT#0 (byte) KEY_N (byte) KEY_N#0 (byte) KEY_O @@ -375,6 +575,12 @@ SYMBOL TABLE SSA (byte) KEY_Q#0 (byte) KEY_R (byte) KEY_R#0 +(byte) KEY_RETURN +(byte) KEY_RETURN#0 +(byte) KEY_RSHIFT +(byte) KEY_RSHIFT#0 +(byte) KEY_RUNSTOP +(byte) KEY_RUNSTOP#0 (byte) KEY_S (byte) KEY_S#0 (byte) KEY_SEMICOLON @@ -397,10 +603,96 @@ SYMBOL TABLE SSA (byte) KEY_Y#0 (byte) KEY_Z (byte) KEY_Z#0 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_X#0 +(byte*) LIGHTPEN_Y +(byte*) LIGHTPEN_Y#0 +(byte) LIGHT_BLUE +(byte) LIGHT_BLUE#0 +(byte) LIGHT_GREEN +(byte) LIGHT_GREEN#0 +(byte) LIGHT_GREY +(byte) LIGHT_GREY#0 +(byte) ORANGE +(byte) ORANGE#0 +(byte) PINK +(byte) PINK#0 +(byte*) PROCPORT +(byte*) PROCPORT#0 +(byte) PROCPORT_BASIC_KERNEL_IO +(byte) PROCPORT_BASIC_KERNEL_IO#0 +(byte*) PROCPORT_DDR +(byte*) PROCPORT_DDR#0 +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_DDR_MEMORY_MASK#0 +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_KERNEL_IO#0 +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_ALL#0 +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_CHARROM#0 +(byte) PROCPORT_RAM_IO +(byte) PROCPORT_RAM_IO#0 +(byte) PURPLE +(byte) PURPLE#0 (byte*) RASTER (byte*) RASTER#0 +(byte) RED +(byte) RED#0 +(byte*) SPRITES_COLS +(byte*) SPRITES_COLS#0 +(byte*) SPRITES_ENABLE +(byte*) SPRITES_ENABLE#0 +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_X#0 +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_EXPAND_Y#0 +(byte*) SPRITES_MC +(byte*) SPRITES_MC#0 +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC1#0 +(byte*) SPRITES_MC2 +(byte*) SPRITES_MC2#0 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_PRIORITY#0 +(byte*) SPRITES_XMSB +(byte*) SPRITES_XMSB#0 +(byte*) SPRITES_XPOS +(byte*) SPRITES_XPOS#0 +(byte*) SPRITES_YPOS +(byte*) SPRITES_YPOS#0 +(word) SPRITE_PTRS +(word) SPRITE_PTRS#0 +(byte) VIC_BMM +(byte) VIC_BMM#0 +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL#0 +(byte*) VIC_CONTROL2 +(byte*) VIC_CONTROL2#0 +(byte) VIC_CSEL +(byte) VIC_CSEL#0 +(byte) VIC_DEN +(byte) VIC_DEN#0 +(byte) VIC_ECM +(byte) VIC_ECM#0 +(byte) VIC_MCM +(byte) VIC_MCM#0 +(byte*) VIC_MEMORY +(byte*) VIC_MEMORY#0 +(byte) VIC_RSEL +(byte) VIC_RSEL#0 +(byte) VIC_RST8 +(byte) VIC_RST8#0 +(byte) WHITE +(byte) WHITE#0 +(byte) YELLOW +(byte) YELLOW#0 (byte[]) keyboard_char_keycodes (byte[]) keyboard_char_keycodes#0 +(byte[8]) keyboard_events +(byte[8]) keyboard_events#0 +(byte) keyboard_events_size +(byte) keyboard_events_size#0 (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -456,6 +748,10 @@ SYMBOL TABLE SSA (byte) keyboard_matrix_read::rowid#2 (byte[8]) keyboard_matrix_row_bitmask (byte[8]) keyboard_matrix_row_bitmask#0 +(byte) keyboard_modifiers +(byte) keyboard_modifiers#0 +(byte[8]) keyboard_scan_values +(byte[8]) keyboard_scan_values#0 (void()) main() (word/signed word/dword/signed dword~) main::$0 (bool~) main::$1 @@ -576,7 +872,7 @@ SYMBOL TABLE SSA Culled Empty Block (label) main::@27 Culled Empty Block (label) main::@3 -Culled Empty Block (label) @12 +Culled Empty Block (label) @13 Successful SSA optimization Pass2CullEmptyBlocks Inversing boolean not (bool~) main::$14 ← (byte) main::key#0 == (byte/signed byte/word/signed word/dword/signed dword) 63 from (bool~) main::$13 ← (byte) main::key#0 != (byte/signed byte/word/signed word/dword/signed dword) 63 Inversing boolean not (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -587,6 +883,7 @@ Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1 Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#5 Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#3 (byte) keyboard_key_pressed::return#1 Alias (byte) keyboard_get_keycode::return#0 = (byte) keyboard_get_keycode::return#3 (byte) keyboard_get_keycode::return#1 +Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0 Alias (byte) keyboard_matrix_read::return#3 = (byte) keyboard_matrix_read::return#6 Alias (byte*) main::screen#13 = (byte*) main::screen#17 Alias (byte) main::row#2 = (byte) main::row#8 @@ -636,11 +933,93 @@ Simple Condition (bool~) main::$18 if((byte) main::ch#1!=rangelast(0,63)) goto m Simple Condition (bool~) main::$17 if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12 Simple Condition (bool~) main::$19 if((byte) main::i#2<(byte/signed byte/word/signed word/dword/signed dword) 5) goto main::@13 Successful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0 +Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7 +Constant (const byte*) PROCPORT#0 = ((byte*))1 +Constant (const byte) PROCPORT_RAM_ALL#0 = 48 +Constant (const byte) PROCPORT_RAM_IO#0 = 53 +Constant (const byte) PROCPORT_RAM_CHARROM#0 = 49 +Constant (const byte) PROCPORT_KERNEL_IO#0 = 54 +Constant (const byte) PROCPORT_BASIC_KERNEL_IO#0 = 55 +Constant (const byte*) CHARGEN#0 = ((byte*))53248 +Constant (const word) SPRITE_PTRS#0 = 1016 +Constant (const byte*) SPRITES_XPOS#0 = ((byte*))53248 +Constant (const byte*) SPRITES_YPOS#0 = ((byte*))53249 +Constant (const byte*) SPRITES_XMSB#0 = ((byte*))53264 Constant (const byte*) RASTER#0 = ((byte*))53266 +Constant (const byte*) SPRITES_ENABLE#0 = ((byte*))53269 +Constant (const byte*) SPRITES_EXPAND_Y#0 = ((byte*))53271 +Constant (const byte*) SPRITES_PRIORITY#0 = ((byte*))53275 +Constant (const byte*) SPRITES_MC#0 = ((byte*))53276 +Constant (const byte*) SPRITES_EXPAND_X#0 = ((byte*))53277 +Constant (const byte*) BORDERCOL#0 = ((byte*))53280 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte*) BGCOL1#0 = ((byte*))53281 +Constant (const byte*) BGCOL2#0 = ((byte*))53282 +Constant (const byte*) BGCOL3#0 = ((byte*))53283 +Constant (const byte*) BGCOL4#0 = ((byte*))53284 +Constant (const byte*) SPRITES_MC1#0 = ((byte*))53285 +Constant (const byte*) SPRITES_MC2#0 = ((byte*))53286 +Constant (const byte*) SPRITES_COLS#0 = ((byte*))53287 +Constant (const byte*) VIC_CONTROL#0 = ((byte*))53265 +Constant (const byte*) D011#0 = ((byte*))53265 +Constant (const byte) VIC_RST8#0 = 128 +Constant (const byte) VIC_ECM#0 = 64 +Constant (const byte) VIC_BMM#0 = 32 +Constant (const byte) VIC_DEN#0 = 16 +Constant (const byte) VIC_RSEL#0 = 8 +Constant (const byte*) VIC_CONTROL2#0 = ((byte*))53270 +Constant (const byte*) D016#0 = ((byte*))53270 +Constant (const byte) VIC_MCM#0 = 16 +Constant (const byte) VIC_CSEL#0 = 8 +Constant (const byte*) D018#0 = ((byte*))53272 +Constant (const byte*) VIC_MEMORY#0 = ((byte*))53272 +Constant (const byte*) LIGHTPEN_X#0 = ((byte*))53267 +Constant (const byte*) LIGHTPEN_Y#0 = ((byte*))53268 +Constant (const byte*) IRQ_STATUS#0 = ((byte*))53273 +Constant (const byte*) IRQ_ENABLE#0 = ((byte*))53274 +Constant (const byte) IRQ_RASTER#0 = 1 +Constant (const byte) IRQ_COLLISION_BG#0 = 2 +Constant (const byte) IRQ_COLLISION_SPRITE#0 = 4 +Constant (const byte) IRQ_LIGHTPEN#0 = 8 +Constant (const byte*) COLS#0 = ((byte*))55296 Constant (const byte*) CIA1_PORT_A#0 = ((byte*))56320 Constant (const byte*) CIA1_PORT_B#0 = ((byte*))56321 Constant (const byte*) CIA1_PORT_A_DDR#0 = ((byte*))56322 Constant (const byte*) CIA1_PORT_B_DDR#0 = ((byte*))56323 +Constant (const byte*) CIA1_INTERRUPT#0 = ((byte*))56333 +Constant (const byte) CIA_INTERRUPT_CLEAR#0 = 127 +Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576 +Constant (const byte*) CIA2_PORT_B#0 = ((byte*))56577 +Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578 +Constant (const byte*) CIA2_PORT_B_DDR#0 = ((byte*))56579 +Constant (const byte*) CIA2_INTERRUPT#0 = ((byte*))56589 +Constant (const void()**) KERNEL_IRQ#0 = ((void()**))788 +Constant (const void()**) HARDWARE_IRQ#0 = ((void()**))65534 +Constant (const byte) BLACK#0 = 0 +Constant (const byte) WHITE#0 = 1 +Constant (const byte) RED#0 = 2 +Constant (const byte) CYAN#0 = 3 +Constant (const byte) PURPLE#0 = 4 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) BLUE#0 = 6 +Constant (const byte) YELLOW#0 = 7 +Constant (const byte) ORANGE#0 = 8 +Constant (const byte) BROWN#0 = 9 +Constant (const byte) PINK#0 = 10 +Constant (const byte) DARK_GREY#0 = 11 +Constant (const byte) GREY#0 = 12 +Constant (const byte) LIGHT_GREEN#0 = 13 +Constant (const byte) LIGHT_BLUE#0 = 14 +Constant (const byte) LIGHT_GREY#0 = 15 +Constant (const byte) KEY_DEL#0 = 0 +Constant (const byte) KEY_RETURN#0 = 1 +Constant (const byte) KEY_CRSR_RIGHT#0 = 2 +Constant (const byte) KEY_F7#0 = 3 +Constant (const byte) KEY_F1#0 = 4 +Constant (const byte) KEY_F3#0 = 5 +Constant (const byte) KEY_F5#0 = 6 +Constant (const byte) KEY_CRSR_DOWN#0 = 7 Constant (const byte) KEY_3#0 = 8 Constant (const byte) KEY_W#0 = 9 Constant (const byte) KEY_A#0 = 10 @@ -648,6 +1027,7 @@ Constant (const byte) KEY_4#0 = 11 Constant (const byte) KEY_Z#0 = 12 Constant (const byte) KEY_S#0 = 13 Constant (const byte) KEY_E#0 = 14 +Constant (const byte) KEY_LSHIFT#0 = 15 Constant (const byte) KEY_5#0 = 16 Constant (const byte) KEY_R#0 = 17 Constant (const byte) KEY_D#0 = 18 @@ -683,16 +1063,29 @@ Constant (const byte) KEY_COMMA#0 = 47 Constant (const byte) KEY_POUND#0 = 48 Constant (const byte) KEY_ASTERISK#0 = 49 Constant (const byte) KEY_SEMICOLON#0 = 50 +Constant (const byte) KEY_HOME#0 = 51 +Constant (const byte) KEY_RSHIFT#0 = 52 Constant (const byte) KEY_EQUALS#0 = 53 Constant (const byte) KEY_ARROW_UP#0 = 54 Constant (const byte) KEY_SLASH#0 = 55 Constant (const byte) KEY_1#0 = 56 Constant (const byte) KEY_ARROW_LEFT#0 = 57 +Constant (const byte) KEY_CTRL#0 = 58 Constant (const byte) KEY_2#0 = 59 Constant (const byte) KEY_SPACE#0 = 60 +Constant (const byte) KEY_COMMODORE#0 = 61 Constant (const byte) KEY_Q#0 = 62 +Constant (const byte) KEY_RUNSTOP#0 = 63 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } +Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) } +Constant (const byte) keyboard_events_size#0 = 0 +Constant (const byte) keyboard_modifiers#0 = 0 +Constant (const byte) KEY_MODIFIER_LSHIFT#0 = 1 +Constant (const byte) KEY_MODIFIER_RSHIFT#0 = 2 +Constant (const byte) KEY_MODIFIER_CTRL#0 = 4 +Constant (const byte) KEY_MODIFIER_COMMODORE#0 = 8 +Constant (const byte[8]) keyboard_scan_values#0 = { fill( 8, 0) } Constant (const byte*) main::sc#0 = ((byte*))1024 Constant (const word/signed word/dword/signed dword) main::$0 = 1024+1000 Constant (const byte*) main::screen#0 = ((byte*))1024 @@ -702,9 +1095,12 @@ Constant (const byte) main::i#0 = 0 Constant (const byte) main::ch#0 = 0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } +Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@5 Successful SSA optimization Pass2ConstantIfs +Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Resolved ranged next value main::col#1 ← ++ main::col#2 to ++ @@ -713,7 +1109,8 @@ Resolved ranged next value main::row#1 ← ++ main::row#2 to ++ Resolved ranged comparison value if(main::row#1!=rangelast(0,7)) goto main::@6 to (byte/signed byte/word/signed word/dword/signed dword) 8 Resolved ranged next value main::ch#1 ← ++ main::ch#2 to ++ Resolved ranged comparison value if(main::ch#1!=rangelast(0,63)) goto main::@10 to (byte/signed byte/word/signed word/dword/signed dword) 64 -Culled Empty Block (label) @3 +Culled Empty Block (label) @4 +Culled Empty Block (label) @8 Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@17 Culled Empty Block (label) main::@12 @@ -741,7 +1138,7 @@ Added new block during phi lifting main::@36(between main::@29 and main::@11) Added new block during phi lifting main::@37(between main::@11 and main::@13) Added new block during phi lifting main::@38(between main::@13 and main::@13) Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @12 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@14 @@ -776,7 +1173,7 @@ Culled Empty Block (label) main::@32 Culled Empty Block (label) main::@33 Culled Empty Block (label) main::@31 Adding NOP phi() at start of @begin -Adding NOP phi() at start of @11 +Adding NOP phi() at start of @12 Adding NOP phi() at start of @end Adding NOP phi() at start of main Adding NOP phi() at start of main::@14 @@ -784,14 +1181,14 @@ Adding NOP phi() at start of main::@14 FINAL CONTROL FLOW GRAPH @begin: scope:[] from [0] phi() - to:@11 -@11: scope:[] from @begin + to:@12 +@12: scope:[] from @begin [1] phi() [2] call main to:@end -@end: scope:[] from @11 +@end: scope:[] from @12 [3] phi() -main: scope:[main] from @11 +main: scope:[main] from @12 [4] phi() to:main::@1 main::@1: scope:[main] from main main::@1 @@ -915,10 +1312,43 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (byte*) CIA1_PORT_A_DDR (byte*) CIA1_PORT_B (byte*) CIA1_PORT_B_DDR +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (byte) KEY_1 (byte) KEY_2 @@ -938,19 +1368,35 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_C (byte) KEY_COLON (byte) KEY_COMMA +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D +(byte) KEY_DEL (byte) KEY_DOT (byte) KEY_E (byte) KEY_EQUALS (byte) KEY_F +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 (byte) KEY_G (byte) KEY_H +(byte) KEY_HOME (byte) KEY_I (byte) KEY_J (byte) KEY_K (byte) KEY_L +(byte) KEY_LSHIFT (byte) KEY_M (byte) KEY_MINUS +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT (byte) KEY_N (byte) KEY_O (byte) KEY_P @@ -958,6 +1404,9 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_POUND (byte) KEY_Q (byte) KEY_R +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP (byte) KEY_S (byte) KEY_SEMICOLON (byte) KEY_SLASH @@ -969,8 +1418,51 @@ VARIABLE REGISTER WEIGHTS (byte) KEY_X (byte) KEY_Y (byte) KEY_Z +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (byte[]) keyboard_char_keycodes +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (byte) keyboard_get_keycode::ch (byte) keyboard_get_keycode::ch#0 103.0 @@ -1001,6 +1493,8 @@ VARIABLE REGISTER WEIGHTS (byte) keyboard_matrix_read::rowid#1 202.0 (byte) keyboard_matrix_read::rowid#2 105.0 (byte[8]) keyboard_matrix_row_bitmask +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$15 202.0 (byte~) main::$5 2002.0 @@ -1171,17 +1665,17 @@ INITIAL ASM .const KEY_Q = $3e //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +b12_from_bbegin: + jmp b12 +//SEG4 @12 +b12: //SEG5 [2] call main -//SEG6 [4] phi from @11 to main [phi:@11->main] -main_from_b11: +//SEG6 [4] phi from @12 to main [phi:@12->main] +main_from_b12: jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG7 [3] phi from @12 to @end [phi:@12->@end] +bend_from_b12: jmp bend //SEG8 @end bend: @@ -1713,17 +2207,17 @@ ASSEMBLER BEFORE OPTIMIZATION .const KEY_Q = $3e //SEG2 @begin bbegin: -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -b11_from_bbegin: - jmp b11 -//SEG4 @11 -b11: +//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +b12_from_bbegin: + jmp b12 +//SEG4 @12 +b12: //SEG5 [2] call main -//SEG6 [4] phi from @11 to main [phi:@11->main] -main_from_b11: +//SEG6 [4] phi from @12 to main [phi:@12->main] +main_from_b12: jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] -bend_from_b11: +//SEG7 [3] phi from @12 to @end [phi:@12->@end] +bend_from_b12: jmp bend //SEG8 @end bend: @@ -2049,7 +2543,7 @@ keyboard_init: { keyboard_char_keycodes: .byte KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f ASSEMBLER OPTIMIZATIONS -Removing instruction jmp b11 +Removing instruction jmp b12 Removing instruction jmp bend Removing instruction jmp b1 Removing instruction jmp b14 @@ -2084,9 +2578,9 @@ Replacing label b11_from_b30 with b11 Replacing label b10_from_b11 with b10 Replacing label b13_from_b13 with b13 Removing instruction bbegin: -Removing instruction b11_from_bbegin: -Removing instruction main_from_b11: -Removing instruction bend_from_b11: +Removing instruction b12_from_bbegin: +Removing instruction main_from_b12: +Removing instruction bend_from_b12: Removing instruction b1_from_b1: Removing instruction b14_from_b1: Removing instruction b6_from_b20: @@ -2098,7 +2592,7 @@ Removing instruction b11_from_b30: Removing instruction b13_from_b11: Removing instruction b13_from_b13: Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction b11: +Removing instruction b12: Removing instruction bend: Removing instruction b1_from_main: Removing instruction b14: @@ -2128,9 +2622,20 @@ Removing instruction jmp b10 Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE -(label) @11 +(label) @12 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -2139,6 +2644,28 @@ FINAL SYMBOL TABLE (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 (byte*) CIA1_PORT_B_DDR (const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35 (byte) KEY_1 @@ -2177,8 +2704,13 @@ FINAL SYMBOL TABLE (const byte) KEY_COLON#0 KEY_COLON = (byte/signed byte/word/signed word/dword/signed dword) 45 (byte) KEY_COMMA (const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47 +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D (const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18 +(byte) KEY_DEL (byte) KEY_DOT (const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44 (byte) KEY_E @@ -2187,10 +2719,15 @@ FINAL SYMBOL TABLE (const byte) KEY_EQUALS#0 KEY_EQUALS = (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) KEY_F (const byte) KEY_F#0 KEY_F = (byte/signed byte/word/signed word/dword/signed dword) 21 +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 (byte) KEY_G (const byte) KEY_G#0 KEY_G = (byte/signed byte/word/signed word/dword/signed dword) 26 (byte) KEY_H (const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29 +(byte) KEY_HOME (byte) KEY_I (const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) 33 (byte) KEY_J @@ -2199,10 +2736,16 @@ FINAL SYMBOL TABLE (const byte) KEY_K#0 KEY_K = (byte/signed byte/word/signed word/dword/signed dword) 37 (byte) KEY_L (const byte) KEY_L#0 KEY_L = (byte/signed byte/word/signed word/dword/signed dword) 42 +(byte) KEY_LSHIFT (byte) KEY_M (const byte) KEY_M#0 KEY_M = (byte/signed byte/word/signed word/dword/signed dword) 36 (byte) KEY_MINUS (const byte) KEY_MINUS#0 KEY_MINUS = (byte/signed byte/word/signed word/dword/signed dword) 43 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT (byte) KEY_N (const byte) KEY_N#0 KEY_N = (byte/signed byte/word/signed word/dword/signed dword) 39 (byte) KEY_O @@ -2217,6 +2760,9 @@ FINAL SYMBOL TABLE (const byte) KEY_Q#0 KEY_Q = (byte/signed byte/word/signed word/dword/signed dword) 62 (byte) KEY_R (const byte) KEY_R#0 KEY_R = (byte/signed byte/word/signed word/dword/signed dword) 17 +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP (byte) KEY_S (const byte) KEY_S#0 KEY_S = (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) KEY_SEMICOLON @@ -2239,10 +2785,53 @@ FINAL SYMBOL TABLE (const byte) KEY_Y#0 KEY_Y = (byte/signed byte/word/signed word/dword/signed dword) 25 (byte) KEY_Z (const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (byte[]) keyboard_char_keycodes (const byte[]) keyboard_char_keycodes#0 keyboard_char_keycodes = { (const byte) KEY_AT#0, (const byte) KEY_A#0, (const byte) KEY_B#0, (const byte) KEY_C#0, (const byte) KEY_D#0, (const byte) KEY_E#0, (const byte) KEY_F#0, (const byte) KEY_G#0, (const byte) KEY_H#0, (const byte) KEY_I#0, (const byte) KEY_J#0, (const byte) KEY_K#0, (const byte) KEY_L#0, (const byte) KEY_M#0, (const byte) KEY_N#0, (const byte) KEY_O#0, (const byte) KEY_P#0, (const byte) KEY_Q#0, (const byte) KEY_R#0, (const byte) KEY_S#0, (const byte) KEY_T#0, (const byte) KEY_U#0, (const byte) KEY_V#0, (const byte) KEY_W#0, (const byte) KEY_X#0, (const byte) KEY_Y#0, (const byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ARROW_UP#0, (const byte) KEY_ARROW_LEFT#0, (const byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ASTERISK#0, (const byte) KEY_PLUS#0, (const byte) KEY_COMMA#0, (const byte) KEY_MINUS#0, (const byte) KEY_DOT#0, (const byte) KEY_SLASH#0, (const byte) KEY_0#0, (const byte) KEY_1#0, (const byte) KEY_2#0, (const byte) KEY_3#0, (const byte) KEY_4#0, (const byte) KEY_5#0, (const byte) KEY_6#0, (const byte) KEY_7#0, (const byte) KEY_8#0, (const byte) KEY_9#0, (const byte) KEY_COLON#0, (const byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -2280,6 +2869,8 @@ FINAL SYMBOL TABLE (byte) keyboard_matrix_read::rowid#2 reg byte y 105.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$15 reg byte a 202.0 (byte~) main::$5 reg byte a 2002.0 @@ -2417,12 +3008,12 @@ Score: 56827 .const KEY_SPACE = $3c .const KEY_Q = $3e //SEG2 @begin -//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] -//SEG4 @11 +//SEG3 [1] phi from @begin to @12 [phi:@begin->@12] +//SEG4 @12 //SEG5 [2] call main -//SEG6 [4] phi from @11 to main [phi:@11->main] +//SEG6 [4] phi from @12 to main [phi:@12->main] jsr main -//SEG7 [3] phi from @11 to @end [phi:@11->@end] +//SEG7 [3] phi from @12 to @end [phi:@12->@end] //SEG8 @end //SEG9 main main: { diff --git a/src/test/ref/test-keyboard.sym b/src/test/ref/test-keyboard.sym index ec45d5a66..5e2d6cf28 100644 --- a/src/test/ref/test-keyboard.sym +++ b/src/test/ref/test-keyboard.sym @@ -1,6 +1,17 @@ -(label) @11 +(label) @12 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL1 +(byte*) BGCOL2 +(byte*) BGCOL3 +(byte*) BGCOL4 +(byte) BLACK +(byte) BLUE +(byte*) BORDERCOL +(byte) BROWN +(byte*) CHARGEN +(byte*) CIA1_INTERRUPT (byte*) CIA1_PORT_A (const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) 56320 (byte*) CIA1_PORT_A_DDR @@ -9,6 +20,28 @@ (const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) 56321 (byte*) CIA1_PORT_B_DDR (const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) 56323 +(byte*) CIA2_INTERRUPT +(byte*) CIA2_PORT_A +(byte*) CIA2_PORT_A_DDR +(byte*) CIA2_PORT_B +(byte*) CIA2_PORT_B_DDR +(byte) CIA_INTERRUPT_CLEAR +(byte*) COLS +(byte) CYAN +(byte*) D011 +(byte*) D016 +(byte*) D018 +(byte) DARK_GREY +(byte) GREEN +(byte) GREY +(void()**) HARDWARE_IRQ +(byte) IRQ_COLLISION_BG +(byte) IRQ_COLLISION_SPRITE +(byte*) IRQ_ENABLE +(byte) IRQ_LIGHTPEN +(byte) IRQ_RASTER +(byte*) IRQ_STATUS +(void()**) KERNEL_IRQ (byte) KEY_0 (const byte) KEY_0#0 KEY_0 = (byte/signed byte/word/signed word/dword/signed dword) 35 (byte) KEY_1 @@ -47,8 +80,13 @@ (const byte) KEY_COLON#0 KEY_COLON = (byte/signed byte/word/signed word/dword/signed dword) 45 (byte) KEY_COMMA (const byte) KEY_COMMA#0 KEY_COMMA = (byte/signed byte/word/signed word/dword/signed dword) 47 +(byte) KEY_COMMODORE +(byte) KEY_CRSR_DOWN +(byte) KEY_CRSR_RIGHT +(byte) KEY_CTRL (byte) KEY_D (const byte) KEY_D#0 KEY_D = (byte/signed byte/word/signed word/dword/signed dword) 18 +(byte) KEY_DEL (byte) KEY_DOT (const byte) KEY_DOT#0 KEY_DOT = (byte/signed byte/word/signed word/dword/signed dword) 44 (byte) KEY_E @@ -57,10 +95,15 @@ (const byte) KEY_EQUALS#0 KEY_EQUALS = (byte/signed byte/word/signed word/dword/signed dword) 53 (byte) KEY_F (const byte) KEY_F#0 KEY_F = (byte/signed byte/word/signed word/dword/signed dword) 21 +(byte) KEY_F1 +(byte) KEY_F3 +(byte) KEY_F5 +(byte) KEY_F7 (byte) KEY_G (const byte) KEY_G#0 KEY_G = (byte/signed byte/word/signed word/dword/signed dword) 26 (byte) KEY_H (const byte) KEY_H#0 KEY_H = (byte/signed byte/word/signed word/dword/signed dword) 29 +(byte) KEY_HOME (byte) KEY_I (const byte) KEY_I#0 KEY_I = (byte/signed byte/word/signed word/dword/signed dword) 33 (byte) KEY_J @@ -69,10 +112,16 @@ (const byte) KEY_K#0 KEY_K = (byte/signed byte/word/signed word/dword/signed dword) 37 (byte) KEY_L (const byte) KEY_L#0 KEY_L = (byte/signed byte/word/signed word/dword/signed dword) 42 +(byte) KEY_LSHIFT (byte) KEY_M (const byte) KEY_M#0 KEY_M = (byte/signed byte/word/signed word/dword/signed dword) 36 (byte) KEY_MINUS (const byte) KEY_MINUS#0 KEY_MINUS = (byte/signed byte/word/signed word/dword/signed dword) 43 +(byte) KEY_MODIFIER_COMMODORE +(byte) KEY_MODIFIER_CTRL +(byte) KEY_MODIFIER_LSHIFT +(byte) KEY_MODIFIER_RSHIFT +(byte) KEY_MODIFIER_SHIFT (byte) KEY_N (const byte) KEY_N#0 KEY_N = (byte/signed byte/word/signed word/dword/signed dword) 39 (byte) KEY_O @@ -87,6 +136,9 @@ (const byte) KEY_Q#0 KEY_Q = (byte/signed byte/word/signed word/dword/signed dword) 62 (byte) KEY_R (const byte) KEY_R#0 KEY_R = (byte/signed byte/word/signed word/dword/signed dword) 17 +(byte) KEY_RETURN +(byte) KEY_RSHIFT +(byte) KEY_RUNSTOP (byte) KEY_S (const byte) KEY_S#0 KEY_S = (byte/signed byte/word/signed word/dword/signed dword) 13 (byte) KEY_SEMICOLON @@ -109,10 +161,53 @@ (const byte) KEY_Y#0 KEY_Y = (byte/signed byte/word/signed word/dword/signed dword) 25 (byte) KEY_Z (const byte) KEY_Z#0 KEY_Z = (byte/signed byte/word/signed word/dword/signed dword) 12 +(byte*) LIGHTPEN_X +(byte*) LIGHTPEN_Y +(byte) LIGHT_BLUE +(byte) LIGHT_GREEN +(byte) LIGHT_GREY +(byte) ORANGE +(byte) PINK +(byte*) PROCPORT +(byte) PROCPORT_BASIC_KERNEL_IO +(byte*) PROCPORT_DDR +(byte) PROCPORT_DDR_MEMORY_MASK +(byte) PROCPORT_KERNEL_IO +(byte) PROCPORT_RAM_ALL +(byte) PROCPORT_RAM_CHARROM +(byte) PROCPORT_RAM_IO +(byte) PURPLE (byte*) RASTER (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 +(byte) RED +(byte*) SPRITES_COLS +(byte*) SPRITES_ENABLE +(byte*) SPRITES_EXPAND_X +(byte*) SPRITES_EXPAND_Y +(byte*) SPRITES_MC +(byte*) SPRITES_MC1 +(byte*) SPRITES_MC2 +(byte*) SPRITES_PRIORITY +(byte*) SPRITES_XMSB +(byte*) SPRITES_XPOS +(byte*) SPRITES_YPOS +(word) SPRITE_PTRS +(byte) VIC_BMM +(byte*) VIC_CONTROL +(byte*) VIC_CONTROL2 +(byte) VIC_CSEL +(byte) VIC_DEN +(byte) VIC_ECM +(byte) VIC_MCM +(byte*) VIC_MEMORY +(byte) VIC_RSEL +(byte) VIC_RST8 +(byte) WHITE +(byte) YELLOW (byte[]) keyboard_char_keycodes (const byte[]) keyboard_char_keycodes#0 keyboard_char_keycodes = { (const byte) KEY_AT#0, (const byte) KEY_A#0, (const byte) KEY_B#0, (const byte) KEY_C#0, (const byte) KEY_D#0, (const byte) KEY_E#0, (const byte) KEY_F#0, (const byte) KEY_G#0, (const byte) KEY_H#0, (const byte) KEY_I#0, (const byte) KEY_J#0, (const byte) KEY_K#0, (const byte) KEY_L#0, (const byte) KEY_M#0, (const byte) KEY_N#0, (const byte) KEY_O#0, (const byte) KEY_P#0, (const byte) KEY_Q#0, (const byte) KEY_R#0, (const byte) KEY_S#0, (const byte) KEY_T#0, (const byte) KEY_U#0, (const byte) KEY_V#0, (const byte) KEY_W#0, (const byte) KEY_X#0, (const byte) KEY_Y#0, (const byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ARROW_UP#0, (const byte) KEY_ARROW_LEFT#0, (const byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_ASTERISK#0, (const byte) KEY_PLUS#0, (const byte) KEY_COMMA#0, (const byte) KEY_MINUS#0, (const byte) KEY_DOT#0, (const byte) KEY_SLASH#0, (const byte) KEY_0#0, (const byte) KEY_1#0, (const byte) KEY_2#0, (const byte) KEY_3#0, (const byte) KEY_4#0, (const byte) KEY_5#0, (const byte) KEY_6#0, (const byte) KEY_7#0, (const byte) KEY_8#0, (const byte) KEY_9#0, (const byte) KEY_COLON#0, (const byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (const byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 } +(byte[8]) keyboard_events +(byte) keyboard_events_size (byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch) (label) keyboard_get_keycode::@return (byte) keyboard_get_keycode::ch @@ -150,6 +245,8 @@ (byte) keyboard_matrix_read::rowid#2 reg byte y 105.0 (byte[8]) keyboard_matrix_row_bitmask (const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 } +(byte) keyboard_modifiers +(byte[8]) keyboard_scan_values (void()) main() (byte~) main::$15 reg byte a 202.0 (byte~) main::$5 reg byte a 2002.0 diff --git a/src/test/ref/test-lowhigh.asm b/src/test/ref/test-lowhigh.asm index 59f7ca30f..59fd21362 100644 --- a/src/test/ref/test-lowhigh.asm +++ b/src/test/ref/test-lowhigh.asm @@ -5,7 +5,9 @@ .label print_char_cursor = 8 jsr main main: { + .label _1 = 6 .label _2 = $a + .label _4 = 6 .label _5 = $a .label _15 = $a .label _19 = $a @@ -33,6 +35,10 @@ main: { lda #>$12345678>>$10 sta dw+3 b1: + lda dw+2 + sta _1 + lda dw+3 + sta _1+1 lda dw+2 sta _2 lda dw+3 @@ -52,6 +58,10 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 + lda dw2 + sta _4 + lda dw2+1 + sta _4+1 lda dw sta _5 lda dw+1 diff --git a/src/test/ref/test-lowhigh.cfg b/src/test/ref/test-lowhigh.cfg index 9fd1b40f9..7078b3db6 100644 --- a/src/test/ref/test-lowhigh.cfg +++ b/src/test/ref/test-lowhigh.cfg @@ -15,149 +15,151 @@ main::@1: scope:[main] from main main::@18 [6] (byte*) print_line_cursor#19 ← phi( main::@18/(byte*) print_line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (byte*) print_char_cursor#69 ← phi( main::@18/(byte*~) print_char_cursor#72 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (dword) main::dw#10 ← phi( main::@18/(dword) main::dw#1 main/(dword/signed dword) 305419896 ) - [7] (word~) main::$2 ← > (dword) main::dw#10 - [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 - [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 - [10] (word~) main::$5 ← < (dword) main::dw#10 - [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 - [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 - [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - [14] call print_dword + [7] (word~) main::$1 ← > (dword) main::dw#10 + [8] (word~) main::$2 ← > (dword) main::dw#10 + [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 + [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 + [11] (word~) main::$4 ← < (dword) main::dw2#1 + [12] (word~) main::$5 ← < (dword) main::dw#10 + [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 + [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 + [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + [16] call print_dword to:main::@4 main::@4: scope:[main] from main::@1 - [15] phi() - [16] call print_char + [17] phi() + [18] call print_char to:main::@5 main::@5: scope:[main] from main::@4 - [17] (word) print_word::w#2 ← > (dword) main::dw2#10 - [18] call print_word + [19] (word) print_word::w#2 ← > (dword) main::dw2#10 + [20] call print_word to:main::@6 main::@6: scope:[main] from main::@5 - [19] phi() - [20] call print_char + [21] phi() + [22] call print_char to:main::@7 main::@7: scope:[main] from main::@6 - [21] (word) print_word::w#3 ← < (dword) main::dw2#10 - [22] call print_word + [23] (word) print_word::w#3 ← < (dword) main::dw2#10 + [24] call print_word to:main::@8 main::@8: scope:[main] from main::@7 - [23] phi() - [24] call print_char + [25] phi() + [26] call print_char to:main::@9 main::@9: scope:[main] from main::@8 - [25] (word~) main::$15 ← > (dword) main::dw2#10 - [26] (byte) print_byte::b#2 ← > (word~) main::$15 - [27] call print_byte + [27] (word~) main::$15 ← > (dword) main::dw2#10 + [28] (byte) print_byte::b#2 ← > (word~) main::$15 + [29] call print_byte to:main::@10 main::@10: scope:[main] from main::@9 - [28] phi() - [29] call print_char + [30] phi() + [31] call print_char to:main::@11 main::@11: scope:[main] from main::@10 - [30] (word~) main::$19 ← > (dword) main::dw2#10 - [31] (byte) print_byte::b#3 ← < (word~) main::$19 - [32] call print_byte + [32] (word~) main::$19 ← > (dword) main::dw2#10 + [33] (byte) print_byte::b#3 ← < (word~) main::$19 + [34] call print_byte to:main::@12 main::@12: scope:[main] from main::@11 - [33] phi() - [34] call print_char + [35] phi() + [36] call print_char to:main::@13 main::@13: scope:[main] from main::@12 - [35] (word~) main::$23 ← < (dword) main::dw2#10 - [36] (byte) print_byte::b#4 ← > (word~) main::$23 - [37] call print_byte + [37] (word~) main::$23 ← < (dword) main::dw2#10 + [38] (byte) print_byte::b#4 ← > (word~) main::$23 + [39] call print_byte to:main::@14 main::@14: scope:[main] from main::@13 - [38] phi() - [39] call print_char + [40] phi() + [41] call print_char to:main::@15 main::@15: scope:[main] from main::@14 - [40] (word~) main::$27 ← < (dword) main::dw2#10 - [41] (byte) print_byte::b#5 ← < (word~) main::$27 - [42] call print_byte + [42] (word~) main::$27 ← < (dword) main::dw2#10 + [43] (byte) print_byte::b#5 ← < (word~) main::$27 + [44] call print_byte to:main::@16 main::@16: scope:[main] from main::@15 - [43] phi() - [44] call print_ln + [45] phi() + [46] call print_ln to:main::@17 main::@17: scope:[main] from main::@16 - [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 - [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 + [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 + [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 to:main::@return main::@return: scope:[main] from main::@17 - [47] return + [49] return to:@return main::@18: scope:[main] from main::@17 - [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 + [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@16 - [49] phi() + [51] phi() to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [50] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) - [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [52] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) + [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [53] return + [55] return to:@return print_byte: scope:[print_byte] from main::@11 main::@13 main::@15 main::@9 print_word print_word::@1 - [54] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) - [54] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [57] call print_char + [56] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) + [56] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [59] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [60] call print_char + [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [62] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [61] return + [63] return to:@return print_char: scope:[print_char] from main::@10 main::@12 main::@14 main::@4 main::@6 main::@8 print_byte print_byte::@1 - [62] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) - [62] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 - [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 + [64] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) + [64] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) + [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 + [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [65] return + [67] return to:@return print_word: scope:[print_word] from main::@5 main::@7 print_dword print_dword::@1 - [66] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) - [66] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) - [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 - [68] call print_byte + [68] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) + [68] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) + [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 + [70] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 - [70] call print_byte + [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 + [72] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [71] return + [73] return to:@return print_dword: scope:[print_dword] from main::@1 - [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 - [73] call print_word + [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 + [75] call print_word to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword - [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 - [75] call print_word + [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 + [77] call print_word to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@1 - [76] return + [78] return to:@return print_cls: scope:[print_cls] from main - [77] phi() + [79] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [78] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [79] *((byte*) print_cls::sc#2) ← (byte) ' ' - [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [80] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [81] *((byte*) print_cls::sc#2) ← (byte) ' ' + [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [82] return + [84] return to:@return diff --git a/src/test/ref/test-lowhigh.log b/src/test/ref/test-lowhigh.log index a8f932fdf..94aa7ef0f 100644 --- a/src/test/ref/test-lowhigh.log +++ b/src/test/ref/test-lowhigh.log @@ -160,10 +160,12 @@ main::@1: scope:[main] from main::@17 main::@3 (byte*) print_char_cursor#69 ← phi( main::@17/(byte*) print_char_cursor#30 main::@3/(byte*) print_char_cursor#16 ) (dword) main::dw#2 ← phi( main::@17/(dword) main::dw#1 main::@3/(dword) main::dw#0 ) (dword) main::dw2#0 ← (dword) main::dw#2 + (word~) main::$1 ← > (dword) main::dw2#0 (word~) main::$2 ← > (dword) main::dw#2 (word/signed dword/dword~) main::$3 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 (word/signed dword/dword~) main::$32 ← (word/signed dword/dword~) main::$3 (dword) main::dw2#1 ← (dword) main::dw2#0 hi= (word/signed dword/dword~) main::$32 + (word~) main::$4 ← < (dword) main::dw2#1 (word~) main::$5 ← < (dword) main::dw#2 (word/signed dword/dword~) main::$6 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 (word/signed dword/dword~) main::$33 ← (word/signed dword/dword~) main::$6 @@ -335,6 +337,7 @@ SYMBOL TABLE SSA (label) @begin (label) @end (void()) main() +(word~) main::$1 (word~) main::$12 (word~) main::$15 (byte~) main::$16 @@ -349,6 +352,7 @@ SYMBOL TABLE SSA (bool~) main::$31 (word/signed dword/dword~) main::$32 (word/signed dword/dword~) main::$33 +(word~) main::$4 (word~) main::$5 (word/signed dword/dword~) main::$6 (word~) main::$9 @@ -734,48 +738,48 @@ Adding NOP phi() at start of main::@16 Adding NOP phi() at start of print_cls CALL GRAPH Calls in [] to main:2 -Calls in [main] to print_cls:5 print_dword:14 print_char:16 print_word:20 print_char:22 print_word:26 print_char:28 print_byte:33 print_char:35 print_byte:40 print_char:42 print_byte:47 print_char:49 print_byte:54 print_ln:56 -Calls in [print_byte] to print_char:74 print_char:79 -Calls in [print_word] to print_byte:89 print_byte:93 -Calls in [print_dword] to print_word:98 print_word:102 +Calls in [main] to print_cls:5 print_dword:16 print_char:18 print_word:22 print_char:24 print_word:28 print_char:30 print_byte:35 print_char:37 print_byte:42 print_char:44 print_byte:49 print_char:51 print_byte:56 print_ln:58 +Calls in [print_byte] to print_char:76 print_char:81 +Calls in [print_word] to print_byte:91 print_byte:95 +Calls in [print_dword] to print_word:100 print_word:104 Created 11 initial phi equivalence classes -Coalesced [15] print_char_cursor#82 ← print_char_cursor#12 -Coalesced [18] print_word::w#6 ← print_word::w#2 -Coalesced [19] print_char_cursor#87 ← print_char_cursor#12 -Coalesced (already) [21] print_char_cursor#83 ← print_char_cursor#12 -Coalesced [24] print_word::w#7 ← print_word::w#3 -Coalesced (already) [25] print_char_cursor#88 ← print_char_cursor#12 -Coalesced (already) [27] print_char_cursor#84 ← print_char_cursor#12 -Coalesced [31] print_byte::b#11 ← print_byte::b#2 -Coalesced [32] print_char_cursor#76 ← print_char_cursor#12 -Coalesced (already) [34] print_char_cursor#79 ← print_char_cursor#12 -Coalesced [38] print_byte::b#8 ← print_byte::b#3 -Coalesced (already) [39] print_char_cursor#73 ← print_char_cursor#12 -Coalesced (already) [41] print_char_cursor#80 ← print_char_cursor#12 -Coalesced [45] print_byte::b#9 ← print_byte::b#4 -Coalesced (already) [46] print_char_cursor#74 ← print_char_cursor#12 -Coalesced (already) [48] print_char_cursor#81 ← print_char_cursor#12 -Coalesced [52] print_byte::b#10 ← print_byte::b#5 -Coalesced (already) [53] print_char_cursor#75 ← print_char_cursor#12 -Coalesced [60] main::dw#17 ← main::dw#1 -Not coalescing [61] print_char_cursor#72 ← print_line_cursor#1 -Coalesced [62] print_line_cursor#35 ← print_line_cursor#1 -Coalesced [63] print_line_cursor#36 ← print_line_cursor#19 -Coalesced (already) [68] print_line_cursor#37 ← print_line_cursor#1 -Coalesced [72] print_char::ch#9 ← print_char::ch#0 -Coalesced (already) [73] print_char_cursor#85 ← print_char_cursor#67 -Coalesced [77] print_char::ch#10 ← print_char::ch#1 -Coalesced (already) [78] print_char_cursor#86 ← print_char_cursor#12 -Coalesced [87] print_byte::b#12 ← print_byte::b#0 -Coalesced (already) [88] print_char_cursor#77 ← print_char_cursor#65 -Coalesced [91] print_byte::b#13 ← print_byte::b#1 -Coalesced (already) [92] print_char_cursor#78 ← print_char_cursor#12 -Coalesced [96] print_word::w#8 ← print_word::w#0 -Coalesced [97] print_char_cursor#89 ← print_char_cursor#69 -Coalesced [100] print_word::w#9 ← print_word::w#1 -Coalesced (already) [101] print_char_cursor#90 ← print_char_cursor#12 -Coalesced [110] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [17] print_char_cursor#82 ← print_char_cursor#12 +Coalesced [20] print_word::w#6 ← print_word::w#2 +Coalesced [21] print_char_cursor#87 ← print_char_cursor#12 +Coalesced (already) [23] print_char_cursor#83 ← print_char_cursor#12 +Coalesced [26] print_word::w#7 ← print_word::w#3 +Coalesced (already) [27] print_char_cursor#88 ← print_char_cursor#12 +Coalesced (already) [29] print_char_cursor#84 ← print_char_cursor#12 +Coalesced [33] print_byte::b#11 ← print_byte::b#2 +Coalesced [34] print_char_cursor#76 ← print_char_cursor#12 +Coalesced (already) [36] print_char_cursor#79 ← print_char_cursor#12 +Coalesced [40] print_byte::b#8 ← print_byte::b#3 +Coalesced (already) [41] print_char_cursor#73 ← print_char_cursor#12 +Coalesced (already) [43] print_char_cursor#80 ← print_char_cursor#12 +Coalesced [47] print_byte::b#9 ← print_byte::b#4 +Coalesced (already) [48] print_char_cursor#74 ← print_char_cursor#12 +Coalesced (already) [50] print_char_cursor#81 ← print_char_cursor#12 +Coalesced [54] print_byte::b#10 ← print_byte::b#5 +Coalesced (already) [55] print_char_cursor#75 ← print_char_cursor#12 +Coalesced [62] main::dw#17 ← main::dw#1 +Not coalescing [63] print_char_cursor#72 ← print_line_cursor#1 +Coalesced [64] print_line_cursor#35 ← print_line_cursor#1 +Coalesced [65] print_line_cursor#36 ← print_line_cursor#19 +Coalesced (already) [70] print_line_cursor#37 ← print_line_cursor#1 +Coalesced [74] print_char::ch#9 ← print_char::ch#0 +Coalesced (already) [75] print_char_cursor#85 ← print_char_cursor#67 +Coalesced [79] print_char::ch#10 ← print_char::ch#1 +Coalesced (already) [80] print_char_cursor#86 ← print_char_cursor#12 +Coalesced [89] print_byte::b#12 ← print_byte::b#0 +Coalesced (already) [90] print_char_cursor#77 ← print_char_cursor#65 +Coalesced [93] print_byte::b#13 ← print_byte::b#1 +Coalesced (already) [94] print_char_cursor#78 ← print_char_cursor#12 +Coalesced [98] print_word::w#8 ← print_word::w#0 +Coalesced [99] print_char_cursor#89 ← print_char_cursor#69 +Coalesced [102] print_word::w#9 ← print_word::w#1 +Coalesced (already) [103] print_char_cursor#90 ← print_char_cursor#12 +Coalesced [112] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 7 phi equivalence classes Culled Empty Block (label) print_ln::@3 Culled Empty Block (label) print_cls::@3 @@ -811,156 +815,159 @@ main::@1: scope:[main] from main main::@18 [6] (byte*) print_line_cursor#19 ← phi( main::@18/(byte*) print_line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (byte*) print_char_cursor#69 ← phi( main::@18/(byte*~) print_char_cursor#72 main/((byte*))(word/signed word/dword/signed dword) 1024 ) [6] (dword) main::dw#10 ← phi( main::@18/(dword) main::dw#1 main/(dword/signed dword) 305419896 ) - [7] (word~) main::$2 ← > (dword) main::dw#10 - [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 - [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 - [10] (word~) main::$5 ← < (dword) main::dw#10 - [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 - [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 - [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 - [14] call print_dword + [7] (word~) main::$1 ← > (dword) main::dw#10 + [8] (word~) main::$2 ← > (dword) main::dw#10 + [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 + [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 + [11] (word~) main::$4 ← < (dword) main::dw2#1 + [12] (word~) main::$5 ← < (dword) main::dw#10 + [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 + [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 + [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + [16] call print_dword to:main::@4 main::@4: scope:[main] from main::@1 - [15] phi() - [16] call print_char + [17] phi() + [18] call print_char to:main::@5 main::@5: scope:[main] from main::@4 - [17] (word) print_word::w#2 ← > (dword) main::dw2#10 - [18] call print_word + [19] (word) print_word::w#2 ← > (dword) main::dw2#10 + [20] call print_word to:main::@6 main::@6: scope:[main] from main::@5 - [19] phi() - [20] call print_char + [21] phi() + [22] call print_char to:main::@7 main::@7: scope:[main] from main::@6 - [21] (word) print_word::w#3 ← < (dword) main::dw2#10 - [22] call print_word + [23] (word) print_word::w#3 ← < (dword) main::dw2#10 + [24] call print_word to:main::@8 main::@8: scope:[main] from main::@7 - [23] phi() - [24] call print_char + [25] phi() + [26] call print_char to:main::@9 main::@9: scope:[main] from main::@8 - [25] (word~) main::$15 ← > (dword) main::dw2#10 - [26] (byte) print_byte::b#2 ← > (word~) main::$15 - [27] call print_byte + [27] (word~) main::$15 ← > (dword) main::dw2#10 + [28] (byte) print_byte::b#2 ← > (word~) main::$15 + [29] call print_byte to:main::@10 main::@10: scope:[main] from main::@9 - [28] phi() - [29] call print_char + [30] phi() + [31] call print_char to:main::@11 main::@11: scope:[main] from main::@10 - [30] (word~) main::$19 ← > (dword) main::dw2#10 - [31] (byte) print_byte::b#3 ← < (word~) main::$19 - [32] call print_byte + [32] (word~) main::$19 ← > (dword) main::dw2#10 + [33] (byte) print_byte::b#3 ← < (word~) main::$19 + [34] call print_byte to:main::@12 main::@12: scope:[main] from main::@11 - [33] phi() - [34] call print_char + [35] phi() + [36] call print_char to:main::@13 main::@13: scope:[main] from main::@12 - [35] (word~) main::$23 ← < (dword) main::dw2#10 - [36] (byte) print_byte::b#4 ← > (word~) main::$23 - [37] call print_byte + [37] (word~) main::$23 ← < (dword) main::dw2#10 + [38] (byte) print_byte::b#4 ← > (word~) main::$23 + [39] call print_byte to:main::@14 main::@14: scope:[main] from main::@13 - [38] phi() - [39] call print_char + [40] phi() + [41] call print_char to:main::@15 main::@15: scope:[main] from main::@14 - [40] (word~) main::$27 ← < (dword) main::dw2#10 - [41] (byte) print_byte::b#5 ← < (word~) main::$27 - [42] call print_byte + [42] (word~) main::$27 ← < (dword) main::dw2#10 + [43] (byte) print_byte::b#5 ← < (word~) main::$27 + [44] call print_byte to:main::@16 main::@16: scope:[main] from main::@15 - [43] phi() - [44] call print_ln + [45] phi() + [46] call print_ln to:main::@17 main::@17: scope:[main] from main::@16 - [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 - [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 + [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 + [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 to:main::@return main::@return: scope:[main] from main::@17 - [47] return + [49] return to:@return main::@18: scope:[main] from main::@17 - [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 + [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 to:main::@1 print_ln: scope:[print_ln] from main::@16 - [49] phi() + [51] phi() to:print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 - [50] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) - [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 - [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 + [52] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 ) + [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 + [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 to:print_ln::@return print_ln::@return: scope:[print_ln] from print_ln::@1 - [53] return + [55] return to:@return print_byte: scope:[print_byte] from main::@11 main::@13 main::@15 main::@9 print_word print_word::@1 - [54] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) - [54] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) - [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 - [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) - [57] call print_char + [56] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) + [56] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) + [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 + [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) + [59] call print_char to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 - [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) - [60] call print_char + [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 + [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) + [62] call print_char to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 - [61] return + [63] return to:@return print_char: scope:[print_char] from main::@10 main::@12 main::@14 main::@4 main::@6 main::@8 print_byte print_byte::@1 - [62] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) - [62] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) - [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 - [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 + [64] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 ) + [64] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 ) + [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 + [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 to:print_char::@return print_char::@return: scope:[print_char] from print_char - [65] return + [67] return to:@return print_word: scope:[print_word] from main::@5 main::@7 print_dword print_dword::@1 - [66] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) - [66] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) - [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 - [68] call print_byte + [68] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 ) + [68] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 ) + [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 + [70] call print_byte to:print_word::@1 print_word::@1: scope:[print_word] from print_word - [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 - [70] call print_byte + [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 + [72] call print_byte to:print_word::@return print_word::@return: scope:[print_word] from print_word::@1 - [71] return + [73] return to:@return print_dword: scope:[print_dword] from main::@1 - [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 - [73] call print_word + [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 + [75] call print_word to:print_dword::@1 print_dword::@1: scope:[print_dword] from print_dword - [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 - [75] call print_word + [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 + [77] call print_word to:print_dword::@return print_dword::@return: scope:[print_dword] from print_dword::@1 - [76] return + [78] return to:@return print_cls: scope:[print_cls] from main - [77] phi() + [79] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [78] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [79] *((byte*) print_cls::sc#2) ← (byte) ' ' - [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [80] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [81] *((byte*) print_cls::sc#2) ← (byte) ' ' + [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [82] return + [84] return to:@return VARIABLE REGISTER WEIGHTS (void()) main() +(word~) main::$1 110.0 (word~) main::$15 22.0 (word~) main::$19 22.0 (word~) main::$2 22.0 @@ -968,12 +975,13 @@ VARIABLE REGISTER WEIGHTS (word~) main::$27 22.0 (word/signed dword/dword~) main::$32 22.0 (word/signed dword/dword~) main::$33 22.0 +(word~) main::$4 110.0 (word~) main::$5 22.0 (dword) main::dw (dword) main::dw#1 11.0 -(dword) main::dw#10 1.4102564102564101 +(dword) main::dw#10 1.6097560975609757 (dword) main::dw2 -(dword) main::dw2#1 7.333333333333333 +(dword) main::dw2#1 8.25 (dword) main::dw2#10 3.142857142857143 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 4.0 @@ -996,7 +1004,7 @@ VARIABLE REGISTER WEIGHTS (byte*) print_char_cursor#44 37.0 (byte*) print_char_cursor#65 14.0 (byte*) print_char_cursor#67 16.666666666666664 -(byte*) print_char_cursor#69 1.4444444444444446 +(byte*) print_char_cursor#69 1.1818181818181819 (byte*~) print_char_cursor#72 22.0 (void()) print_cls() (byte*) print_cls::sc @@ -1008,7 +1016,7 @@ VARIABLE REGISTER WEIGHTS (byte[]) print_hextab (byte*) print_line_cursor (byte*) print_line_cursor#1 46.42857142857143 -(byte*) print_line_cursor#19 0.3333333333333333 +(byte*) print_line_cursor#19 0.3170731707317073 (byte*) print_line_cursor#9 204.0 (void()) print_ln() (byte*) print_screen @@ -1028,9 +1036,11 @@ Initial phi equivalence classes [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] [ print_cls::sc#2 print_cls::sc#1 ] +Added variable main::$1 to zero page equivalence class [ main::$1 ] Added variable main::$2 to zero page equivalence class [ main::$2 ] Added variable main::$32 to zero page equivalence class [ main::$32 ] Added variable main::dw2#1 to zero page equivalence class [ main::dw2#1 ] +Added variable main::$4 to zero page equivalence class [ main::$4 ] Added variable main::$5 to zero page equivalence class [ main::$5 ] Added variable main::$33 to zero page equivalence class [ main::$33 ] Added variable main::dw2#10 to zero page equivalence class [ main::dw2#10 ] @@ -1049,9 +1059,11 @@ Complete equivalence classes [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] [ print_cls::sc#2 print_cls::sc#1 ] +[ main::$1 ] [ main::$2 ] [ main::$32 ] [ main::dw2#1 ] +[ main::$4 ] [ main::$5 ] [ main::$33 ] [ main::dw2#10 ] @@ -1069,19 +1081,21 @@ Allocated zp ZP_BYTE:9 [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] Allocated zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] Allocated zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] Allocated zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] -Allocated zp ZP_WORD:16 [ main::$2 ] -Allocated zp ZP_WORD:18 [ main::$32 ] -Allocated zp ZP_DWORD:20 [ main::dw2#1 ] -Allocated zp ZP_WORD:24 [ main::$5 ] -Allocated zp ZP_WORD:26 [ main::$33 ] -Allocated zp ZP_DWORD:28 [ main::dw2#10 ] -Allocated zp ZP_DWORD:32 [ print_dword::dw#0 ] -Allocated zp ZP_WORD:36 [ main::$15 ] -Allocated zp ZP_WORD:38 [ main::$19 ] -Allocated zp ZP_WORD:40 [ main::$23 ] -Allocated zp ZP_WORD:42 [ main::$27 ] -Allocated zp ZP_BYTE:44 [ print_byte::$0 ] -Allocated zp ZP_BYTE:45 [ print_byte::$2 ] +Allocated zp ZP_WORD:16 [ main::$1 ] +Allocated zp ZP_WORD:18 [ main::$2 ] +Allocated zp ZP_WORD:20 [ main::$32 ] +Allocated zp ZP_DWORD:22 [ main::dw2#1 ] +Allocated zp ZP_WORD:26 [ main::$4 ] +Allocated zp ZP_WORD:28 [ main::$5 ] +Allocated zp ZP_WORD:30 [ main::$33 ] +Allocated zp ZP_DWORD:32 [ main::dw2#10 ] +Allocated zp ZP_DWORD:36 [ print_dword::dw#0 ] +Allocated zp ZP_WORD:40 [ main::$15 ] +Allocated zp ZP_WORD:42 [ main::$19 ] +Allocated zp ZP_WORD:44 [ main::$23 ] +Allocated zp ZP_WORD:46 [ main::$27 ] +Allocated zp ZP_BYTE:48 [ print_byte::$0 ] +Allocated zp ZP_BYTE:49 [ print_byte::$2 ] INITIAL ASM //SEG0 Basic Upstart @@ -1109,19 +1123,21 @@ bend_from_b20: bend: //SEG9 main main: { - .label _2 = $10 - .label _5 = $18 - .label _15 = $24 - .label _19 = $26 - .label _23 = $28 - .label _27 = $2a - .label _32 = $12 - .label _33 = $1a - .label dw2 = $14 + .label _1 = $10 + .label _2 = $12 + .label _4 = $1a + .label _5 = $1c + .label _15 = $28 + .label _19 = $2a + .label _23 = $2c + .label _27 = $2e + .label _32 = $14 + .label _33 = $1e + .label dw2 = $16 .label dw = 2 - .label dw2_10 = $1c + .label dw2_10 = $20 //SEG10 [5] call print_cls - //SEG11 [77] phi from main to print_cls [phi:main->print_cls] + //SEG11 [79] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -1148,12 +1164,17 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [7] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG17 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + lda dw+2 + sta _1 + lda dw+3 + sta _1+1 + //SEG18 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG18 [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 + //SEG19 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 lda _2 clc adc #<$1111 @@ -1161,7 +1182,7 @@ main: { lda _2+1 adc #>$1111 sta _32+1 - //SEG19 [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG20 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 lda dw sta dw2 lda dw+1 @@ -1170,12 +1191,17 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG20 [10] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 + //SEG21 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 + lda dw2 + sta _4 + lda dw2+1 + sta _4+1 + //SEG22 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG21 [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 + //SEG23 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz2_plus_vwuc1 lda _5 clc adc #<$1111 @@ -1183,7 +1209,7 @@ main: { lda _5+1 adc #>$1111 sta _33+1 - //SEG22 [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz2_setlo_vwuz3 + //SEG24 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz2_setlo_vwuz3 lda _33 sta dw2_10 lda _33+1 @@ -1192,7 +1218,7 @@ main: { sta dw2_10+2 lda dw2+3 sta dw2_10+3 - //SEG23 [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 -- vduz1=vduz2 + //SEG25 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 -- vduz1=vduz2 lda dw2_10 sta print_dword.dw lda dw2_10+1 @@ -1201,195 +1227,195 @@ main: { sta print_dword.dw+2 lda dw2_10+3 sta print_dword.dw+3 - //SEG24 [14] call print_dword + //SEG26 [16] call print_dword jsr print_dword - //SEG25 [15] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG27 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG26 main::@4 + //SEG28 main::@4 b4: - //SEG27 [16] call print_char - //SEG28 [62] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG29 [18] call print_char + //SEG30 [64] phi from main::@4 to print_char [phi:main::@4->print_char] print_char_from_b4: - //SEG29 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy - //SEG30 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuz1=vbuc1 + //SEG31 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG32 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b5 - //SEG31 main::@5 + //SEG33 main::@5 b5: - //SEG32 [17] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG34 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta print_word.w lda dw2_10+3 sta print_word.w+1 - //SEG33 [18] call print_word - //SEG34 [66] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG35 [20] call print_word + //SEG36 [68] phi from main::@5 to print_word [phi:main::@5->print_word] print_word_from_b5: - //SEG35 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy - //SEG36 [66] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy + //SEG37 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG38 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG37 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG39 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG38 main::@6 + //SEG40 main::@6 b6: - //SEG39 [20] call print_char - //SEG40 [62] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG41 [22] call print_char + //SEG42 [64] phi from main::@6 to print_char [phi:main::@6->print_char] print_char_from_b6: - //SEG41 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy - //SEG42 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuz1=vbuc1 + //SEG43 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG44 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b7 - //SEG43 main::@7 + //SEG45 main::@7 b7: - //SEG44 [21] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG46 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta print_word.w lda dw2_10+1 sta print_word.w+1 - //SEG45 [22] call print_word - //SEG46 [66] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG47 [24] call print_word + //SEG48 [68] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //SEG47 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy - //SEG48 [66] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy + //SEG49 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG50 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG49 [23] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG51 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG50 main::@8 + //SEG52 main::@8 b8: - //SEG51 [24] call print_char - //SEG52 [62] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG53 [26] call print_char + //SEG54 [64] phi from main::@8 to print_char [phi:main::@8->print_char] print_char_from_b8: - //SEG53 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy - //SEG54 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuz1=vbuc1 + //SEG55 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG56 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b9 - //SEG55 main::@9 + //SEG57 main::@9 b9: - //SEG56 [25] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG58 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta _15 lda dw2_10+3 sta _15+1 - //SEG57 [26] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuz1=_hi_vwuz2 + //SEG59 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuz1=_hi_vwuz2 lda _15+1 sta print_byte.b - //SEG58 [27] call print_byte - //SEG59 [54] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG60 [29] call print_byte + //SEG61 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] print_byte_from_b9: - //SEG60 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy - //SEG61 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy + //SEG62 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG63 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG62 [28] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG64 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG63 main::@10 + //SEG65 main::@10 b10: - //SEG64 [29] call print_char - //SEG65 [62] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG66 [31] call print_char + //SEG67 [64] phi from main::@10 to print_char [phi:main::@10->print_char] print_char_from_b10: - //SEG66 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy - //SEG67 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuz1=vbuc1 + //SEG68 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG69 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b11 - //SEG68 main::@11 + //SEG70 main::@11 b11: - //SEG69 [30] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG71 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2_10+2 sta _19 lda dw2_10+3 sta _19+1 - //SEG70 [31] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuz1=_lo_vwuz2 + //SEG72 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuz1=_lo_vwuz2 lda _19 sta print_byte.b - //SEG71 [32] call print_byte - //SEG72 [54] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG73 [34] call print_byte + //SEG74 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] print_byte_from_b11: - //SEG73 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy - //SEG74 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy + //SEG75 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG76 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG75 [33] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG77 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG76 main::@12 + //SEG78 main::@12 b12: - //SEG77 [34] call print_char - //SEG78 [62] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG79 [36] call print_char + //SEG80 [64] phi from main::@12 to print_char [phi:main::@12->print_char] print_char_from_b12: - //SEG79 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy - //SEG80 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuz1=vbuc1 + //SEG81 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG82 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b13 - //SEG81 main::@13 + //SEG83 main::@13 b13: - //SEG82 [35] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG84 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta _23 lda dw2_10+1 sta _23+1 - //SEG83 [36] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuz1=_hi_vwuz2 + //SEG85 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuz1=_hi_vwuz2 lda _23+1 sta print_byte.b - //SEG84 [37] call print_byte - //SEG85 [54] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG86 [39] call print_byte + //SEG87 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] print_byte_from_b13: - //SEG86 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy - //SEG87 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy + //SEG88 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG89 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG88 [38] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG90 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG89 main::@14 + //SEG91 main::@14 b14: - //SEG90 [39] call print_char - //SEG91 [62] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG92 [41] call print_char + //SEG93 [64] phi from main::@14 to print_char [phi:main::@14->print_char] print_char_from_b14: - //SEG92 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy - //SEG93 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuz1=vbuc1 + //SEG94 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG95 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuz1=vbuc1 lda #' ' sta print_char.ch jsr print_char jmp b15 - //SEG94 main::@15 + //SEG96 main::@15 b15: - //SEG95 [40] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG97 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2_10 sta _27 lda dw2_10+1 sta _27+1 - //SEG96 [41] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuz1=_lo_vwuz2 + //SEG98 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuz1=_lo_vwuz2 lda _27 sta print_byte.b - //SEG97 [42] call print_byte - //SEG98 [54] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG99 [44] call print_byte + //SEG100 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] print_byte_from_b15: - //SEG99 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy - //SEG100 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy + //SEG101 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG102 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG101 [43] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG103 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG102 main::@16 + //SEG104 main::@16 b16: - //SEG103 [44] call print_ln - //SEG104 [49] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG105 [46] call print_ln + //SEG106 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] print_ln_from_b16: jsr print_ln jmp b17 - //SEG105 main::@17 + //SEG107 main::@17 b17: - //SEG106 [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG108 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -1398,7 +1424,7 @@ main: { bne !+ inc dw+3 !: - //SEG107 [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG109 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 lda dw+3 cmp #>$12345690>>$10 bne b18 @@ -1412,34 +1438,34 @@ main: { cmp #<$12345690 bne b18 jmp breturn - //SEG108 main::@return + //SEG110 main::@return breturn: - //SEG109 [47] return + //SEG111 [49] return rts - //SEG110 main::@18 + //SEG112 main::@18 b18: - //SEG111 [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG113 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG112 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG114 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //SEG113 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy - //SEG114 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy - //SEG115 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy + //SEG115 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG116 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG117 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG116 print_ln +//SEG118 print_ln print_ln: { - //SEG117 [50] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG119 [52] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG118 [50] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG120 [52] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG119 print_ln::@1 + //SEG121 print_ln::@1 b1: - //SEG120 [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG122 [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -1447,7 +1473,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG121 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG123 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -1457,165 +1483,165 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG122 print_ln::@return + //SEG124 print_ln::@return breturn: - //SEG123 [53] return + //SEG125 [55] return rts } -//SEG124 print_byte +//SEG126 print_byte print_byte: { - .label _0 = $2c - .label _2 = $2d + .label _0 = $30 + .label _2 = $31 .label b = 8 - //SEG125 [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 + //SEG127 [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4 lda b lsr lsr lsr lsr sta _0 - //SEG126 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG128 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch - //SEG127 [57] call print_char - //SEG128 [62] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG129 [59] call print_char + //SEG130 [64] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG129 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy - //SEG130 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG131 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG132 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG131 print_byte::@1 + //SEG133 print_byte::@1 b1: - //SEG132 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 + //SEG134 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuz1=vbuz2_band_vbuc1 lda #$f and b sta _2 - //SEG133 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG135 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch - //SEG134 [60] call print_char - //SEG135 [62] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG136 [62] call print_char + //SEG137 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG136 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG137 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG138 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG139 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG138 print_byte::@return + //SEG140 print_byte::@return breturn: - //SEG139 [61] return + //SEG141 [63] return rts } -//SEG140 print_char +//SEG142 print_char print_char: { .label ch = 9 - //SEG141 [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuz2 + //SEG143 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuz2 lda ch ldy #0 sta (print_char_cursor),y - //SEG142 [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG144 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG143 print_char::@return + //SEG145 print_char::@return breturn: - //SEG144 [65] return + //SEG146 [67] return rts } -//SEG145 print_word +//SEG147 print_word print_word: { .label w = $c - //SEG146 [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuz1=_hi_vwuz2 + //SEG148 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuz1=_hi_vwuz2 lda w+1 sta print_byte.b - //SEG147 [68] call print_byte - //SEG148 [54] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG149 [70] call print_byte + //SEG150 [56] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG149 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy - //SEG150 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG151 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG152 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG151 print_word::@1 + //SEG153 print_word::@1 b1: - //SEG152 [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuz1=_lo_vwuz2 + //SEG154 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuz1=_lo_vwuz2 lda w sta print_byte.b - //SEG153 [70] call print_byte - //SEG154 [54] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG155 [72] call print_byte + //SEG156 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG155 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG156 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG157 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG158 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG157 print_word::@return + //SEG159 print_word::@return breturn: - //SEG158 [71] return + //SEG160 [73] return rts } -//SEG159 print_dword +//SEG161 print_dword print_dword: { - .label dw = $20 - //SEG160 [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + .label dw = $24 + //SEG162 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG161 [73] call print_word - //SEG162 [66] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG163 [75] call print_word + //SEG164 [68] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG163 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy - //SEG164 [66] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG165 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG166 [68] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG165 print_dword::@1 + //SEG167 print_dword::@1 b1: - //SEG166 [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG168 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG167 [75] call print_word - //SEG168 [66] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG169 [77] call print_word + //SEG170 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG169 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG170 [66] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG171 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG172 [68] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG171 print_dword::@return + //SEG173 print_dword::@return breturn: - //SEG172 [76] return + //SEG174 [78] return rts } -//SEG173 print_cls +//SEG175 print_cls print_cls: { .label sc = $e - //SEG174 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG176 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG175 [78] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG177 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG176 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG178 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG177 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG179 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG178 print_cls::@1 + //SEG180 print_cls::@1 b1: - //SEG179 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG181 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG180 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG182 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG181 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG183 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -1623,74 +1649,78 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG182 print_cls::@return + //SEG184 print_cls::@return breturn: - //SEG183 [82] return + //SEG185 [84] return rts } print_hextab: .text "0123456789abcdef" REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_WORD:16 [ main::$2 ] has ALU potential. -Equivalence Class zp ZP_WORD:24 [ main::$5 ] has ALU potential. -Statement [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a -Statement [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a -Statement [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a -Statement [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a -Statement [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [17] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [21] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [25] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [30] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [31] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [35] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [36] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [40] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a +Equivalence Class zp ZP_WORD:18 [ main::$2 ] has ALU potential. +Equivalence Class zp ZP_WORD:28 [ main::$5 ] has ALU potential. +Statement [7] (word~) main::$1 ← > (dword) main::dw#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ) always clobbers reg byte a +Statement [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a +Statement [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a +Statement [11] (word~) main::$4 ← < (dword) main::dw2#1 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a +Statement [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a +Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a +Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [19] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [23] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [27] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [28] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [32] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [33] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [37] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [38] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [42] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [43] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:27::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:32::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:37::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:42::print_char:57 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:27::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:32::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:37::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:42::print_char:60 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y +Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a +Statement [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:26 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:31 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:36 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:41 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:29::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:34::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:39::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:44::print_char:59 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:29::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:34::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:39::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:44::print_char:62 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a -Statement [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a -Statement [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a -Statement [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a -Statement [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a -Statement [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a -Statement [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [17] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [21] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [25] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [26] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [30] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [31] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [35] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [36] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [40] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [41] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:44 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a -Statement [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a -Statement [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a -Statement [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:27::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:32::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:37::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:42::print_char:57 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:57 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:27::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:32::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:37::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:42::print_char:60 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:18::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:22::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:68::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:18::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:22::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:14::print_word:73::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:14::print_word:75::print_byte:70::print_char:60 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y -Statement [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a -Statement [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:73 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:14::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a -Statement [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a -Statement [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:14 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a -Statement [79] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a +Statement [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a +Statement [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a +Statement [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a +Statement [81] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [7] (word~) main::$1 ← > (dword) main::dw#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 ] ) always clobbers reg byte a +Statement [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::$32 ] ) always clobbers reg byte a +Statement [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a +Statement [11] (word~) main::$4 ← < (dword) main::dw2#1 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 ] ) always clobbers reg byte a +Statement [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#1 main::$33 ] ) always clobbers reg byte a +Statement [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 ] ) always clobbers reg byte a +Statement [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ( main:2 [ main::dw#10 print_char_cursor#69 print_line_cursor#19 main::dw2#10 print_dword::dw#0 ] ) always clobbers reg byte a +Statement [19] (word) print_word::w#2 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [23] (word) print_word::w#3 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [27] (word~) main::$15 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$15 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [28] (byte) print_byte::b#2 ← > (word~) main::$15 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#2 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [32] (word~) main::$19 ← > (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$19 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [33] (byte) print_byte::b#3 ← < (word~) main::$19 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#3 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [37] (word~) main::$23 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 main::$23 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [38] (byte) print_byte::b#4 ← > (word~) main::$23 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#4 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [42] (word~) main::$27 ← < (dword) main::dw2#10 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 main::$27 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [43] (byte) print_byte::b#5 ← < (word~) main::$27 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ( main:2 [ main::dw#10 print_line_cursor#19 print_byte::b#5 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 [ main::dw#1 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ( main:2 [ main::dw#1 print_char_cursor#72 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:46 [ main::dw#10 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a +Statement [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) always clobbers reg byte a +Statement [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:29 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:34 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:39 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:44 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:20::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:24::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:75::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:16::print_word:77::print_byte:72 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) always clobbers reg byte a +Statement [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 [ print_char_cursor#44 ] ( main:2::print_char:18 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:22 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:26 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:31 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:36 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_char:41 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:29::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:34::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:39::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:44::print_char:59 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:59 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#44 ] main:2::print_byte:29::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:34::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:39::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_byte:44::print_char:62 [ main::dw#10 print_line_cursor#19 print_char_cursor#44 ] main:2::print_word:20::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:24::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:70::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#44 ] main:2::print_word:20::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_word:24::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] main:2::print_dword:16::print_word:75::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#44 ] main:2::print_dword:16::print_word:77::print_byte:72::print_char:62 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#44 ] ) always clobbers reg byte y +Statement [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 [ print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#0 print_char_cursor#65 print_word::w#4 ] ) always clobbers reg byte a +Statement [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 [ print_char_cursor#12 print_byte::b#1 ] ( main:2::print_word:20 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_word:24 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:75 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#1 ] main:2::print_dword:16::print_word:77 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#1 ] ) always clobbers reg byte a +Statement [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 [ print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#69 print_dword::dw#0 print_word::w#0 ] ) always clobbers reg byte a +Statement [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 [ print_char_cursor#12 print_word::w#1 ] ( main:2::print_dword:16 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_word::w#1 ] ) always clobbers reg byte a +Statement [81] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] : zp ZP_DWORD:2 , Potential registers zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] : zp ZP_WORD:6 , Potential registers zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:8 , reg byte x , @@ -1698,52 +1728,56 @@ Potential registers zp ZP_BYTE:9 [ print_char::ch#8 print_char::ch#0 print_char: Potential registers zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] : zp ZP_WORD:10 , Potential registers zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] : zp ZP_WORD:12 , Potential registers zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:14 , -Potential registers zp ZP_WORD:16 [ main::$2 ] : zp ZP_WORD:16 , reg byte alu , -Potential registers zp ZP_WORD:18 [ main::$32 ] : zp ZP_WORD:18 , -Potential registers zp ZP_DWORD:20 [ main::dw2#1 ] : zp ZP_DWORD:20 , -Potential registers zp ZP_WORD:24 [ main::$5 ] : zp ZP_WORD:24 , reg byte alu , -Potential registers zp ZP_WORD:26 [ main::$33 ] : zp ZP_WORD:26 , -Potential registers zp ZP_DWORD:28 [ main::dw2#10 ] : zp ZP_DWORD:28 , -Potential registers zp ZP_DWORD:32 [ print_dword::dw#0 ] : zp ZP_DWORD:32 , -Potential registers zp ZP_WORD:36 [ main::$15 ] : zp ZP_WORD:36 , -Potential registers zp ZP_WORD:38 [ main::$19 ] : zp ZP_WORD:38 , -Potential registers zp ZP_WORD:40 [ main::$23 ] : zp ZP_WORD:40 , -Potential registers zp ZP_WORD:42 [ main::$27 ] : zp ZP_WORD:42 , -Potential registers zp ZP_BYTE:44 [ print_byte::$0 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:45 [ print_byte::$2 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:16 [ main::$1 ] : zp ZP_WORD:16 , +Potential registers zp ZP_WORD:18 [ main::$2 ] : zp ZP_WORD:18 , reg byte alu , +Potential registers zp ZP_WORD:20 [ main::$32 ] : zp ZP_WORD:20 , +Potential registers zp ZP_DWORD:22 [ main::dw2#1 ] : zp ZP_DWORD:22 , +Potential registers zp ZP_WORD:26 [ main::$4 ] : zp ZP_WORD:26 , +Potential registers zp ZP_WORD:28 [ main::$5 ] : zp ZP_WORD:28 , reg byte alu , +Potential registers zp ZP_WORD:30 [ main::$33 ] : zp ZP_WORD:30 , +Potential registers zp ZP_DWORD:32 [ main::dw2#10 ] : zp ZP_DWORD:32 , +Potential registers zp ZP_DWORD:36 [ print_dword::dw#0 ] : zp ZP_DWORD:36 , +Potential registers zp ZP_WORD:40 [ main::$15 ] : zp ZP_WORD:40 , +Potential registers zp ZP_WORD:42 [ main::$19 ] : zp ZP_WORD:42 , +Potential registers zp ZP_WORD:44 [ main::$23 ] : zp ZP_WORD:44 , +Potential registers zp ZP_WORD:46 [ main::$27 ] : zp ZP_WORD:46 , +Potential registers zp ZP_BYTE:48 [ print_byte::$0 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:49 [ print_byte::$2 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [] 250.76: zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 96.03: zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] -Uplift Scope [main] 22: zp ZP_WORD:16 [ main::$2 ] 22: zp ZP_WORD:18 [ main::$32 ] 22: zp ZP_WORD:24 [ main::$5 ] 22: zp ZP_WORD:26 [ main::$33 ] 22: zp ZP_WORD:36 [ main::$15 ] 22: zp ZP_WORD:38 [ main::$19 ] 22: zp ZP_WORD:40 [ main::$23 ] 22: zp ZP_WORD:42 [ main::$27 ] 12.41: zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] 7.33: zp ZP_DWORD:20 [ main::dw2#1 ] 3.14: zp ZP_DWORD:28 [ main::dw2#10 ] -Uplift Scope [print_byte] 109: zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:44 [ print_byte::$0 ] 4: zp ZP_BYTE:45 [ print_byte::$2 ] +Uplift Scope [main] 110: zp ZP_WORD:16 [ main::$1 ] 110: zp ZP_WORD:26 [ main::$4 ] 22: zp ZP_WORD:18 [ main::$2 ] 22: zp ZP_WORD:20 [ main::$32 ] 22: zp ZP_WORD:28 [ main::$5 ] 22: zp ZP_WORD:30 [ main::$33 ] 22: zp ZP_WORD:40 [ main::$15 ] 22: zp ZP_WORD:42 [ main::$19 ] 22: zp ZP_WORD:44 [ main::$23 ] 22: zp ZP_WORD:46 [ main::$27 ] 12.61: zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] 8.25: zp ZP_DWORD:22 [ main::dw2#1 ] 3.14: zp ZP_DWORD:32 [ main::dw2#10 ] +Uplift Scope [] 250.75: zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] 95.77: zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] +Uplift Scope [print_byte] 109: zp ZP_BYTE:8 [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:48 [ print_byte::$0 ] 4: zp ZP_BYTE:49 [ print_byte::$2 ] Uplift Scope [print_word] 62: zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_char] 14: zp ZP_BYTE:9 [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] -Uplift Scope [print_dword] 5: zp ZP_DWORD:32 [ print_dword::dw#0 ] +Uplift Scope [print_dword] 5: zp ZP_DWORD:36 [ print_dword::dw#0 ] Uplift Scope [print_ln] -Uplifting [] best 8947 combination zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] -Uplifting [main] best 8947 combination zp ZP_WORD:16 [ main::$2 ] zp ZP_WORD:18 [ main::$32 ] zp ZP_WORD:24 [ main::$5 ] zp ZP_WORD:26 [ main::$33 ] zp ZP_WORD:36 [ main::$15 ] zp ZP_WORD:38 [ main::$19 ] zp ZP_WORD:40 [ main::$23 ] zp ZP_WORD:42 [ main::$27 ] zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] zp ZP_DWORD:20 [ main::dw2#1 ] zp ZP_DWORD:28 [ main::dw2#10 ] -Uplifting [print_byte] best 8895 combination reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 8895 combination zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] -Uplifting [print_cls] best 8895 combination zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_char] best 8868 combination reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] -Uplifting [print_dword] best 8868 combination zp ZP_DWORD:32 [ print_dword::dw#0 ] -Uplifting [print_ln] best 8868 combination -Coalescing zero page register with common assignment [ zp ZP_WORD:16 [ main::$2 ] ] with [ zp ZP_WORD:18 [ main::$32 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:20 [ main::dw2#1 ] ] with [ zp ZP_DWORD:28 [ main::dw2#10 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:24 [ main::$5 ] ] with [ zp ZP_WORD:26 [ main::$33 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:20 [ main::dw2#1 main::dw2#10 ] ] with [ zp ZP_DWORD:32 [ print_dword::dw#0 ] ] - score: 1 +Uplifting [main] best 9187 combination zp ZP_WORD:16 [ main::$1 ] zp ZP_WORD:26 [ main::$4 ] zp ZP_WORD:18 [ main::$2 ] zp ZP_WORD:20 [ main::$32 ] zp ZP_WORD:28 [ main::$5 ] zp ZP_WORD:30 [ main::$33 ] zp ZP_WORD:40 [ main::$15 ] zp ZP_WORD:42 [ main::$19 ] zp ZP_WORD:44 [ main::$23 ] zp ZP_WORD:46 [ main::$27 ] zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] zp ZP_DWORD:22 [ main::dw2#1 ] zp ZP_DWORD:32 [ main::dw2#10 ] +Uplifting [] best 9187 combination zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:10 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] +Uplifting [print_byte] best 9135 combination reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 9135 combination zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] +Uplifting [print_cls] best 9135 combination zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_char] best 9108 combination reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] +Uplifting [print_dword] best 9108 combination zp ZP_DWORD:36 [ print_dword::dw#0 ] +Uplifting [print_ln] best 9108 combination +Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ main::$2 ] ] with [ zp ZP_WORD:20 [ main::$32 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:22 [ main::dw2#1 ] ] with [ zp ZP_DWORD:32 [ main::dw2#10 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ main::$5 ] ] with [ zp ZP_WORD:30 [ main::$33 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:22 [ main::dw2#1 main::dw2#10 ] ] with [ zp ZP_DWORD:36 [ print_dword::dw#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 ] ] with [ zp ZP_WORD:14 [ print_cls::sc#2 print_cls::sc#1 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] with [ zp ZP_WORD:16 [ main::$2 main::$32 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 ] ] with [ zp ZP_WORD:24 [ main::$5 main::$33 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 ] ] with [ zp ZP_WORD:36 [ main::$15 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 ] ] with [ zp ZP_WORD:38 [ main::$19 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 ] ] with [ zp ZP_WORD:40 [ main::$23 ] ] -Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 main::$23 ] ] with [ zp ZP_WORD:42 [ main::$27 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:16 [ main::$1 ] ] +Coalescing zero page register [ zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 main::$1 ] ] with [ zp ZP_WORD:26 [ main::$4 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 ] ] with [ zp ZP_WORD:18 [ main::$2 main::$32 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 ] ] with [ zp ZP_WORD:28 [ main::$5 main::$33 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 ] ] with [ zp ZP_WORD:40 [ main::$15 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 ] ] with [ zp ZP_WORD:42 [ main::$19 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 ] ] with [ zp ZP_WORD:44 [ main::$23 ] ] +Coalescing zero page register [ zp ZP_WORD:12 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 main::$23 ] ] with [ zp ZP_WORD:46 [ main::$27 ] ] Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] Allocated (was zp ZP_WORD:12) zp ZP_WORD:10 [ print_word::w#4 print_word::w#2 print_word::w#3 print_word::w#0 print_word::w#1 main::$2 main::$32 main::$5 main::$33 main::$15 main::$19 main::$23 main::$27 ] -Allocated (was zp ZP_DWORD:20) zp ZP_DWORD:12 [ main::dw2#1 main::dw2#10 print_dword::dw#0 ] +Allocated (was zp ZP_DWORD:22) zp ZP_DWORD:12 [ main::dw2#1 main::dw2#10 print_dword::dw#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1771,7 +1805,9 @@ bend_from_b20: bend: //SEG9 main main: { + .label _1 = 6 .label _2 = $a + .label _4 = 6 .label _5 = $a .label _15 = $a .label _19 = $a @@ -1782,7 +1818,7 @@ main: { .label dw2 = $c .label dw = 2 //SEG10 [5] call print_cls - //SEG11 [77] phi from main to print_cls [phi:main->print_cls] + //SEG11 [79] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -1809,12 +1845,17 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [7] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG17 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + lda dw+2 + sta _1 + lda dw+3 + sta _1+1 + //SEG18 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG18 [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG19 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _32 adc #<$1111 @@ -1822,7 +1863,7 @@ main: { lda _32+1 adc #>$1111 sta _32+1 - //SEG19 [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG20 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 lda dw sta dw2 lda dw+1 @@ -1831,12 +1872,17 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG20 [10] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 + //SEG21 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 + lda dw2 + sta _4 + lda dw2+1 + sta _4+1 + //SEG22 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG21 [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG23 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _33 adc #<$1111 @@ -1844,196 +1890,196 @@ main: { lda _33+1 adc #>$1111 sta _33+1 - //SEG22 [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 + //SEG24 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 lda _33 sta dw2 lda _33+1 sta dw2+1 - //SEG23 [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + //SEG25 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 // (dword) print_dword::dw#0 = (dword) main::dw2#10 // register copy zp ZP_DWORD:12 - //SEG24 [14] call print_dword + //SEG26 [16] call print_dword jsr print_dword - //SEG25 [15] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG27 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] b4_from_b1: jmp b4 - //SEG26 main::@4 + //SEG28 main::@4 b4: - //SEG27 [16] call print_char - //SEG28 [62] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG29 [18] call print_char + //SEG30 [64] phi from main::@4 to print_char [phi:main::@4->print_char] print_char_from_b4: - //SEG29 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy - //SEG30 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 + //SEG31 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG32 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b5 - //SEG31 main::@5 + //SEG33 main::@5 b5: - //SEG32 [17] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG34 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta print_word.w lda dw2+3 sta print_word.w+1 - //SEG33 [18] call print_word - //SEG34 [66] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG35 [20] call print_word + //SEG36 [68] phi from main::@5 to print_word [phi:main::@5->print_word] print_word_from_b5: - //SEG35 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy - //SEG36 [66] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy + //SEG37 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG38 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG37 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG39 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] b6_from_b5: jmp b6 - //SEG38 main::@6 + //SEG40 main::@6 b6: - //SEG39 [20] call print_char - //SEG40 [62] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG41 [22] call print_char + //SEG42 [64] phi from main::@6 to print_char [phi:main::@6->print_char] print_char_from_b6: - //SEG41 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy - //SEG42 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 + //SEG43 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG44 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b7 - //SEG43 main::@7 + //SEG45 main::@7 b7: - //SEG44 [21] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG46 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta print_word.w lda dw2+1 sta print_word.w+1 - //SEG45 [22] call print_word - //SEG46 [66] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG47 [24] call print_word + //SEG48 [68] phi from main::@7 to print_word [phi:main::@7->print_word] print_word_from_b7: - //SEG47 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy - //SEG48 [66] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy + //SEG49 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG50 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG49 [23] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG51 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] b8_from_b7: jmp b8 - //SEG50 main::@8 + //SEG52 main::@8 b8: - //SEG51 [24] call print_char - //SEG52 [62] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG53 [26] call print_char + //SEG54 [64] phi from main::@8 to print_char [phi:main::@8->print_char] print_char_from_b8: - //SEG53 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy - //SEG54 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 + //SEG55 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG56 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b9 - //SEG55 main::@9 + //SEG57 main::@9 b9: - //SEG56 [25] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG58 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _15 lda dw2+3 sta _15+1 - //SEG57 [26] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 + //SEG59 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 lda _15+1 tax - //SEG58 [27] call print_byte - //SEG59 [54] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG60 [29] call print_byte + //SEG61 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] print_byte_from_b9: - //SEG60 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy - //SEG61 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy + //SEG62 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG63 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG62 [28] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG64 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] b10_from_b9: jmp b10 - //SEG63 main::@10 + //SEG65 main::@10 b10: - //SEG64 [29] call print_char - //SEG65 [62] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG66 [31] call print_char + //SEG67 [64] phi from main::@10 to print_char [phi:main::@10->print_char] print_char_from_b10: - //SEG66 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy - //SEG67 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 + //SEG68 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG69 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b11 - //SEG68 main::@11 + //SEG70 main::@11 b11: - //SEG69 [30] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG71 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _19 lda dw2+3 sta _19+1 - //SEG70 [31] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 + //SEG72 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 lda _19 tax - //SEG71 [32] call print_byte - //SEG72 [54] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG73 [34] call print_byte + //SEG74 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] print_byte_from_b11: - //SEG73 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy - //SEG74 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy + //SEG75 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG76 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG75 [33] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG77 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] b12_from_b11: jmp b12 - //SEG76 main::@12 + //SEG78 main::@12 b12: - //SEG77 [34] call print_char - //SEG78 [62] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG79 [36] call print_char + //SEG80 [64] phi from main::@12 to print_char [phi:main::@12->print_char] print_char_from_b12: - //SEG79 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy - //SEG80 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 + //SEG81 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG82 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b13 - //SEG81 main::@13 + //SEG83 main::@13 b13: - //SEG82 [35] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG84 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _23 lda dw2+1 sta _23+1 - //SEG83 [36] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 + //SEG85 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 lda _23+1 tax - //SEG84 [37] call print_byte - //SEG85 [54] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG86 [39] call print_byte + //SEG87 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] print_byte_from_b13: - //SEG86 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy - //SEG87 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy + //SEG88 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG89 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG88 [38] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG90 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] b14_from_b13: jmp b14 - //SEG89 main::@14 + //SEG91 main::@14 b14: - //SEG90 [39] call print_char - //SEG91 [62] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG92 [41] call print_char + //SEG93 [64] phi from main::@14 to print_char [phi:main::@14->print_char] print_char_from_b14: - //SEG92 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy - //SEG93 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 + //SEG94 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG95 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char jmp b15 - //SEG94 main::@15 + //SEG96 main::@15 b15: - //SEG95 [40] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG97 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _27 lda dw2+1 sta _27+1 - //SEG96 [41] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 + //SEG98 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 lda _27 tax - //SEG97 [42] call print_byte - //SEG98 [54] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG99 [44] call print_byte + //SEG100 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] print_byte_from_b15: - //SEG99 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy - //SEG100 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy + //SEG101 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG102 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG101 [43] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG103 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] b16_from_b15: jmp b16 - //SEG102 main::@16 + //SEG104 main::@16 b16: - //SEG103 [44] call print_ln - //SEG104 [49] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG105 [46] call print_ln + //SEG106 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] print_ln_from_b16: jsr print_ln jmp b17 - //SEG105 main::@17 + //SEG107 main::@17 b17: - //SEG106 [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG108 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -2042,7 +2088,7 @@ main: { bne !+ inc dw+3 !: - //SEG107 [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG109 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 lda dw+3 cmp #>$12345690>>$10 bne b18 @@ -2056,34 +2102,34 @@ main: { cmp #<$12345690 bne b18 jmp breturn - //SEG108 main::@return + //SEG110 main::@return breturn: - //SEG109 [47] return + //SEG111 [49] return rts - //SEG110 main::@18 + //SEG112 main::@18 b18: - //SEG111 [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG113 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG112 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG114 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] b1_from_b18: - //SEG113 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy - //SEG114 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy - //SEG115 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy + //SEG115 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG116 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG117 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG116 print_ln +//SEG118 print_ln print_ln: { - //SEG117 [50] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG119 [52] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] b1_from_print_ln: b1_from_b1: - //SEG118 [50] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG120 [52] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy jmp b1 - //SEG119 print_ln::@1 + //SEG121 print_ln::@1 b1: - //SEG120 [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG122 [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2091,7 +2137,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG121 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG123 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1_from_b1 @@ -2101,156 +2147,156 @@ print_ln: { bcc b1_from_b1 !: jmp breturn - //SEG122 print_ln::@return + //SEG124 print_ln::@return breturn: - //SEG123 [53] return + //SEG125 [55] return rts } -//SEG124 print_byte +//SEG126 print_byte print_byte: { - //SEG125 [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG127 [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG126 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG128 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG127 [57] call print_char - //SEG128 [62] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG129 [59] call print_char + //SEG130 [64] phi from print_byte to print_char [phi:print_byte->print_char] print_char_from_print_byte: - //SEG129 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy - //SEG130 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG131 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG132 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char jmp b1 - //SEG131 print_byte::@1 + //SEG133 print_byte::@1 b1: - //SEG132 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG134 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG133 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG135 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG134 [60] call print_char - //SEG135 [62] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG136 [62] call print_char + //SEG137 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] print_char_from_b1: - //SEG136 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG137 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG138 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG139 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char jmp breturn - //SEG138 print_byte::@return + //SEG140 print_byte::@return breturn: - //SEG139 [61] return + //SEG141 [63] return rts } -//SEG140 print_char +//SEG142 print_char print_char: { - //SEG141 [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa + //SEG143 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG142 [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG144 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: jmp breturn - //SEG143 print_char::@return + //SEG145 print_char::@return breturn: - //SEG144 [65] return + //SEG146 [67] return rts } -//SEG145 print_word +//SEG147 print_word print_word: { .label w = $a - //SEG146 [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 + //SEG148 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG147 [68] call print_byte - //SEG148 [54] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG149 [70] call print_byte + //SEG150 [56] phi from print_word to print_byte [phi:print_word->print_byte] print_byte_from_print_word: - //SEG149 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy - //SEG150 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG151 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG152 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte jmp b1 - //SEG151 print_word::@1 + //SEG153 print_word::@1 b1: - //SEG152 [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 + //SEG154 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 lda w tax - //SEG153 [70] call print_byte - //SEG154 [54] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG155 [72] call print_byte + //SEG156 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] print_byte_from_b1: - //SEG155 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG156 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG157 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG158 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte jmp breturn - //SEG157 print_word::@return + //SEG159 print_word::@return breturn: - //SEG158 [71] return + //SEG160 [73] return rts } -//SEG159 print_dword +//SEG161 print_dword print_dword: { .label dw = $c - //SEG160 [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG162 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG161 [73] call print_word - //SEG162 [66] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG163 [75] call print_word + //SEG164 [68] phi from print_dword to print_word [phi:print_dword->print_word] print_word_from_print_dword: - //SEG163 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy - //SEG164 [66] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG165 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG166 [68] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word jmp b1 - //SEG165 print_dword::@1 + //SEG167 print_dword::@1 b1: - //SEG166 [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG168 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG167 [75] call print_word - //SEG168 [66] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG169 [77] call print_word + //SEG170 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] print_word_from_b1: - //SEG169 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG170 [66] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG171 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG172 [68] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word jmp breturn - //SEG171 print_dword::@return + //SEG173 print_dword::@return breturn: - //SEG172 [76] return + //SEG174 [78] return rts } -//SEG173 print_cls +//SEG175 print_cls print_cls: { .label sc = 6 - //SEG174 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG176 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG175 [78] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG177 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG176 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG178 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG177 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG179 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG178 print_cls::@1 + //SEG180 print_cls::@1 b1: - //SEG179 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG181 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG180 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG182 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG181 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG183 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -2258,9 +2304,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG182 print_cls::@return + //SEG184 print_cls::@return breturn: - //SEG183 [82] return + //SEG185 [84] return rts } print_hextab: .text "0123456789abcdef" @@ -2376,6 +2422,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() +(word~) main::$1 $1 zp ZP_WORD:6 110.0 (word~) main::$15 $15 zp ZP_WORD:10 22.0 (word~) main::$19 $19 zp ZP_WORD:10 22.0 (word~) main::$2 $2 zp ZP_WORD:10 22.0 @@ -2383,6 +2430,7 @@ FINAL SYMBOL TABLE (word~) main::$27 $27 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$32 $32 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$33 $33 zp ZP_WORD:10 22.0 +(word~) main::$4 $4 zp ZP_WORD:6 110.0 (word~) main::$5 $5 zp ZP_WORD:10 22.0 (label) main::@1 (label) main::@10 @@ -2403,9 +2451,9 @@ FINAL SYMBOL TABLE (label) main::@return (dword) main::dw (dword) main::dw#1 dw zp ZP_DWORD:2 11.0 -(dword) main::dw#10 dw zp ZP_DWORD:2 1.4102564102564101 +(dword) main::dw#10 dw zp ZP_DWORD:2 1.6097560975609757 (dword) main::dw2 -(dword) main::dw2#1 dw2 zp ZP_DWORD:12 7.333333333333333 +(dword) main::dw2#1 dw2 zp ZP_DWORD:12 8.25 (dword) main::dw2#10 dw2 zp ZP_DWORD:12 3.142857142857143 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 @@ -2431,7 +2479,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:8 37.0 (byte*) print_char_cursor#65 print_char_cursor zp ZP_WORD:8 14.0 (byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:8 16.666666666666664 -(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.4444444444444446 +(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.1818181818181819 (byte*~) print_char_cursor#72 print_char_cursor zp ZP_WORD:8 22.0 (void()) print_cls() (label) print_cls::@1 @@ -2448,7 +2496,7 @@ FINAL SYMBOL TABLE (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3333333333333333 +(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3170731707317073 (byte*) print_line_cursor#9 print_line_cursor zp ZP_WORD:6 204.0 (void()) print_ln() (label) print_ln::@1 @@ -2465,7 +2513,7 @@ FINAL SYMBOL TABLE (word) print_word::w#4 w zp ZP_WORD:10 9.999999999999998 zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] -zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 main::$1 main::$4 ] reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] @@ -2476,7 +2524,7 @@ reg byte a [ print_byte::$2 ] FINAL ASSEMBLER -Score: 7440 +Score: 7680 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -2495,7 +2543,9 @@ Score: 7440 //SEG8 @end //SEG9 main main: { + .label _1 = 6 .label _2 = $a + .label _4 = 6 .label _5 = $a .label _15 = $a .label _19 = $a @@ -2506,7 +2556,7 @@ main: { .label dw2 = $c .label dw = 2 //SEG10 [5] call print_cls - //SEG11 [77] phi from main to print_cls [phi:main->print_cls] + //SEG11 [79] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] //SEG13 [6] phi (byte*) print_line_cursor#19 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1 @@ -2530,12 +2580,17 @@ main: { sta dw+3 //SEG16 main::@1 b1: - //SEG17 [7] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + //SEG17 [7] (word~) main::$1 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 + lda dw+2 + sta _1 + lda dw+3 + sta _1+1 + //SEG18 [8] (word~) main::$2 ← > (dword) main::dw#10 -- vwuz1=_hi_vduz2 lda dw+2 sta _2 lda dw+3 sta _2+1 - //SEG18 [8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG19 [9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _32 adc #<$1111 @@ -2543,7 +2598,7 @@ main: { lda _32+1 adc #>$1111 sta _32+1 - //SEG19 [9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 + //SEG20 [10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32 -- vduz1=vduz2_sethi_vwuz3 lda dw sta dw2 lda dw+1 @@ -2552,12 +2607,17 @@ main: { sta dw2+2 lda _32+1 sta dw2+3 - //SEG20 [10] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 + //SEG21 [11] (word~) main::$4 ← < (dword) main::dw2#1 -- vwuz1=_lo_vduz2 + lda dw2 + sta _4 + lda dw2+1 + sta _4+1 + //SEG22 [12] (word~) main::$5 ← < (dword) main::dw#10 -- vwuz1=_lo_vduz2 lda dw sta _5 lda dw+1 sta _5+1 - //SEG21 [11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 + //SEG23 [13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369 -- vwuz1=vwuz1_plus_vwuc1 clc lda _33 adc #<$1111 @@ -2565,146 +2625,146 @@ main: { lda _33+1 adc #>$1111 sta _33+1 - //SEG22 [12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 + //SEG24 [14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33 -- vduz1=vduz1_setlo_vwuz2 lda _33 sta dw2 lda _33+1 sta dw2+1 - //SEG23 [13] (dword) print_dword::dw#0 ← (dword) main::dw2#10 + //SEG25 [15] (dword) print_dword::dw#0 ← (dword) main::dw2#10 // (dword) print_dword::dw#0 = (dword) main::dw2#10 // register copy zp ZP_DWORD:12 - //SEG24 [14] call print_dword + //SEG26 [16] call print_dword jsr print_dword - //SEG25 [15] phi from main::@1 to main::@4 [phi:main::@1->main::@4] - //SEG26 main::@4 - //SEG27 [16] call print_char - //SEG28 [62] phi from main::@4 to print_char [phi:main::@4->print_char] - //SEG29 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy - //SEG30 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 + //SEG27 [17] phi from main::@1 to main::@4 [phi:main::@1->main::@4] + //SEG28 main::@4 + //SEG29 [18] call print_char + //SEG30 [64] phi from main::@4 to print_char [phi:main::@4->print_char] + //SEG31 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@4->print_char#0] -- register_copy + //SEG32 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@4->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG31 main::@5 - //SEG32 [17] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG33 main::@5 + //SEG34 [19] (word) print_word::w#2 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta print_word.w lda dw2+3 sta print_word.w+1 - //SEG33 [18] call print_word - //SEG34 [66] phi from main::@5 to print_word [phi:main::@5->print_word] - //SEG35 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy - //SEG36 [66] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy + //SEG35 [20] call print_word + //SEG36 [68] phi from main::@5 to print_word [phi:main::@5->print_word] + //SEG37 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@5->print_word#0] -- register_copy + //SEG38 [68] phi (word) print_word::w#4 = (word) print_word::w#2 [phi:main::@5->print_word#1] -- register_copy jsr print_word - //SEG37 [19] phi from main::@5 to main::@6 [phi:main::@5->main::@6] - //SEG38 main::@6 - //SEG39 [20] call print_char - //SEG40 [62] phi from main::@6 to print_char [phi:main::@6->print_char] - //SEG41 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy - //SEG42 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 + //SEG39 [21] phi from main::@5 to main::@6 [phi:main::@5->main::@6] + //SEG40 main::@6 + //SEG41 [22] call print_char + //SEG42 [64] phi from main::@6 to print_char [phi:main::@6->print_char] + //SEG43 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@6->print_char#0] -- register_copy + //SEG44 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@6->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG43 main::@7 - //SEG44 [21] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG45 main::@7 + //SEG46 [23] (word) print_word::w#3 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta print_word.w lda dw2+1 sta print_word.w+1 - //SEG45 [22] call print_word - //SEG46 [66] phi from main::@7 to print_word [phi:main::@7->print_word] - //SEG47 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy - //SEG48 [66] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy + //SEG47 [24] call print_word + //SEG48 [68] phi from main::@7 to print_word [phi:main::@7->print_word] + //SEG49 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:main::@7->print_word#0] -- register_copy + //SEG50 [68] phi (word) print_word::w#4 = (word) print_word::w#3 [phi:main::@7->print_word#1] -- register_copy jsr print_word - //SEG49 [23] phi from main::@7 to main::@8 [phi:main::@7->main::@8] - //SEG50 main::@8 - //SEG51 [24] call print_char - //SEG52 [62] phi from main::@8 to print_char [phi:main::@8->print_char] - //SEG53 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy - //SEG54 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 + //SEG51 [25] phi from main::@7 to main::@8 [phi:main::@7->main::@8] + //SEG52 main::@8 + //SEG53 [26] call print_char + //SEG54 [64] phi from main::@8 to print_char [phi:main::@8->print_char] + //SEG55 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@8->print_char#0] -- register_copy + //SEG56 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@8->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG55 main::@9 - //SEG56 [25] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG57 main::@9 + //SEG58 [27] (word~) main::$15 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _15 lda dw2+3 sta _15+1 - //SEG57 [26] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 + //SEG59 [28] (byte) print_byte::b#2 ← > (word~) main::$15 -- vbuxx=_hi_vwuz1 tax - //SEG58 [27] call print_byte - //SEG59 [54] phi from main::@9 to print_byte [phi:main::@9->print_byte] - //SEG60 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy - //SEG61 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy + //SEG60 [29] call print_byte + //SEG61 [56] phi from main::@9 to print_byte [phi:main::@9->print_byte] + //SEG62 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@9->print_byte#0] -- register_copy + //SEG63 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#2 [phi:main::@9->print_byte#1] -- register_copy jsr print_byte - //SEG62 [28] phi from main::@9 to main::@10 [phi:main::@9->main::@10] - //SEG63 main::@10 - //SEG64 [29] call print_char - //SEG65 [62] phi from main::@10 to print_char [phi:main::@10->print_char] - //SEG66 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy - //SEG67 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 + //SEG64 [30] phi from main::@9 to main::@10 [phi:main::@9->main::@10] + //SEG65 main::@10 + //SEG66 [31] call print_char + //SEG67 [64] phi from main::@10 to print_char [phi:main::@10->print_char] + //SEG68 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@10->print_char#0] -- register_copy + //SEG69 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@10->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG68 main::@11 - //SEG69 [30] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 + //SEG70 main::@11 + //SEG71 [32] (word~) main::$19 ← > (dword) main::dw2#10 -- vwuz1=_hi_vduz2 lda dw2+2 sta _19 lda dw2+3 sta _19+1 - //SEG70 [31] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 + //SEG72 [33] (byte) print_byte::b#3 ← < (word~) main::$19 -- vbuxx=_lo_vwuz1 lda _19 tax - //SEG71 [32] call print_byte - //SEG72 [54] phi from main::@11 to print_byte [phi:main::@11->print_byte] - //SEG73 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy - //SEG74 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy + //SEG73 [34] call print_byte + //SEG74 [56] phi from main::@11 to print_byte [phi:main::@11->print_byte] + //SEG75 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@11->print_byte#0] -- register_copy + //SEG76 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#3 [phi:main::@11->print_byte#1] -- register_copy jsr print_byte - //SEG75 [33] phi from main::@11 to main::@12 [phi:main::@11->main::@12] - //SEG76 main::@12 - //SEG77 [34] call print_char - //SEG78 [62] phi from main::@12 to print_char [phi:main::@12->print_char] - //SEG79 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy - //SEG80 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 + //SEG77 [35] phi from main::@11 to main::@12 [phi:main::@11->main::@12] + //SEG78 main::@12 + //SEG79 [36] call print_char + //SEG80 [64] phi from main::@12 to print_char [phi:main::@12->print_char] + //SEG81 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@12->print_char#0] -- register_copy + //SEG82 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@12->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG81 main::@13 - //SEG82 [35] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG83 main::@13 + //SEG84 [37] (word~) main::$23 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _23 lda dw2+1 sta _23+1 - //SEG83 [36] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 + //SEG85 [38] (byte) print_byte::b#4 ← > (word~) main::$23 -- vbuxx=_hi_vwuz1 tax - //SEG84 [37] call print_byte - //SEG85 [54] phi from main::@13 to print_byte [phi:main::@13->print_byte] - //SEG86 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy - //SEG87 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy + //SEG86 [39] call print_byte + //SEG87 [56] phi from main::@13 to print_byte [phi:main::@13->print_byte] + //SEG88 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@13->print_byte#0] -- register_copy + //SEG89 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#4 [phi:main::@13->print_byte#1] -- register_copy jsr print_byte - //SEG88 [38] phi from main::@13 to main::@14 [phi:main::@13->main::@14] - //SEG89 main::@14 - //SEG90 [39] call print_char - //SEG91 [62] phi from main::@14 to print_char [phi:main::@14->print_char] - //SEG92 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy - //SEG93 [62] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 + //SEG90 [40] phi from main::@13 to main::@14 [phi:main::@13->main::@14] + //SEG91 main::@14 + //SEG92 [41] call print_char + //SEG93 [64] phi from main::@14 to print_char [phi:main::@14->print_char] + //SEG94 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:main::@14->print_char#0] -- register_copy + //SEG95 [64] phi (byte) print_char::ch#8 = (byte) ' ' [phi:main::@14->print_char#1] -- vbuaa=vbuc1 lda #' ' jsr print_char - //SEG94 main::@15 - //SEG95 [40] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 + //SEG96 main::@15 + //SEG97 [42] (word~) main::$27 ← < (dword) main::dw2#10 -- vwuz1=_lo_vduz2 lda dw2 sta _27 lda dw2+1 sta _27+1 - //SEG96 [41] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 + //SEG98 [43] (byte) print_byte::b#5 ← < (word~) main::$27 -- vbuxx=_lo_vwuz1 lda _27 tax - //SEG97 [42] call print_byte - //SEG98 [54] phi from main::@15 to print_byte [phi:main::@15->print_byte] - //SEG99 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy - //SEG100 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy + //SEG99 [44] call print_byte + //SEG100 [56] phi from main::@15 to print_byte [phi:main::@15->print_byte] + //SEG101 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:main::@15->print_byte#0] -- register_copy + //SEG102 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#5 [phi:main::@15->print_byte#1] -- register_copy jsr print_byte - //SEG101 [43] phi from main::@15 to main::@16 [phi:main::@15->main::@16] - //SEG102 main::@16 - //SEG103 [44] call print_ln - //SEG104 [49] phi from main::@16 to print_ln [phi:main::@16->print_ln] + //SEG103 [45] phi from main::@15 to main::@16 [phi:main::@15->main::@16] + //SEG104 main::@16 + //SEG105 [46] call print_ln + //SEG106 [51] phi from main::@16 to print_ln [phi:main::@16->print_ln] jsr print_ln - //SEG105 main::@17 - //SEG106 [45] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 + //SEG107 main::@17 + //SEG108 [47] (dword) main::dw#1 ← ++ (dword) main::dw#10 -- vduz1=_inc_vduz1 inc dw bne !+ inc dw+1 @@ -2713,7 +2773,7 @@ main: { bne !+ inc dw+3 !: - //SEG107 [46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 + //SEG109 [48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18 -- vduz1_neq_vduc1_then_la1 lda dw+3 cmp #>$12345690>>$10 bne b18 @@ -2726,29 +2786,29 @@ main: { lda dw cmp #<$12345690 bne b18 - //SEG108 main::@return - //SEG109 [47] return + //SEG110 main::@return + //SEG111 [49] return rts - //SEG110 main::@18 + //SEG112 main::@18 b18: - //SEG111 [48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG113 [50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG112 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] - //SEG113 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy - //SEG114 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy - //SEG115 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy + //SEG114 [6] phi from main::@18 to main::@1 [phi:main::@18->main::@1] + //SEG115 [6] phi (byte*) print_line_cursor#19 = (byte*) print_line_cursor#1 [phi:main::@18->main::@1#0] -- register_copy + //SEG116 [6] phi (byte*) print_char_cursor#69 = (byte*~) print_char_cursor#72 [phi:main::@18->main::@1#1] -- register_copy + //SEG117 [6] phi (dword) main::dw#10 = (dword) main::dw#1 [phi:main::@18->main::@1#2] -- register_copy jmp b1 } -//SEG116 print_ln +//SEG118 print_ln print_ln: { - //SEG117 [50] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] - //SEG118 [50] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy - //SEG119 print_ln::@1 + //SEG119 [52] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG120 [52] phi (byte*) print_line_cursor#9 = (byte*) print_line_cursor#19 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG121 print_ln::@1 b1: - //SEG120 [51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 + //SEG122 [53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 -- pbuz1=pbuz1_plus_vbuc1 lda print_line_cursor clc adc #$28 @@ -2756,7 +2816,7 @@ print_ln: { bcc !+ inc print_line_cursor+1 !: - //SEG121 [52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 + //SEG123 [54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1 lda print_line_cursor+1 cmp print_char_cursor+1 bcc b1 @@ -2765,139 +2825,139 @@ print_ln: { cmp print_char_cursor bcc b1 !: - //SEG122 print_ln::@return - //SEG123 [53] return + //SEG124 print_ln::@return + //SEG125 [55] return rts } -//SEG124 print_byte +//SEG126 print_byte print_byte: { - //SEG125 [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 + //SEG127 [57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuxx_ror_4 txa lsr lsr lsr lsr - //SEG126 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG128 [58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG127 [57] call print_char - //SEG128 [62] phi from print_byte to print_char [phi:print_byte->print_char] - //SEG129 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy - //SEG130 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy + //SEG129 [59] call print_char + //SEG130 [64] phi from print_byte to print_char [phi:print_byte->print_char] + //SEG131 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#67 [phi:print_byte->print_char#0] -- register_copy + //SEG132 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char - //SEG131 print_byte::@1 - //SEG132 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 + //SEG133 print_byte::@1 + //SEG134 [60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG133 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG135 [61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y - //SEG134 [60] call print_char - //SEG135 [62] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] - //SEG136 [62] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy - //SEG137 [62] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy + //SEG136 [62] call print_char + //SEG137 [64] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char] + //SEG138 [64] phi (byte*) print_char_cursor#44 = (byte*) print_char_cursor#12 [phi:print_byte::@1->print_char#0] -- register_copy + //SEG139 [64] phi (byte) print_char::ch#8 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy jsr print_char - //SEG138 print_byte::@return - //SEG139 [61] return + //SEG140 print_byte::@return + //SEG141 [63] return rts } -//SEG140 print_char +//SEG142 print_char print_char: { - //SEG141 [63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa + //SEG143 [65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8 -- _deref_pbuz1=vbuaa ldy #0 sta (print_char_cursor),y - //SEG142 [64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 + //SEG144 [66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44 -- pbuz1=_inc_pbuz1 inc print_char_cursor bne !+ inc print_char_cursor+1 !: - //SEG143 print_char::@return - //SEG144 [65] return + //SEG145 print_char::@return + //SEG146 [67] return rts } -//SEG145 print_word +//SEG147 print_word print_word: { .label w = $a - //SEG146 [67] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 + //SEG148 [69] (byte) print_byte::b#0 ← > (word) print_word::w#4 -- vbuxx=_hi_vwuz1 lda w+1 tax - //SEG147 [68] call print_byte - //SEG148 [54] phi from print_word to print_byte [phi:print_word->print_byte] - //SEG149 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy - //SEG150 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy + //SEG149 [70] call print_byte + //SEG150 [56] phi from print_word to print_byte [phi:print_word->print_byte] + //SEG151 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#65 [phi:print_word->print_byte#0] -- register_copy + //SEG152 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy jsr print_byte - //SEG151 print_word::@1 - //SEG152 [69] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 + //SEG153 print_word::@1 + //SEG154 [71] (byte) print_byte::b#1 ← < (word) print_word::w#4 -- vbuxx=_lo_vwuz1 lda w tax - //SEG153 [70] call print_byte - //SEG154 [54] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] - //SEG155 [54] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy - //SEG156 [54] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy + //SEG155 [72] call print_byte + //SEG156 [56] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte] + //SEG157 [56] phi (byte*) print_char_cursor#67 = (byte*) print_char_cursor#12 [phi:print_word::@1->print_byte#0] -- register_copy + //SEG158 [56] phi (byte) print_byte::b#6 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy jsr print_byte - //SEG157 print_word::@return - //SEG158 [71] return + //SEG159 print_word::@return + //SEG160 [73] return rts } -//SEG159 print_dword +//SEG161 print_dword print_dword: { .label dw = $c - //SEG160 [72] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 + //SEG162 [74] (word) print_word::w#0 ← > (dword) print_dword::dw#0 -- vwuz1=_hi_vduz2 lda dw+2 sta print_word.w lda dw+3 sta print_word.w+1 - //SEG161 [73] call print_word - //SEG162 [66] phi from print_dword to print_word [phi:print_dword->print_word] - //SEG163 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy - //SEG164 [66] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy + //SEG163 [75] call print_word + //SEG164 [68] phi from print_dword to print_word [phi:print_dword->print_word] + //SEG165 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#69 [phi:print_dword->print_word#0] -- register_copy + //SEG166 [68] phi (word) print_word::w#4 = (word) print_word::w#0 [phi:print_dword->print_word#1] -- register_copy jsr print_word - //SEG165 print_dword::@1 - //SEG166 [74] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 + //SEG167 print_dword::@1 + //SEG168 [76] (word) print_word::w#1 ← < (dword) print_dword::dw#0 -- vwuz1=_lo_vduz2 lda dw sta print_word.w lda dw+1 sta print_word.w+1 - //SEG167 [75] call print_word - //SEG168 [66] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] - //SEG169 [66] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy - //SEG170 [66] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy + //SEG169 [77] call print_word + //SEG170 [68] phi from print_dword::@1 to print_word [phi:print_dword::@1->print_word] + //SEG171 [68] phi (byte*) print_char_cursor#65 = (byte*) print_char_cursor#12 [phi:print_dword::@1->print_word#0] -- register_copy + //SEG172 [68] phi (word) print_word::w#4 = (word) print_word::w#1 [phi:print_dword::@1->print_word#1] -- register_copy jsr print_word - //SEG171 print_dword::@return - //SEG172 [76] return + //SEG173 print_dword::@return + //SEG174 [78] return rts } -//SEG173 print_cls +//SEG175 print_cls print_cls: { .label sc = 6 - //SEG174 [78] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG175 [78] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG176 [80] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG177 [80] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG176 [78] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG177 [78] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG178 print_cls::@1 + //SEG178 [80] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG179 [80] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG180 print_cls::@1 b1: - //SEG179 [79] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG181 [81] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG180 [80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG182 [82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG181 [81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG183 [83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG182 print_cls::@return - //SEG183 [82] return + //SEG184 print_cls::@return + //SEG185 [84] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-lowhigh.sym b/src/test/ref/test-lowhigh.sym index 3723e15dd..6a5a3c38d 100644 --- a/src/test/ref/test-lowhigh.sym +++ b/src/test/ref/test-lowhigh.sym @@ -2,6 +2,7 @@ (label) @begin (label) @end (void()) main() +(word~) main::$1 $1 zp ZP_WORD:6 110.0 (word~) main::$15 $15 zp ZP_WORD:10 22.0 (word~) main::$19 $19 zp ZP_WORD:10 22.0 (word~) main::$2 $2 zp ZP_WORD:10 22.0 @@ -9,6 +10,7 @@ (word~) main::$27 $27 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$32 $32 zp ZP_WORD:10 22.0 (word/signed dword/dword~) main::$33 $33 zp ZP_WORD:10 22.0 +(word~) main::$4 $4 zp ZP_WORD:6 110.0 (word~) main::$5 $5 zp ZP_WORD:10 22.0 (label) main::@1 (label) main::@10 @@ -29,9 +31,9 @@ (label) main::@return (dword) main::dw (dword) main::dw#1 dw zp ZP_DWORD:2 11.0 -(dword) main::dw#10 dw zp ZP_DWORD:2 1.4102564102564101 +(dword) main::dw#10 dw zp ZP_DWORD:2 1.6097560975609757 (dword) main::dw2 -(dword) main::dw2#1 dw2 zp ZP_DWORD:12 7.333333333333333 +(dword) main::dw2#1 dw2 zp ZP_DWORD:12 8.25 (dword) main::dw2#10 dw2 zp ZP_DWORD:12 3.142857142857143 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte a 4.0 @@ -57,7 +59,7 @@ (byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:8 37.0 (byte*) print_char_cursor#65 print_char_cursor zp ZP_WORD:8 14.0 (byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:8 16.666666666666664 -(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.4444444444444446 +(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.1818181818181819 (byte*~) print_char_cursor#72 print_char_cursor zp ZP_WORD:8 22.0 (void()) print_cls() (label) print_cls::@1 @@ -74,7 +76,7 @@ (const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 46.42857142857143 -(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3333333333333333 +(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3170731707317073 (byte*) print_line_cursor#9 print_line_cursor zp ZP_WORD:6 204.0 (void()) print_ln() (label) print_ln::@1 @@ -91,7 +93,7 @@ (word) print_word::w#4 w zp ZP_WORD:10 9.999999999999998 zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ] -zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 main::$1 main::$4 ] reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ] diff --git a/src/test/ref/test-multiply-16bit.asm b/src/test/ref/test-multiply-16bit.asm index 177b89518..b88970a05 100644 --- a/src/test/ref/test-multiply-16bit.asm +++ b/src/test/ref/test-multiply-16bit.asm @@ -326,7 +326,9 @@ print_sword: { rts } mulf16s: { + .label _5 = 3 .label _6 = 9 + .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -346,6 +348,10 @@ mulf16s: { lda a+1 bpl b1 lda m+2 + sta _5 + lda m+3 + sta _5+1 + lda m+2 sta _6 lda m+3 sta _6+1 @@ -364,6 +370,10 @@ mulf16s: { lda b+1 bpl b2 lda m+2 + sta _11 + lda m+3 + sta _11+1 + lda m+2 sta _12 lda m+3 sta _12+1 @@ -499,7 +509,9 @@ mulf16u: { rts } mul16s: { + .label _5 = 3 .label _6 = 9 + .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -519,6 +531,10 @@ mul16s: { lda a+1 bpl b1 lda m+2 + sta _5 + lda m+3 + sta _5+1 + lda m+2 sta _6 lda m+3 sta _6+1 @@ -537,6 +553,10 @@ mul16s: { lda b+1 bpl b2 lda m+2 + sta _11 + lda m+3 + sta _11+1 + lda m+2 sta _12 lda m+3 sta _12+1 diff --git a/src/test/ref/test-multiply-16bit.cfg b/src/test/ref/test-multiply-16bit.cfg index 0adebee3d..9407ca9b1 100644 --- a/src/test/ref/test-multiply-16bit.cfg +++ b/src/test/ref/test-multiply-16bit.cfg @@ -288,332 +288,336 @@ mulf16s::@6: scope:[mulf16s] from mulf16s [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@6 - [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 - [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 - [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 + [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 + [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 + [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@6 - [145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) - [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 + [146] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) + [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 - [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 - [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 + [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 + [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 + [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 + [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [152] return + [154] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@14 mulf16s - [153] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) - [153] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) - [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) + [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) + [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [158] return + [160] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@13 - [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 - [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 - [161] call mul16u - [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 + [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 + [163] call mul16u + [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@6 mul16s::@6: scope:[mul16s] from mul16s - [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 + [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@6 - [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 - [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 + [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 + [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) - [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 + [171] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 - [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 - [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 + [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 + [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 + [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [175] return + [179] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@13 - [176] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) - [176] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) - [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [180] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) + [180] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) + [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [178] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [178] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [178] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [182] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [182] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [182] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [180] return + [184] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [184] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [188] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 + [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 to:muls16s::@6 muls16s::@6: scope:[muls16s] from muls16s - [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 + [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@3 muls16s::@6 - [189] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [189] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [193] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [193] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@4 muls16s::@4: scope:[muls16s] from muls16s::@3 muls16s::@5 muls16s::@6 - [193] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) + [197] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@4 - [194] return + [198] return to:@return muls16s::@5: scope:[muls16s] from muls16s muls16s::@5 - [195] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) - [195] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) - [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 + [199] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) + [199] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) + [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 to:muls16s::@4 mul16u_compare: scope:[mul16u_compare] from main::@2 - [199] phi() + [203] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@10 - [200] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) - [200] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) - [200] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) - [200] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) - [201] call print_str + [204] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) + [204] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) + [204] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) + [204] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) + [205] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [202] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [202] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [202] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 - [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 - [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [207] call muls16u - [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [206] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [206] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [206] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 + [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 + [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [211] call muls16u + [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 - [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [212] call mul16u - [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [216] call mul16u + [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [217] call mulf16u - [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [221] call mulf16u + [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@15 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 - [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 - [221] phi() + [225] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@6 - [222] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 + [226] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@22 mul16u_compare::@3 - [224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 + [228] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 - [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [232] call mul16u_error + [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [236] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@18 mul16u_compare::@8 - [233] return + [237] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 + [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@5 - [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 + [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [238] phi() - [239] call print_ln - to:mul16u_compare::@17 -mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 - [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 - [241] call print_str - to:mul16u_compare::@18 -mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 [242] phi() [243] call print_ln + to:mul16u_compare::@17 +mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 + [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 + [245] call print_str + to:mul16u_compare::@18 +mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 + [246] phi() + [247] call print_ln to:mul16u_compare::@return mul16u_compare::@22: scope:[mul16u_compare] from mul16u_compare::@3 - [244] phi() + [248] phi() to:mul16u_compare::@4 mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 - [245] phi() - [246] call print_str - to:mul16u_error::@1 -mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [248] call print_word - to:mul16u_error::@2 -mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 [249] phi() [250] call print_str - to:mul16u_error::@3 -mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 + to:mul16u_error::@1 +mul16u_error::@1: scope:[mul16u_error] from mul16u_error + [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [252] call print_word - to:mul16u_error::@4 -mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 + to:mul16u_error::@2 +mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 [253] phi() [254] call print_str - to:mul16u_error::@5 -mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [256] call print_dword - to:mul16u_error::@6 -mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 + to:mul16u_error::@3 +mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 + [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [256] call print_word + to:mul16u_error::@4 +mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 [257] phi() [258] call print_str - to:mul16u_error::@7 -mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + to:mul16u_error::@5 +mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 + [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [260] call print_dword - to:mul16u_error::@8 -mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 + to:mul16u_error::@6 +mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 [261] phi() [262] call print_str + to:mul16u_error::@7 +mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 + [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [264] call print_dword + to:mul16u_error::@8 +mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 + [265] phi() + [266] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [264] call print_dword + [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [268] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [265] phi() - [266] call print_ln + [269] phi() + [270] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [267] return + [271] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 + [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [269] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [269] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [273] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [273] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [273] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) + [277] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [274] return + [278] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [275] phi() + [279] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [276] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [276] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [276] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [276] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [276] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [280] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [280] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [280] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [280] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [280] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [282] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [282] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [286] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [286] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [291] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [291] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [291] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [291] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [295] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [295] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [295] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [295] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [297] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [301] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [302] return + [306] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [303] phi() + [307] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [304] phi() + [308] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [305] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [306] *((byte*) print_cls::sc#2) ← (byte) ' ' - [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [309] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [310] *((byte*) print_cls::sc#2) ← (byte) ' ' + [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [309] return + [313] return to:@return diff --git a/src/test/ref/test-multiply-16bit.log b/src/test/ref/test-multiply-16bit.log index 50fbf8282..14112b5dc 100644 --- a/src/test/ref/test-multiply-16bit.log +++ b/src/test/ref/test-multiply-16bit.log @@ -316,6 +316,7 @@ mul16s::@3: scope:[mul16s] from mul16s::@6 (signed word) mul16s::a#5 ← phi( mul16s::@6/(signed word) mul16s::a#2 ) (signed word) mul16s::b#3 ← phi( mul16s::@6/(signed word) mul16s::b#4 ) (dword) mul16s::m#3 ← phi( mul16s::@6/(dword) mul16s::m#0 ) + (word~) mul16s::$5 ← > (dword) mul16s::m#3 (word~) mul16s::$6 ← > (dword) mul16s::m#3 (word~) mul16s::$7 ← ((word)) (signed word) mul16s::b#3 (word~) mul16s::$8 ← (word~) mul16s::$6 - (word~) mul16s::$7 @@ -330,6 +331,7 @@ mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 (signed word) mul16s::a#3 ← phi( mul16s::@1/(signed word) mul16s::a#4 ) (dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 ) + (word~) mul16s::$11 ← > (dword) mul16s::m#5 (word~) mul16s::$12 ← > (dword) mul16s::m#5 (word~) mul16s::$13 ← ((word)) (signed word) mul16s::a#3 (word~) mul16s::$14 ← (word~) mul16s::$12 - (word~) mul16s::$13 @@ -495,6 +497,7 @@ mulf16s::@3: scope:[mulf16s] from mulf16s::@6 (signed word) mulf16s::a#5 ← phi( mulf16s::@6/(signed word) mulf16s::a#2 ) (signed word) mulf16s::b#3 ← phi( mulf16s::@6/(signed word) mulf16s::b#4 ) (dword) mulf16s::m#3 ← phi( mulf16s::@6/(dword) mulf16s::m#0 ) + (word~) mulf16s::$5 ← > (dword) mulf16s::m#3 (word~) mulf16s::$6 ← > (dword) mulf16s::m#3 (word~) mulf16s::$7 ← ((word)) (signed word) mulf16s::b#3 (word~) mulf16s::$8 ← (word~) mulf16s::$6 - (word~) mulf16s::$7 @@ -509,6 +512,7 @@ mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 (signed word) mulf16s::a#3 ← phi( mulf16s::@1/(signed word) mulf16s::a#4 ) (dword) mulf16s::m#5 ← phi( mulf16s::@1/(dword) mulf16s::m#6 ) + (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 (word~) mulf16s::$13 ← ((word)) (signed word) mulf16s::a#3 (word~) mulf16s::$14 ← (word~) mulf16s::$12 - (word~) mulf16s::$13 @@ -1435,6 +1439,7 @@ SYMBOL TABLE SSA (word~) mul16s::$0 (word~) mul16s::$1 (bool~) mul16s::$10 +(word~) mul16s::$11 (word~) mul16s::$12 (word~) mul16s::$13 (word~) mul16s::$14 @@ -1444,6 +1449,7 @@ SYMBOL TABLE SSA (dword~) mul16s::$2 (bool~) mul16s::$3 (bool~) mul16s::$4 +(word~) mul16s::$5 (word~) mul16s::$6 (word~) mul16s::$7 (word~) mul16s::$8 @@ -1901,6 +1907,7 @@ SYMBOL TABLE SSA (word~) mulf16s::$0 (word~) mulf16s::$1 (bool~) mulf16s::$10 +(word~) mulf16s::$11 (word~) mulf16s::$12 (word~) mulf16s::$13 (word~) mulf16s::$14 @@ -1910,6 +1917,7 @@ SYMBOL TABLE SSA (dword~) mulf16s::$2 (bool~) mulf16s::$3 (bool~) mulf16s::$4 +(word~) mulf16s::$5 (word~) mulf16s::$6 (word~) mulf16s::$7 (word~) mulf16s::$8 @@ -3295,9 +3303,9 @@ Calls in [print_word] to print_byte:148 print_byte:152 Calls in [print_byte] to print_char:159 print_char:164 Calls in [print_sword] to print_char:173 print_word:180 Calls in [mulf16s] to mulf16u:186 -Calls in [mul16s] to mul16u:213 -Calls in [mul16u_compare] to print_str:271 muls16u:279 mul16u:286 mulf16u:293 mul16u_error:309 print_ln:316 print_str:318 print_ln:321 -Calls in [mul16u_error] to print_str:331 print_word:335 print_str:337 print_word:341 print_str:343 print_dword:347 print_str:349 print_dword:353 print_str:355 print_dword:359 print_ln:361 +Calls in [mul16s] to mul16u:215 +Calls in [mul16u_compare] to print_str:275 muls16u:283 mul16u:290 mulf16u:297 mul16u_error:313 print_ln:320 print_str:322 print_ln:325 +Calls in [mul16u_error] to print_str:335 print_word:339 print_str:341 print_word:345 print_str:347 print_dword:351 print_str:353 print_dword:357 print_str:359 print_dword:363 print_ln:365 Created 72 initial phi equivalence classes Not coalescing [13] print_char_cursor#176 ← print_line_cursor#1 @@ -3360,80 +3368,80 @@ Coalesced [176] print_char_cursor#218 ← print_char_cursor#20 Coalesced (already) [179] print_char_cursor#210 ← print_char_cursor#130 Coalesced [182] print_sword::w#9 ← print_sword::w#3 Coalesced (already) [183] print_char_cursor#217 ← print_char_cursor#128 -Coalesced [193] mulf16s::m#7 ← mulf16s::m#1 -Coalesced [199] mulf16s::m#10 ← mulf16s::m#2 -Coalesced [203] mulf16s::m#9 ← mulf16s::m#5 -Coalesced [204] mulf16s::m#8 ← mulf16s::m#0 -Coalesced [220] mul16s::m#7 ← mul16s::m#1 -Coalesced [226] mul16s::m#10 ← mul16s::m#2 -Coalesced [230] mul16s::m#9 ← mul16s::m#5 -Coalesced [231] mul16s::m#8 ← mul16s::m#0 -Coalesced [234] mul16u::a#10 ← mul16u::a#6 -Coalesced [235] mul16u::mb#6 ← mul16u::mb#0 -Coalesced [242] mul16u::res#9 ← mul16u::res#1 -Coalesced [246] mul16u::a#11 ← mul16u::a#0 -Coalesced [247] mul16u::res#7 ← mul16u::res#6 -Coalesced [248] mul16u::mb#7 ← mul16u::mb#1 -Coalesced (already) [249] mul16u::res#8 ← mul16u::res#2 -Coalesced [256] muls16s::return#5 ← muls16s::m#1 -Coalesced [259] muls16s::m#10 ← muls16s::m#1 -Coalesced [260] muls16s::j#3 ← muls16s::j#1 -Coalesced [265] muls16s::return#6 ← muls16s::m#2 -Coalesced [266] muls16s::m#11 ← muls16s::m#2 -Coalesced [267] muls16s::i#3 ← muls16s::i#1 -Coalesced [270] print_char_cursor#191 ← print_char_cursor#139 -Coalesced [272] mul16u_compare::a#16 ← mul16u_compare::a#6 -Coalesced [273] mul16u_compare::b#16 ← mul16u_compare::b#6 -Coalesced [284] mul16u::b#4 ← mul16u::b#1 -Coalesced [285] mul16u::a#9 ← mul16u::a#2 -Coalesced [291] mulf16u::a#3 ← mulf16u::a#1 -Coalesced [292] mulf16u::b#3 ← mulf16u::b#1 -Coalesced (already) [315] print_char_cursor#181 ← print_char_cursor#128 -Not coalescing [317] print_char_cursor#192 ← print_line_cursor#1 -Coalesced (already) [319] print_line_cursor#107 ← print_line_cursor#1 -Coalesced (already) [320] print_char_cursor#182 ← print_char_cursor#128 -Coalesced (already) [322] print_char_cursor#219 ← print_char_cursor#128 -Coalesced [323] mul16u_compare::a#15 ← mul16u_compare::a#1 -Coalesced [324] mul16u_compare::b#15 ← mul16u_compare::b#1 -Coalesced [325] mul16u_compare::i#14 ← mul16u_compare::i#1 -Coalesced (already) [326] mul16u_compare::a#17 ← mul16u_compare::a#1 -Coalesced (already) [327] mul16u_compare::b#17 ← mul16u_compare::b#1 -Coalesced [328] mul16u_compare::j#11 ← mul16u_compare::j#1 -Coalesced [329] mul16u_compare::ok#5 ← mul16u_compare::ok#4 -Coalesced (already) [330] print_char_cursor#193 ← print_char_cursor#128 -Coalesced [333] print_word::w#7 ← print_word::w#3 -Coalesced (already) [334] print_char_cursor#206 ← print_char_cursor#128 -Coalesced (already) [336] print_char_cursor#194 ← print_char_cursor#20 -Coalesced [339] print_word::w#8 ← print_word::w#4 -Coalesced (already) [340] print_char_cursor#207 ← print_char_cursor#128 -Coalesced (already) [342] print_char_cursor#195 ← print_char_cursor#20 -Coalesced [345] print_dword::dw#6 ← print_dword::dw#1 -Coalesced (already) [346] print_char_cursor#202 ← print_char_cursor#128 -Coalesced (already) [348] print_char_cursor#196 ← print_char_cursor#20 -Coalesced [351] print_dword::dw#7 ← print_dword::dw#2 -Coalesced (already) [352] print_char_cursor#203 ← print_char_cursor#128 -Coalesced (already) [354] print_char_cursor#197 ← print_char_cursor#20 -Coalesced [357] print_dword::dw#8 ← print_dword::dw#3 -Coalesced (already) [358] print_char_cursor#204 ← print_char_cursor#128 -Coalesced (already) [360] print_char_cursor#183 ← print_char_cursor#20 -Coalesced [368] muls16u::return#5 ← muls16u::m#1 -Coalesced [371] muls16u::m#5 ← muls16u::m#1 -Coalesced [372] muls16u::i#3 ← muls16u::i#1 -Coalesced [380] mulf_init::sqr#8 ← mulf_init::sqr#2 -Coalesced [381] mulf_init::x_2#7 ← mulf_init::x_2#1 -Coalesced [404] mulf_init::x_255#5 ← mulf_init::x_255#1 -Coalesced [405] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 -Coalesced [406] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 -Coalesced [407] mulf_init::dir#4 ← mulf_init::dir#3 -Coalesced (already) [408] mulf_init::dir#5 ← mulf_init::dir#2 -Coalesced [409] mulf_init::c#5 ← mulf_init::c#1 -Coalesced [410] mulf_init::sqr#6 ← mulf_init::sqr#1 -Coalesced [411] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 -Coalesced [412] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 -Coalesced [413] mulf_init::x_2#5 ← mulf_init::x_2#2 -Coalesced [414] mulf_init::sqr#7 ← mulf_init::sqr#4 -Coalesced (already) [415] mulf_init::x_2#6 ← mulf_init::x_2#3 -Coalesced [422] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [194] mulf16s::m#7 ← mulf16s::m#1 +Coalesced [201] mulf16s::m#10 ← mulf16s::m#2 +Coalesced [205] mulf16s::m#9 ← mulf16s::m#5 +Coalesced [206] mulf16s::m#8 ← mulf16s::m#0 +Coalesced [223] mul16s::m#7 ← mul16s::m#1 +Coalesced [230] mul16s::m#10 ← mul16s::m#2 +Coalesced [234] mul16s::m#9 ← mul16s::m#5 +Coalesced [235] mul16s::m#8 ← mul16s::m#0 +Coalesced [238] mul16u::a#10 ← mul16u::a#6 +Coalesced [239] mul16u::mb#6 ← mul16u::mb#0 +Coalesced [246] mul16u::res#9 ← mul16u::res#1 +Coalesced [250] mul16u::a#11 ← mul16u::a#0 +Coalesced [251] mul16u::res#7 ← mul16u::res#6 +Coalesced [252] mul16u::mb#7 ← mul16u::mb#1 +Coalesced (already) [253] mul16u::res#8 ← mul16u::res#2 +Coalesced [260] muls16s::return#5 ← muls16s::m#1 +Coalesced [263] muls16s::m#10 ← muls16s::m#1 +Coalesced [264] muls16s::j#3 ← muls16s::j#1 +Coalesced [269] muls16s::return#6 ← muls16s::m#2 +Coalesced [270] muls16s::m#11 ← muls16s::m#2 +Coalesced [271] muls16s::i#3 ← muls16s::i#1 +Coalesced [274] print_char_cursor#191 ← print_char_cursor#139 +Coalesced [276] mul16u_compare::a#16 ← mul16u_compare::a#6 +Coalesced [277] mul16u_compare::b#16 ← mul16u_compare::b#6 +Coalesced [288] mul16u::b#4 ← mul16u::b#1 +Coalesced [289] mul16u::a#9 ← mul16u::a#2 +Coalesced [295] mulf16u::a#3 ← mulf16u::a#1 +Coalesced [296] mulf16u::b#3 ← mulf16u::b#1 +Coalesced (already) [319] print_char_cursor#181 ← print_char_cursor#128 +Not coalescing [321] print_char_cursor#192 ← print_line_cursor#1 +Coalesced (already) [323] print_line_cursor#107 ← print_line_cursor#1 +Coalesced (already) [324] print_char_cursor#182 ← print_char_cursor#128 +Coalesced (already) [326] print_char_cursor#219 ← print_char_cursor#128 +Coalesced [327] mul16u_compare::a#15 ← mul16u_compare::a#1 +Coalesced [328] mul16u_compare::b#15 ← mul16u_compare::b#1 +Coalesced [329] mul16u_compare::i#14 ← mul16u_compare::i#1 +Coalesced (already) [330] mul16u_compare::a#17 ← mul16u_compare::a#1 +Coalesced (already) [331] mul16u_compare::b#17 ← mul16u_compare::b#1 +Coalesced [332] mul16u_compare::j#11 ← mul16u_compare::j#1 +Coalesced [333] mul16u_compare::ok#5 ← mul16u_compare::ok#4 +Coalesced (already) [334] print_char_cursor#193 ← print_char_cursor#128 +Coalesced [337] print_word::w#7 ← print_word::w#3 +Coalesced (already) [338] print_char_cursor#206 ← print_char_cursor#128 +Coalesced (already) [340] print_char_cursor#194 ← print_char_cursor#20 +Coalesced [343] print_word::w#8 ← print_word::w#4 +Coalesced (already) [344] print_char_cursor#207 ← print_char_cursor#128 +Coalesced (already) [346] print_char_cursor#195 ← print_char_cursor#20 +Coalesced [349] print_dword::dw#6 ← print_dword::dw#1 +Coalesced (already) [350] print_char_cursor#202 ← print_char_cursor#128 +Coalesced (already) [352] print_char_cursor#196 ← print_char_cursor#20 +Coalesced [355] print_dword::dw#7 ← print_dword::dw#2 +Coalesced (already) [356] print_char_cursor#203 ← print_char_cursor#128 +Coalesced (already) [358] print_char_cursor#197 ← print_char_cursor#20 +Coalesced [361] print_dword::dw#8 ← print_dword::dw#3 +Coalesced (already) [362] print_char_cursor#204 ← print_char_cursor#128 +Coalesced (already) [364] print_char_cursor#183 ← print_char_cursor#20 +Coalesced [372] muls16u::return#5 ← muls16u::m#1 +Coalesced [375] muls16u::m#5 ← muls16u::m#1 +Coalesced [376] muls16u::i#3 ← muls16u::i#1 +Coalesced [384] mulf_init::sqr#8 ← mulf_init::sqr#2 +Coalesced [385] mulf_init::x_2#7 ← mulf_init::x_2#1 +Coalesced [408] mulf_init::x_255#5 ← mulf_init::x_255#1 +Coalesced [409] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 +Coalesced [410] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 +Coalesced [411] mulf_init::dir#4 ← mulf_init::dir#3 +Coalesced (already) [412] mulf_init::dir#5 ← mulf_init::dir#2 +Coalesced [413] mulf_init::c#5 ← mulf_init::c#1 +Coalesced [414] mulf_init::sqr#6 ← mulf_init::sqr#1 +Coalesced [415] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 +Coalesced [416] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 +Coalesced [417] mulf_init::x_2#5 ← mulf_init::x_2#2 +Coalesced [418] mulf_init::sqr#7 ← mulf_init::sqr#4 +Coalesced (already) [419] mulf_init::x_2#6 ← mulf_init::x_2#3 +Coalesced [426] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 42 phi equivalence classes Culled Empty Block (label) mul16s_compare::@7 Culled Empty Block (label) mul16s_compare::@20 @@ -3784,334 +3792,338 @@ mulf16s::@6: scope:[mulf16s] from mulf16s [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 to:mulf16s::@3 mulf16s::@3: scope:[mulf16s] from mulf16s::@6 - [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 - [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 - [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 + [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 + [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 + [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 + [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 to:mulf16s::@1 mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@6 - [145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) - [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 + [146] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 ) + [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 to:mulf16s::@4 mulf16s::@4: scope:[mulf16s] from mulf16s::@1 - [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 - [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 - [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 + [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 + [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 + [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 + [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 to:mulf16s::@2 mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4 - [150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) - [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 + [152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 ) + [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 to:mulf16s::@return mulf16s::@return: scope:[mulf16s] from mulf16s::@2 - [152] return + [154] return to:@return mulf16u: scope:[mulf16u] from mul16u_compare::@14 mulf16s - [153] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) - [153] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) - [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 - [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 + [155] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 ) + [155] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 ) + [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 + [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } - [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) + [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) to:mulf16u::@return mulf16u::@return: scope:[mulf16u] from mulf16u - [158] return + [160] return to:@return mul16s: scope:[mul16s] from mul16s_compare::@13 - [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 - [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 - [161] call mul16u - [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 + [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 + [163] call mul16u + [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 to:mul16s::@6 mul16s::@6: scope:[mul16s] from mul16s - [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 - [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 + [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 to:mul16s::@3 mul16s::@3: scope:[mul16s] from mul16s::@6 - [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 - [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 - [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 + [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 + [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 + [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 + [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 to:mul16s::@1 mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6 - [168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) - [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 + [171] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) + [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 to:mul16s::@4 mul16s::@4: scope:[mul16s] from mul16s::@1 - [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 - [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 - [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 + [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 + [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 + [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 + [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 to:mul16s::@2 mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4 - [173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) - [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 + [177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 ) + [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 to:mul16s::@return mul16s::@return: scope:[mul16s] from mul16s::@2 - [175] return + [179] return to:@return mul16u: scope:[mul16u] from mul16s mul16u_compare::@13 - [176] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) - [176] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) - [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 + [180] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 ) + [180] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 ) + [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 - [178] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) - [178] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) - [178] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) - [179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 + [182] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) + [182] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) + [182] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) + [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 to:mul16u::@return mul16u::@return: scope:[mul16u] from mul16u::@1 - [180] return + [184] return to:@return mul16u::@2: scope:[mul16u] from mul16u::@1 - [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 + [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 to:mul16u::@7 mul16u::@7: scope:[mul16u] from mul16u::@2 - [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 + [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 to:mul16u::@4 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 - [184] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) - [185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [188] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) + [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul16u::@1 muls16s: scope:[muls16s] from mul16s_compare::@2 - [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 + [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 to:muls16s::@6 muls16s::@6: scope:[muls16s] from muls16s - [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 + [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 to:muls16s::@3 muls16s::@3: scope:[muls16s] from muls16s::@3 muls16s::@6 - [189] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [189] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 - [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 - [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 + [193] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [193] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 + [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 + [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 to:muls16s::@4 muls16s::@4: scope:[muls16s] from muls16s::@3 muls16s::@5 muls16s::@6 - [193] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) + [197] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 ) to:muls16s::@return muls16s::@return: scope:[muls16s] from muls16s::@4 - [194] return + [198] return to:@return muls16s::@5: scope:[muls16s] from muls16s muls16s::@5 - [195] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) - [195] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) - [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 - [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 - [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 + [199] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 ) + [199] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 ) + [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 + [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 + [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 to:muls16s::@4 mul16u_compare: scope:[mul16u_compare] from main::@2 - [199] phi() + [203] phi() to:mul16u_compare::@1 mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@10 - [200] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) - [200] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) - [200] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) - [200] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) - [201] call print_str + [204] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 ) + [204] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 ) + [204] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 ) + [204] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 ) + [205] call print_str to:mul16u_compare::@2 mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5 - [202] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) - [202] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) - [202] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) - [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 - [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 - [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 - [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 - [207] call muls16u - [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + [206] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 ) + [206] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 ) + [206] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 ) + [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 + [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 + [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + [211] call muls16u + [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 to:mul16u_compare::@13 mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2 - [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 - [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 - [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 - [212] call mul16u - [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 + [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + [216] call mul16u + [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 to:mul16u_compare::@14 mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13 - [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 - [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 - [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 - [217] call mulf16u - [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + [221] call mulf16u + [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 to:mul16u_compare::@15 mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14 - [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 - [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 + [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 to:mul16u_compare::@6 mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15 - [221] phi() + [225] phi() to:mul16u_compare::@3 mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@6 - [222] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 + [226] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 to:mul16u_compare::@4 mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@22 mul16u_compare::@3 - [224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 + [228] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 to:mul16u_compare::@8 mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4 - [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 - [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 - [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 - [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 - [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 - [232] call mul16u_error + [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 + [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + [236] call mul16u_error to:mul16u_compare::@return mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@18 mul16u_compare::@8 - [233] return + [237] return to:@return mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4 - [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 - [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 + [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 + [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 to:mul16u_compare::@10 mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@5 - [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 - [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 + [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 + [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 to:mul16u_compare::@11 mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10 - [238] phi() - [239] call print_ln - to:mul16u_compare::@17 -mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 - [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 - [241] call print_str - to:mul16u_compare::@18 -mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 [242] phi() [243] call print_ln + to:mul16u_compare::@17 +mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11 + [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 + [245] call print_str + to:mul16u_compare::@18 +mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17 + [246] phi() + [247] call print_ln to:mul16u_compare::@return mul16u_compare::@22: scope:[mul16u_compare] from mul16u_compare::@3 - [244] phi() + [248] phi() to:mul16u_compare::@4 mul16u_error: scope:[mul16u_error] from mul16u_compare::@8 - [245] phi() - [246] call print_str - to:mul16u_error::@1 -mul16u_error::@1: scope:[mul16u_error] from mul16u_error - [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 - [248] call print_word - to:mul16u_error::@2 -mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 [249] phi() [250] call print_str - to:mul16u_error::@3 -mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 - [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 + to:mul16u_error::@1 +mul16u_error::@1: scope:[mul16u_error] from mul16u_error + [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [252] call print_word - to:mul16u_error::@4 -mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 + to:mul16u_error::@2 +mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1 [253] phi() [254] call print_str - to:mul16u_error::@5 -mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 - [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 - [256] call print_dword - to:mul16u_error::@6 -mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 + to:mul16u_error::@3 +mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2 + [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 + [256] call print_word + to:mul16u_error::@4 +mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3 [257] phi() [258] call print_str - to:mul16u_error::@7 -mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 - [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + to:mul16u_error::@5 +mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4 + [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [260] call print_dword - to:mul16u_error::@8 -mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 + to:mul16u_error::@6 +mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5 [261] phi() [262] call print_str + to:mul16u_error::@7 +mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6 + [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 + [264] call print_dword + to:mul16u_error::@8 +mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7 + [265] phi() + [266] call print_str to:mul16u_error::@9 mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8 - [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 - [264] call print_dword + [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 + [268] call print_dword to:mul16u_error::@10 mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9 - [265] phi() - [266] call print_ln + [269] phi() + [270] call print_ln to:mul16u_error::@return mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10 - [267] return + [271] return to:@return muls16u: scope:[muls16u] from mul16u_compare::@2 - [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 + [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 to:muls16u::@2 muls16u::@2: scope:[muls16u] from muls16u muls16u::@2 - [269] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [269] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 - [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 - [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 + [273] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [273] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 + [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 + [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 to:muls16u::@1 muls16u::@1: scope:[muls16u] from muls16u muls16u::@2 - [273] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) + [277] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 ) to:muls16u::@return muls16u::@return: scope:[muls16u] from muls16u::@1 - [274] return + [278] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [275] phi() + [279] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [276] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [276] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [276] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [276] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [276] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [280] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [280] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [280] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [280] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [280] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [282] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [282] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [286] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [286] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [291] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [291] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [291] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [291] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [295] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [295] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [295] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [295] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [297] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [301] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [302] return + [306] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [303] phi() + [307] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [304] phi() + [308] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [305] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [306] *((byte*) print_cls::sc#2) ← (byte) ' ' - [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [309] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [310] *((byte*) print_cls::sc#2) ← (byte) ' ' + [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [309] return + [313] return to:@return @@ -4119,20 +4131,22 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL (void()) main() (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) +(word~) mul16s::$11 20.0 (word~) mul16s::$12 4.0 (word~) mul16s::$16 4.0 (word~) mul16s::$17 4.0 +(word~) mul16s::$5 20.0 (word~) mul16s::$6 4.0 (signed word) mul16s::a -(signed word) mul16s::a#0 7.357142857142858 +(signed word) mul16s::a#0 6.4375 (signed word) mul16s::b -(signed word) mul16s::b#0 9.363636363636363 +(signed word) mul16s::b#0 8.583333333333332 (dword) mul16s::m (dword) mul16s::m#0 2.0 (dword) mul16s::m#1 4.0 (dword) mul16s::m#2 4.0 (dword) mul16s::m#4 6.0 -(dword) mul16s::m#5 2.5 +(dword) mul16s::m#5 2.4 (signed dword) mul16s::return (signed dword) mul16s::return#0 34.33333333333333 (signed dword) mul16s::return#2 202.0 @@ -4230,20 +4244,22 @@ VARIABLE REGISTER WEIGHTS (dword) mul16u_error::ms (dword) mul16u_error::ms#0 0.3076923076923077 (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) +(word~) mulf16s::$11 20.0 (word~) mulf16s::$12 4.0 (word~) mulf16s::$16 4.0 (word~) mulf16s::$17 4.0 +(word~) mulf16s::$5 20.0 (word~) mulf16s::$6 4.0 (signed word) mulf16s::a -(signed word) mulf16s::a#0 7.357142857142858 +(signed word) mulf16s::a#0 6.4375 (signed word) mulf16s::b -(signed word) mulf16s::b#0 9.363636363636363 +(signed word) mulf16s::b#0 8.583333333333332 (dword) mulf16s::m (dword) mulf16s::m#0 2.0 (dword) mulf16s::m#1 4.0 (dword) mulf16s::m#2 4.0 (dword) mulf16s::m#4 6.0 -(dword) mulf16s::m#5 2.5 +(dword) mulf16s::m#5 2.4 (signed dword) mulf16s::return (signed dword) mulf16s::return#0 34.33333333333333 (signed dword) mulf16s::return#2 202.0 @@ -4473,15 +4489,19 @@ Added variable mul16s_error::mf#0 to zero page equivalence class [ mul16s_error: Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Added variable mulf16u::return#2 to zero page equivalence class [ mulf16u::return#2 ] +Added variable mulf16s::$5 to zero page equivalence class [ mulf16s::$5 ] Added variable mulf16s::$6 to zero page equivalence class [ mulf16s::$6 ] Added variable mulf16s::$16 to zero page equivalence class [ mulf16s::$16 ] +Added variable mulf16s::$11 to zero page equivalence class [ mulf16s::$11 ] Added variable mulf16s::$12 to zero page equivalence class [ mulf16s::$12 ] Added variable mulf16s::$17 to zero page equivalence class [ mulf16s::$17 ] Added variable mulf16s::return#0 to zero page equivalence class [ mulf16s::return#0 ] Added variable mulf16u::return#0 to zero page equivalence class [ mulf16u::return#0 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] +Added variable mul16s::$5 to zero page equivalence class [ mul16s::$5 ] Added variable mul16s::$6 to zero page equivalence class [ mul16s::$6 ] Added variable mul16s::$16 to zero page equivalence class [ mul16s::$16 ] +Added variable mul16s::$11 to zero page equivalence class [ mul16s::$11 ] Added variable mul16s::$12 to zero page equivalence class [ mul16s::$12 ] Added variable mul16s::$17 to zero page equivalence class [ mul16s::$17 ] Added variable mul16s::return#0 to zero page equivalence class [ mul16s::return#0 ] @@ -4565,15 +4585,19 @@ Complete equivalence classes [ print_byte::$0 ] [ print_byte::$2 ] [ mulf16u::return#2 ] +[ mulf16s::$5 ] [ mulf16s::$6 ] [ mulf16s::$16 ] +[ mulf16s::$11 ] [ mulf16s::$12 ] [ mulf16s::$17 ] [ mulf16s::return#0 ] [ mulf16u::return#0 ] [ mul16u::return#2 ] +[ mul16s::$5 ] [ mul16s::$6 ] [ mul16s::$16 ] +[ mul16s::$11 ] [ mul16s::$12 ] [ mul16s::$17 ] [ mul16s::return#0 ] @@ -4656,35 +4680,39 @@ Allocated zp ZP_DWORD:138 [ mul16s_error::mf#0 ] Allocated zp ZP_BYTE:142 [ print_byte::$0 ] Allocated zp ZP_BYTE:143 [ print_byte::$2 ] Allocated zp ZP_DWORD:144 [ mulf16u::return#2 ] -Allocated zp ZP_WORD:148 [ mulf16s::$6 ] -Allocated zp ZP_WORD:150 [ mulf16s::$16 ] -Allocated zp ZP_WORD:152 [ mulf16s::$12 ] -Allocated zp ZP_WORD:154 [ mulf16s::$17 ] -Allocated zp ZP_DWORD:156 [ mulf16s::return#0 ] -Allocated zp ZP_DWORD:160 [ mulf16u::return#0 ] -Allocated zp ZP_DWORD:164 [ mul16u::return#2 ] -Allocated zp ZP_WORD:168 [ mul16s::$6 ] -Allocated zp ZP_WORD:170 [ mul16s::$16 ] -Allocated zp ZP_WORD:172 [ mul16s::$12 ] -Allocated zp ZP_WORD:174 [ mul16s::$17 ] -Allocated zp ZP_DWORD:176 [ mul16s::return#0 ] -Allocated zp ZP_BYTE:180 [ mul16u::$1 ] -Allocated zp ZP_WORD:181 [ muls16u::a#0 ] -Allocated zp ZP_WORD:183 [ muls16u::b#0 ] -Allocated zp ZP_DWORD:185 [ muls16u::return#2 ] -Allocated zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] -Allocated zp ZP_DWORD:193 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] -Allocated zp ZP_DWORD:201 [ mulf16u::return#3 ] -Allocated zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] -Allocated zp ZP_WORD:209 [ mul16u_error::a#0 ] -Allocated zp ZP_WORD:211 [ mul16u_error::b#0 ] -Allocated zp ZP_DWORD:213 [ mul16u_error::ms#0 ] -Allocated zp ZP_DWORD:217 [ mul16u_error::mn#0 ] -Allocated zp ZP_DWORD:221 [ mul16u_error::mf#0 ] -Allocated zp ZP_BYTE:225 [ mulf_init::$2 ] -Allocated zp ZP_BYTE:226 [ mulf_init::$5 ] -Allocated zp ZP_BYTE:227 [ mulf_init::$6 ] +Allocated zp ZP_WORD:148 [ mulf16s::$5 ] +Allocated zp ZP_WORD:150 [ mulf16s::$6 ] +Allocated zp ZP_WORD:152 [ mulf16s::$16 ] +Allocated zp ZP_WORD:154 [ mulf16s::$11 ] +Allocated zp ZP_WORD:156 [ mulf16s::$12 ] +Allocated zp ZP_WORD:158 [ mulf16s::$17 ] +Allocated zp ZP_DWORD:160 [ mulf16s::return#0 ] +Allocated zp ZP_DWORD:164 [ mulf16u::return#0 ] +Allocated zp ZP_DWORD:168 [ mul16u::return#2 ] +Allocated zp ZP_WORD:172 [ mul16s::$5 ] +Allocated zp ZP_WORD:174 [ mul16s::$6 ] +Allocated zp ZP_WORD:176 [ mul16s::$16 ] +Allocated zp ZP_WORD:178 [ mul16s::$11 ] +Allocated zp ZP_WORD:180 [ mul16s::$12 ] +Allocated zp ZP_WORD:182 [ mul16s::$17 ] +Allocated zp ZP_DWORD:184 [ mul16s::return#0 ] +Allocated zp ZP_BYTE:188 [ mul16u::$1 ] +Allocated zp ZP_WORD:189 [ muls16u::a#0 ] +Allocated zp ZP_WORD:191 [ muls16u::b#0 ] +Allocated zp ZP_DWORD:193 [ muls16u::return#2 ] +Allocated zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] +Allocated zp ZP_DWORD:201 [ mul16u::return#3 ] +Allocated zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] +Allocated zp ZP_DWORD:209 [ mulf16u::return#3 ] +Allocated zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] +Allocated zp ZP_WORD:217 [ mul16u_error::a#0 ] +Allocated zp ZP_WORD:219 [ mul16u_error::b#0 ] +Allocated zp ZP_DWORD:221 [ mul16u_error::ms#0 ] +Allocated zp ZP_DWORD:225 [ mul16u_error::mn#0 ] +Allocated zp ZP_DWORD:229 [ mul16u_error::mf#0 ] +Allocated zp ZP_BYTE:233 [ mulf_init::$2 ] +Allocated zp ZP_BYTE:234 [ mulf_init::$5 ] +Allocated zp ZP_BYTE:235 [ mulf_init::$6 ] INITIAL ASM //SEG0 Basic Upstart @@ -4715,7 +4743,7 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls - //SEG11 [304] phi from main to print_cls [phi:main->print_cls] + //SEG11 [308] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -4724,7 +4752,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call mulf_init - //SEG15 [275] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -4733,7 +4761,7 @@ main: { //SEG17 main::@2 b2: //SEG18 [9] call mul16u_compare - //SEG19 [199] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG19 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -5615,12 +5643,14 @@ print_sword: { } //SEG296 mulf16s mulf16s: { - .label _6 = $94 - .label _12 = $98 - .label _16 = $96 - .label _17 = $9a + .label _5 = $94 + .label _6 = $96 + .label _11 = $9a + .label _12 = $9c + .label _16 = $98 + .label _17 = $9e .label m = $1d - .label return = $9c + .label return = $a0 .label a = $72 .label b = $74 .label return_2 = $76 @@ -5635,10 +5665,10 @@ mulf16s: { lda b+1 sta mulf16u.b+1 //SEG299 [138] call mulf16u - //SEG300 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG300 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //SEG301 [153] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG302 [153] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG301 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG302 [155] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u //SEG303 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return @@ -5667,12 +5697,17 @@ mulf16s: { jmp b3 //SEG307 mulf16s::@3 b3: - //SEG308 [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG308 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG309 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG309 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG310 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _6 sec sbc b @@ -5680,30 +5715,35 @@ mulf16s: { lda _6+1 sbc b+1 sta _16+1 - //SEG310 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG311 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG311 [145] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG312 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] b1_from_b3: b1_from_b6: - //SEG312 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG313 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy jmp b1 - //SEG313 mulf16s::@1 + //SEG314 mulf16s::@1 b1: - //SEG314 [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG315 [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG315 mulf16s::@4 + //SEG316 mulf16s::@4 b4: - //SEG316 [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG317 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + lda m+2 + sta _11 + lda m+3 + sta _11+1 + //SEG318 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG317 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG319 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _12 sec sbc a @@ -5711,19 +5751,19 @@ mulf16s: { lda _12+1 sbc a+1 sta _17+1 - //SEG318 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG320 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG319 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG321 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG320 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG322 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG321 mulf16s::@2 + //SEG323 mulf16s::@2 b2: - //SEG322 [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG324 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -5733,32 +5773,32 @@ mulf16s: { lda m+3 sta return+3 jmp breturn - //SEG323 mulf16s::@return + //SEG325 mulf16s::@return breturn: - //SEG324 [152] return + //SEG326 [154] return rts } -//SEG325 mulf16u +//SEG327 mulf16u mulf16u: { .label memA = $f8 .label memB = $fa .label memR = $fc - .label return = $a0 + .label return = $a4 .label return_2 = $90 .label a = $21 .label b = $23 - .label return_3 = $c9 - //SEG326 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + .label return_3 = $d1 + //SEG328 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG327 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG329 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG328 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG330 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -5851,7 +5891,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG329 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG331 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -5861,39 +5901,41 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG330 mulf16u::@return + //SEG332 mulf16u::@return breturn: - //SEG331 [158] return + //SEG333 [160] return rts } -//SEG332 mul16s +//SEG334 mul16s mul16s: { - .label _6 = $a8 - .label _12 = $ac - .label _16 = $aa - .label _17 = $ae + .label _5 = $ac + .label _6 = $ae + .label _11 = $b2 + .label _12 = $b4 + .label _16 = $b0 + .label _17 = $b6 .label m = $25 - .label return = $b0 + .label return = $b8 .label a = $66 .label b = $68 .label return_2 = $6a - //SEG333 [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG335 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG334 [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG336 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG335 [161] call mul16u - //SEG336 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG337 [163] call mul16u + //SEG338 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG337 [176] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG338 [176] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy + //SEG339 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG340 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG339 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG341 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return lda mul16u.res+1 @@ -5903,9 +5945,9 @@ mul16s: { lda mul16u.res+3 sta mul16u.return+3 jmp b6 - //SEG340 mul16s::@6 + //SEG342 mul16s::@6 b6: - //SEG341 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 + //SEG343 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2 lda mul16u.return sta m lda mul16u.return+1 @@ -5914,18 +5956,23 @@ mul16s: { sta m+2 lda mul16u.return+3 sta m+3 - //SEG342 [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG344 [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b6 jmp b3 - //SEG343 mul16s::@3 + //SEG345 mul16s::@3 b3: - //SEG344 [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG346 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG347 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG345 [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG348 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2_minus_vwuz3 lda _6 sec sbc b @@ -5933,30 +5980,35 @@ mul16s: { lda _6+1 sbc b+1 sta _16+1 - //SEG346 [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG349 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG347 [168] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG350 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG348 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG351 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG349 mul16s::@1 + //SEG352 mul16s::@1 b1: - //SEG350 [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG353 [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG351 mul16s::@4 + //SEG354 mul16s::@4 b4: - //SEG352 [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG355 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + lda m+2 + sta _11 + lda m+3 + sta _11+1 + //SEG356 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG353 [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 + //SEG357 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2_minus_vwuz3 lda _12 sec sbc a @@ -5964,19 +6016,19 @@ mul16s: { lda _12+1 sbc a+1 sta _17+1 - //SEG354 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG358 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG355 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG359 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG356 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG360 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG357 mul16s::@2 + //SEG361 mul16s::@2 b2: - //SEG358 [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 + //SEG362 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz2 lda m sta return lda m+1 @@ -5986,21 +6038,21 @@ mul16s: { lda m+3 sta return+3 jmp breturn - //SEG359 mul16s::@return + //SEG363 mul16s::@return breturn: - //SEG360 [175] return + //SEG364 [179] return rts } -//SEG361 mul16u +//SEG365 mul16u mul16u: { - .label _1 = $b4 + .label _1 = $bc .label mb = $31 .label a = $2b .label res = $2d - .label return = $a4 + .label return = $a8 .label b = $29 - .label return_3 = $c1 - //SEG362 [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + .label return_3 = $c9 + //SEG366 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -6008,44 +6060,44 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG363 [178] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG367 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG364 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG365 [178] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG368 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG369 [182] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG366 [178] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG370 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG367 mul16u::@1 + //SEG371 mul16u::@1 b1: - //SEG368 [179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG372 [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG369 mul16u::@return + //SEG373 mul16u::@return breturn: - //SEG370 [180] return + //SEG374 [184] return rts - //SEG371 mul16u::@2 + //SEG375 mul16u::@2 b2: - //SEG372 [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 + //SEG376 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vwuz2_band_vbuc1 lda a and #1 sta _1 - //SEG373 [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 + //SEG377 [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG374 mul16u::@7 + //SEG378 mul16u::@7 b7: - //SEG375 [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG379 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -6059,30 +6111,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG376 [184] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG380 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG377 [184] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG381 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG378 mul16u::@4 + //SEG382 mul16u::@4 b4: - //SEG379 [185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG383 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG380 [186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG384 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG381 [178] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG385 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG382 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG383 [178] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG384 [178] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG386 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG387 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG388 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG385 muls16s +//SEG389 muls16s muls16s: { .label m = $37 .label j = $35 @@ -6091,27 +6143,27 @@ muls16s: { .label a = $5a .label b = $5c .label return_2 = $5e - //SEG386 [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 + //SEG390 [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 lda a+1 bmi b5_from_muls16s jmp b6 - //SEG387 muls16s::@6 + //SEG391 muls16s::@6 b6: - //SEG388 [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 + //SEG392 [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 lda a+1 bmi b4_from_b6 bne !+ lda a beq b4_from_b6 !: - //SEG389 [189] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG393 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] b3_from_b6: - //SEG390 [189] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 + //SEG394 [193] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 lda #<0 sta j lda #>0 sta j+1 - //SEG391 [189] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 + //SEG395 [193] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -6121,14 +6173,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b3 - //SEG392 [189] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG396 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //SEG393 [189] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG394 [189] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG397 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG398 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG395 muls16s::@3 + //SEG399 muls16s::@3 b3: - //SEG396 [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG400 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6148,26 +6200,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG397 [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG401 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG398 [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG402 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - //SEG399 [193] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG403 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] b4_from_b3: b4_from_b5: - //SEG400 [193] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG404 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG401 [193] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG405 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b4_from_b6: - //SEG402 [193] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 + //SEG406 [197] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 lda #<0 sta return lda #>0 @@ -6177,21 +6229,21 @@ muls16s: { lda #>0>>$10 sta return+3 jmp b4 - //SEG403 muls16s::@4 + //SEG407 muls16s::@4 b4: jmp breturn - //SEG404 muls16s::@return + //SEG408 muls16s::@return breturn: - //SEG405 [194] return + //SEG409 [198] return rts - //SEG406 [195] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG410 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b5_from_muls16s: - //SEG407 [195] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 + //SEG411 [199] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG408 [195] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 + //SEG412 [199] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -6201,14 +6253,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b5 - //SEG409 [195] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG413 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] b5_from_b5: - //SEG410 [195] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy - //SEG411 [195] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy + //SEG414 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG415 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy jmp b5 - //SEG412 muls16s::@5 + //SEG416 muls16s::@5 b5: - //SEG413 [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG417 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -6228,13 +6280,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG414 [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG418 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG415 [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG419 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b5_from_b5 @@ -6243,73 +6295,73 @@ muls16s: { bne b5_from_b5 jmp b4_from_b5 } -//SEG416 mul16u_compare +//SEG420 mul16u_compare mul16u_compare: { .label a = $3e .label b = $40 - .label ms = $bd - .label mn = $c5 - .label mf = $cd + .label ms = $c5 + .label mn = $cd + .label mf = $d5 .label j = $42 .label i = $3d .label ok = $43 - //SEG417 [200] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG421 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //SEG418 [200] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG422 [204] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG419 [200] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG423 [204] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 - //SEG420 [200] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG424 [204] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #<0 sta a lda #>0 sta a+1 - //SEG421 [200] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG425 [204] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG422 [200] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG426 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] b1_from_b10: - //SEG423 [200] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy - //SEG424 [200] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy - //SEG425 [200] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy - //SEG426 [200] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy + //SEG427 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG428 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG429 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG430 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG427 mul16u_compare::@1 + //SEG431 mul16u_compare::@1 b1: - //SEG428 [201] call print_str - //SEG429 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG432 [205] call print_str + //SEG433 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //SEG430 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG431 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG434 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG435 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG432 [202] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG436 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //SEG433 [202] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 + //SEG437 [206] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta j - //SEG434 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG435 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG438 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG439 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG436 [202] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG440 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //SEG437 [202] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG438 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG439 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG441 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG442 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG443 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG440 mul16u_compare::@2 + //SEG444 mul16u_compare::@2 b2: - //SEG441 [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG445 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -6317,7 +6369,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG442 [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -6325,19 +6377,19 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG443 [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG447 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta muls16u.a lda a+1 sta muls16u.a+1 - //SEG444 [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG448 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta muls16u.b lda b+1 sta muls16u.b+1 - //SEG445 [207] call muls16u + //SEG449 [211] call muls16u jsr muls16u - //SEG446 [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 + //SEG450 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 -- vduz1=vduz2 lda muls16u.return sta muls16u.return_2 lda muls16u.return+1 @@ -6347,9 +6399,9 @@ mul16u_compare: { lda muls16u.return+3 sta muls16u.return_2+3 jmp b13 - //SEG447 mul16u_compare::@13 + //SEG451 mul16u_compare::@13 b13: - //SEG448 [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 + //SEG452 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 -- vduz1=vduz2 lda muls16u.return_2 sta ms lda muls16u.return_2+1 @@ -6358,23 +6410,23 @@ mul16u_compare: { sta ms+2 lda muls16u.return_2+3 sta ms+3 - //SEG449 [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG453 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG450 [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG454 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG451 [212] call mul16u - //SEG452 [176] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG455 [216] call mul16u + //SEG456 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] mul16u_from_b13: - //SEG453 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy - //SEG454 [176] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy + //SEG457 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG458 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG455 [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 + //SEG459 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2 lda mul16u.res sta mul16u.return_3 lda mul16u.res+1 @@ -6384,9 +6436,9 @@ mul16u_compare: { lda mul16u.res+3 sta mul16u.return_3+3 jmp b14 - //SEG456 mul16u_compare::@14 + //SEG460 mul16u_compare::@14 b14: - //SEG457 [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 + //SEG461 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 -- vduz1=vduz2 lda mul16u.return_3 sta mn lda mul16u.return_3+1 @@ -6395,23 +6447,23 @@ mul16u_compare: { sta mn+2 lda mul16u.return_3+3 sta mn+3 - //SEG458 [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG462 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mulf16u.a lda a+1 sta mulf16u.a+1 - //SEG459 [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG463 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mulf16u.b lda b+1 sta mulf16u.b+1 - //SEG460 [217] call mulf16u - //SEG461 [153] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG464 [221] call mulf16u + //SEG465 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] mulf16u_from_b14: - //SEG462 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy - //SEG463 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy + //SEG466 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG467 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG464 [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 + //SEG468 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 -- vduz1=vduz2 lda mulf16u.return sta mulf16u.return_3 lda mulf16u.return+1 @@ -6421,9 +6473,9 @@ mul16u_compare: { lda mulf16u.return+3 sta mulf16u.return_3+3 jmp b15 - //SEG465 mul16u_compare::@15 + //SEG469 mul16u_compare::@15 b15: - //SEG466 [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 + //SEG470 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 -- vduz1=vduz2 lda mulf16u.return_3 sta mf lda mulf16u.return_3+1 @@ -6432,7 +6484,7 @@ mul16u_compare: { sta mf+2 lda mulf16u.return_3+3 sta mf+3 - //SEG467 [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG471 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -6446,26 +6498,26 @@ mul16u_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG468 [221] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG472 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] b6_from_b15: jmp b6 - //SEG469 mul16u_compare::@6 + //SEG473 mul16u_compare::@6 b6: - //SEG470 [222] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG474 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //SEG471 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 + //SEG475 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG472 [222] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG476 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b3_from_b15: - //SEG473 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuz1=vbuc1 + //SEG477 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG474 mul16u_compare::@3 + //SEG478 mul16u_compare::@3 b3: - //SEG475 [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG479 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -6479,35 +6531,35 @@ mul16u_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG476 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG480 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //SEG477 [224] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 + //SEG481 [228] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG478 mul16u_compare::@4 + //SEG482 mul16u_compare::@4 b4: - //SEG479 [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG483 [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b8 - //SEG480 mul16u_compare::@8 + //SEG484 mul16u_compare::@8 b8: - //SEG481 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG485 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG482 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG486 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG483 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 + //SEG487 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 -- vwuz1=vwuz2 lda b sta mul16u_error.b lda b+1 sta mul16u_error.b+1 - //SEG484 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 + //SEG488 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 -- vduz1=vduz2 lda ms sta mul16u_error.ms lda ms+1 @@ -6516,7 +6568,7 @@ mul16u_compare: { sta mul16u_error.ms+2 lda ms+3 sta mul16u_error.ms+3 - //SEG485 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 + //SEG489 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 -- vduz1=vduz2 lda mn sta mul16u_error.mn lda mn+1 @@ -6525,7 +6577,7 @@ mul16u_compare: { sta mul16u_error.mn+2 lda mn+3 sta mul16u_error.mn+3 - //SEG486 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 + //SEG490 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 -- vduz1=vduz2 lda mf sta mul16u_error.mf lda mf+1 @@ -6534,168 +6586,168 @@ mul16u_compare: { sta mul16u_error.mf+2 lda mf+3 sta mul16u_error.mf+3 - //SEG487 [232] call mul16u_error - //SEG488 [245] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG491 [236] call mul16u_error + //SEG492 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] mul16u_error_from_b8: jsr mul16u_error jmp breturn - //SEG489 mul16u_compare::@return + //SEG493 mul16u_compare::@return breturn: - //SEG490 [233] return + //SEG494 [237] return rts - //SEG491 mul16u_compare::@5 + //SEG495 mul16u_compare::@5 b5: - //SEG492 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 + //SEG496 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuz1=_inc_vbuz1 inc j - //SEG493 [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 + //SEG497 [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuz1_neq_vbuc1_then_la1 lda j cmp #$10 bne b2_from_b5 jmp b10 - //SEG494 mul16u_compare::@10 + //SEG498 mul16u_compare::@10 b10: - //SEG495 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG499 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG496 [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG500 [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b10 - //SEG497 [238] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG501 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] b11_from_b10: jmp b11 - //SEG498 mul16u_compare::@11 + //SEG502 mul16u_compare::@11 b11: - //SEG499 [239] call print_ln - //SEG500 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG503 [243] call print_ln + //SEG504 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] print_ln_from_b11: - //SEG501 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy - //SEG502 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 + //SEG505 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG506 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b17 - //SEG503 mul16u_compare::@17 + //SEG507 mul16u_compare::@17 b17: - //SEG504 [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG508 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG505 [241] call print_str - //SEG506 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG509 [245] call print_str + //SEG510 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] print_str_from_b17: - //SEG507 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy - //SEG508 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG511 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG512 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG509 [242] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG513 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] b18_from_b17: jmp b18 - //SEG510 mul16u_compare::@18 + //SEG514 mul16u_compare::@18 b18: - //SEG511 [243] call print_ln - //SEG512 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG515 [247] call print_ln + //SEG516 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] print_ln_from_b18: - //SEG513 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy - //SEG514 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy + //SEG517 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG518 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG515 [244] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG519 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] b22_from_b3: jmp b22 - //SEG516 mul16u_compare::@22 + //SEG520 mul16u_compare::@22 b22: - //SEG517 [224] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG521 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] b4_from_b22: - //SEG518 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG522 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy jmp b4 str: .text ".@" str1: .text "word multiply results match!@" } -//SEG519 mul16u_error +//SEG523 mul16u_error mul16u_error: { - .label a = $d1 - .label b = $d3 - .label ms = $d5 - .label mn = $d9 - .label mf = $dd - //SEG520 [246] call print_str - //SEG521 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + .label a = $d9 + .label b = $db + .label ms = $dd + .label mn = $e1 + .label mf = $e5 + //SEG524 [250] call print_str + //SEG525 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //SEG522 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG523 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG526 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG527 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG524 mul16u_error::@1 + //SEG528 mul16u_error::@1 b1: - //SEG525 [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 + //SEG529 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 -- vwuz1=vwuz2 lda a sta print_word.w lda a+1 sta print_word.w+1 - //SEG526 [248] call print_word - //SEG527 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG530 [252] call print_word + //SEG531 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //SEG528 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG529 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG532 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG533 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG530 [249] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG534 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG531 mul16u_error::@2 + //SEG535 mul16u_error::@2 b2: - //SEG532 [250] call print_str - //SEG533 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG536 [254] call print_str + //SEG537 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //SEG534 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG535 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG538 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG539 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG536 mul16u_error::@3 + //SEG540 mul16u_error::@3 b3: - //SEG537 [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG541 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG538 [252] call print_word - //SEG539 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG542 [256] call print_word + //SEG543 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //SEG540 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG541 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG544 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG545 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG542 [253] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG546 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG543 mul16u_error::@4 + //SEG547 mul16u_error::@4 b4: - //SEG544 [254] call print_str - //SEG545 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG548 [258] call print_str + //SEG549 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //SEG546 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG547 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG550 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG551 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG548 mul16u_error::@5 + //SEG552 mul16u_error::@5 b5: - //SEG549 [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 + //SEG553 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 -- vduz1=vduz2 lda ms sta print_dword.dw lda ms+1 @@ -6704,31 +6756,31 @@ mul16u_error: { sta print_dword.dw+2 lda ms+3 sta print_dword.dw+3 - //SEG550 [256] call print_dword - //SEG551 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG554 [260] call print_dword + //SEG555 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //SEG552 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG553 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG556 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG557 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG554 [257] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG558 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG555 mul16u_error::@6 + //SEG559 mul16u_error::@6 b6: - //SEG556 [258] call print_str - //SEG557 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG560 [262] call print_str + //SEG561 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //SEG558 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG559 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG562 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG563 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG560 mul16u_error::@7 + //SEG564 mul16u_error::@7 b7: - //SEG561 [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG565 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -6737,31 +6789,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG562 [260] call print_dword - //SEG563 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG566 [264] call print_dword + //SEG567 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //SEG564 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG565 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG568 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG569 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG566 [261] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG570 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG567 mul16u_error::@8 + //SEG571 mul16u_error::@8 b8: - //SEG568 [262] call print_str - //SEG569 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG572 [266] call print_str + //SEG573 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //SEG570 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG571 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG574 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG575 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG572 mul16u_error::@9 + //SEG576 mul16u_error::@9 b9: - //SEG573 [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG577 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -6770,31 +6822,31 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG574 [264] call print_dword - //SEG575 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG578 [268] call print_dword + //SEG579 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //SEG576 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG577 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG580 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG581 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG578 [265] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG582 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG579 mul16u_error::@10 + //SEG583 mul16u_error::@10 b10: - //SEG580 [266] call print_ln - //SEG581 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG584 [270] call print_ln + //SEG585 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //SEG582 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG583 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG586 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG587 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG584 mul16u_error::@return + //SEG588 mul16u_error::@return breturn: - //SEG585 [267] return + //SEG589 [271] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -6802,28 +6854,28 @@ mul16u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG586 muls16u +//SEG590 muls16u muls16u: { .label return = $46 .label m = $46 .label i = $44 - .label a = $b5 - .label b = $b7 - .label return_2 = $b9 - //SEG587 [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + .label a = $bd + .label b = $bf + .label return_2 = $c1 + //SEG591 [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - //SEG588 [269] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG592 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG589 [269] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG593 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG590 [269] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG594 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -6831,14 +6883,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG591 [269] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG595 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //SEG592 [269] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG593 [269] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG596 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG597 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG594 muls16u::@2 + //SEG598 muls16u::@2 b2: - //SEG595 [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG599 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -6852,25 +6904,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG596 [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG600 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG597 [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG601 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - //SEG598 [273] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG602 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG599 [273] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG603 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG600 [273] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG604 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG601 [273] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG605 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -6878,19 +6930,19 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG602 muls16u::@1 + //SEG606 muls16u::@1 b1: jmp breturn - //SEG603 muls16u::@return + //SEG607 muls16u::@return breturn: - //SEG604 [274] return + //SEG608 [278] return rts } -//SEG605 mulf_init +//SEG609 mulf_init mulf_init: { - .label _2 = $e1 - .label _5 = $e2 - .label _6 = $e3 + .label _2 = $e9 + .label _5 = $ea + .label _6 = $eb .label c = $4a .label sqr1_hi = $4d .label sqr = $50 @@ -6900,88 +6952,88 @@ mulf_init: { .label x_255 = $52 .label sqr2_lo = $53 .label dir = $57 - //SEG606 [276] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG610 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG607 [276] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG611 [280] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG608 [276] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG612 [280] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG609 [276] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG613 [280] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG610 [276] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG614 [280] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG611 [276] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG615 [280] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG612 [276] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG616 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG613 [276] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG614 [276] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG615 [276] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG616 [276] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG617 [276] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG617 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG618 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG619 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG620 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG621 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG618 mulf_init::@1 + //SEG622 mulf_init::@1 b1: - //SEG619 [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG623 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG620 [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG624 [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _2 - //SEG621 [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG625 [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _2 cmp #0 bne b2_from_b1 jmp b5 - //SEG622 mulf_init::@5 + //SEG626 mulf_init::@5 b5: - //SEG623 [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG627 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG624 [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG628 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG625 [282] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG629 [286] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG626 [282] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG627 [282] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG630 [286] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG631 [286] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG628 mulf_init::@2 + //SEG632 mulf_init::@2 b2: - //SEG629 [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG633 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG630 [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG634 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG631 [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG635 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG632 [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG636 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG633 [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG637 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG634 [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG638 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -6989,84 +7041,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG635 [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG639 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG636 [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG640 [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG641 [295] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG638 [291] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG642 [295] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG639 [291] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG643 [295] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG640 [291] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG644 [295] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG641 [291] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 + //SEG645 [295] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG642 [291] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG646 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG643 [291] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG644 [291] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG645 [291] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG646 [291] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG647 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG648 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG649 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG650 [295] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG647 mulf_init::@3 + //SEG651 mulf_init::@3 b3: - //SEG648 [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG652 [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG649 [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG653 [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG650 [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG654 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG651 [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG655 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG652 [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 + //SEG656 [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b12_from_b3 - //SEG653 [297] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG657 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG654 [297] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG658 [301] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG655 mulf_init::@4 + //SEG659 mulf_init::@4 b4: - //SEG656 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG660 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG657 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG661 [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -7074,56 +7126,56 @@ mulf_init: { cmp #mulf_init::@12] + //SEG667 [307] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG664 mulf_init::@12 + //SEG668 mulf_init::@12 b12: - //SEG665 [297] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG669 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG666 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG670 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG667 print_cls +//SEG671 print_cls print_cls: { .label sc = $58 - //SEG668 [305] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG672 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG669 [305] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG673 [309] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG670 [305] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG674 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG671 [305] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG675 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG672 print_cls::@1 + //SEG676 print_cls::@1 b1: - //SEG673 [306] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG677 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG674 [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG678 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG675 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG679 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -7131,9 +7183,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG676 print_cls::@return + //SEG680 print_cls::@return breturn: - //SEG677 [309] return + //SEG681 [313] return rts } print_hextab: .text "0123456789abcdef" @@ -7175,13 +7227,13 @@ Statement [43] (signed dword) mul16s_error::ms#0 ← (signed dword) mul16s_compa Statement [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compare::mn#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::mf#0 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 ] ) always clobbers reg byte a Statement [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a Statement [54] (byte*~) print_char_cursor#185 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#185 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#185 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a @@ -7190,14 +7242,14 @@ Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error Statement [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 [ print_char_cursor#128 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#4 ] ) always clobbers reg byte a Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#20 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#20 print_sdword::dw#0 ] ) always clobbers reg byte a Statement [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 [ print_char_cursor#134 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#134 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a +Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a +Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a +Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a +Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] Statement [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#128 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] ) always clobbers reg byte a Statement [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#20 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] ) always clobbers reg byte a @@ -7207,103 +7259,107 @@ Statement [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 [ mulf Statement [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a Statement [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a Statement [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a -Statement [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a -Statement [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a +Statement [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a +Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] -Statement [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a -Statement [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a -Statement [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a -Statement [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a +Statement [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a +Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a +Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] -Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a -Statement [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a +Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] -Statement [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [306] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [310] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [13] (byte*~) print_char_cursor#176 ← (byte*) print_line_cursor#1 [ print_char_cursor#176 print_line_cursor#1 ] ( main:2::mul16s_compare:11 [ print_char_cursor#176 print_line_cursor#1 ] ) always clobbers reg byte a Statement [17] (signed word) mul16s_compare::a#1 ← (signed word) mul16s_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#2 mul16s_compare::j#10 ] ) always clobbers reg byte a @@ -7330,10 +7386,10 @@ Statement [44] (signed dword) mul16s_error::mn#0 ← (signed dword) mul16s_compa Statement [45] (signed dword) mul16s_error::mf#0 ← (signed dword) mul16s_compare::mf#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 ] ) always clobbers reg byte a Statement [51] if((byte) mul16s_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16s_compare::@1 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::i#1 ] ) always clobbers reg byte a Statement [54] (byte*~) print_char_cursor#185 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#185 ] ( main:2::mul16s_compare:11 [ print_line_cursor#1 print_char_cursor#185 ] ) always clobbers reg byte a -Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:239 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:232::print_ln:266 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a -Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y -Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:201 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:241 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:246 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:250 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:254 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:258 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:232::print_str:262 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [61] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#22 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [62] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#129) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#129 ] ( main:2::mul16s_compare:11::print_ln:53 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::print_ln:57 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16s_compare:11::mul16s_error:46::print_ln:92 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:243 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::print_ln:247 [ print_line_cursor#1 print_char_cursor#129 ] main:2::mul16u_compare:9::mul16u_error:236::print_ln:270 [ print_line_cursor#1 print_char_cursor#129 ] ) always clobbers reg byte a +Statement [66] if(*((byte*) print_str::str#15)!=(byte) '@') goto print_str::@2 [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#15) [ print_char_cursor#128 print_str::str#15 ] ( main:2::mul16s_compare:11::print_str:15 [ print_line_cursor#1 mul16s_compare::a#6 mul16s_compare::b#6 mul16s_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::print_str:55 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:72 [ print_line_cursor#1 mul16s_error::a#0 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:76 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:80 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:84 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16s_compare:11::mul16s_error:46::print_str:88 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:205 [ mul16u_compare::a#6 mul16u_compare::b#6 mul16u_compare::i#12 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::print_str:245 [ print_line_cursor#1 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:250 [ mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:254 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:258 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:262 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] main:2::mul16u_compare:9::mul16u_error:236::print_str:266 [ mul16u_error::mf#0 print_char_cursor#128 print_str::str#15 ] ) always clobbers reg byte a reg byte y Statement [73] (signed word) print_sword::w#1 ← (signed word) mul16s_error::a#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#1 ] ) always clobbers reg byte a Statement [77] (signed word) print_sword::w#2 ← (signed word) mul16s_error::b#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#2 ] ) always clobbers reg byte a Statement [81] (signed dword) print_sdword::dw#1 ← (signed dword) mul16s_error::ms#0 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ( main:2::mul16s_compare:11::mul16s_error:46 [ print_line_cursor#1 print_char_cursor#128 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#1 ] ) always clobbers reg byte a @@ -7342,13 +7398,13 @@ Statement [89] (signed dword) print_sdword::dw#3 ← (signed dword) mul16s_error Statement [95] if((signed dword) print_sdword::dw#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sdword::@1 [ print_char_cursor#128 print_sdword::dw#4 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#128 print_sdword::dw#4 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#128 print_sdword::dw#4 ] ) always clobbers reg byte a Statement [98] (signed dword) print_sdword::dw#0 ← - (signed dword) print_sdword::dw#4 [ print_char_cursor#20 print_sdword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_sdword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#20 print_sdword::dw#0 ] ) always clobbers reg byte a Statement [100] (dword) print_dword::dw#0 ← ((dword)) (signed dword) print_sdword::dw#5 [ print_char_cursor#134 print_dword::dw#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#134 print_dword::dw#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90 [ print_line_cursor#1 print_char_cursor#134 print_dword::dw#0 ] ) always clobbers reg byte a -Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a -Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a -Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a -Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a -Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a -Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a -Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:256::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_dword:264::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:248::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:232::print_word:252::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [104] (word) print_word::w#1 ← > (dword) print_dword::dw#4 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_dword::dw#4 print_char_cursor#133 print_word::w#1 ] ) always clobbers reg byte a +Statement [106] (word) print_word::w#2 ← < (dword) print_dword::dw#4 [ print_char_cursor#20 print_word::w#2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101 [ print_line_cursor#1 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264 [ mul16u_error::mf#0 print_char_cursor#20 print_word::w#2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268 [ print_char_cursor#20 print_word::w#2 ] ) always clobbers reg byte a +Statement [110] (byte) print_byte::b#0 ← > (word) print_word::w#5 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#132 print_byte::b#0 ] ) always clobbers reg byte a +Statement [112] (byte) print_byte::b#1 ← < (word) print_word::w#5 [ print_char_cursor#20 print_byte::b#1 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105 [ print_dword::dw#4 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107 [ print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::b#1 ] ) always clobbers reg byte a +Statement [116] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#136 print_byte::$0 ] ) always clobbers reg byte a +Statement [119] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111 [ print_dword::dw#4 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113 [ print_dword::dw#4 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113 [ mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#20 print_byte::$2 ] ) always clobbers reg byte a +Statement [124] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#4 [ print_char_cursor#84 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_char:97 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_char:97 [ print_line_cursor#1 mul16s_error::mf#0 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_char:97 [ print_line_cursor#1 print_sdword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:118 [ print_dword::dw#4 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:118 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:118 [ mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:118 [ print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:118 [ print_line_cursor#1 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:118 [ print_dword::dw#4 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:118 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:118 [ mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:118 [ print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:118 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:118 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:118 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_byte::b#2 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:111::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:111::print_char:121 [ print_dword::dw#4 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:111::print_char:121 [ print_line_cursor#1 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:111::print_char:121 [ mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:111::print_char:121 [ print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:111::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:111::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:111::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_word::w#5 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:105::print_byte:113::print_char:121 [ print_line_cursor#1 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:105::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_dword::dw#4 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:105::print_byte:113::print_char:121 [ print_dword::dw#4 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:82::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:86::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sdword:90::print_dword:101::print_word:107::print_byte:113::print_char:121 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:260::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:264::print_word:107::print_byte:113::print_char:121 [ mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_dword:268::print_word:107::print_byte:113::print_char:121 [ print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_word:134::print_byte:113::print_char:121 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:252::print_byte:113::print_char:121 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16u_compare:9::mul16u_error:236::print_word:256::print_byte:113::print_char:121 [ mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:74::print_char:130 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78::print_char:130 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_sword::w#3 print_char_cursor#84 ] ) always clobbers reg byte y Statement [128] if((signed word) print_sword::w#3>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#128 print_sword::w#3 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#128 print_sword::w#3 ] ) always clobbers reg byte a Statement [131] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#3 [ print_char_cursor#20 print_sword::w#0 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_char_cursor#20 print_sword::w#0 ] ) always clobbers reg byte a Statement [133] (word~) print_word::w#11 ← (word)(signed word) print_sword::w#4 [ print_word::w#11 print_char_cursor#130 ] ( main:2::mul16s_compare:11::mul16s_error:46::print_sword:74 [ print_line_cursor#1 mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#11 print_char_cursor#130 ] main:2::mul16s_compare:11::mul16s_error:46::print_sword:78 [ print_line_cursor#1 mul16s_error::ms#0 mul16s_error::mn#0 mul16s_error::mf#0 print_word::w#11 print_char_cursor#130 ] ) always clobbers reg byte a @@ -7357,89 +7413,93 @@ Statement [137] (word~) mulf16u::b#4 ← (word)(signed word) mulf16s::b#0 [ mulf Statement [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 [ mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#2 ] ) always clobbers reg byte a Statement [140] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a Statement [141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a -Statement [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a -Statement [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a -Statement [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a -Statement [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a -Statement [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a -Statement [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a -Statement [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a -Statement [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a -Statement [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a -Statement [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 ] ) always clobbers reg byte a +Statement [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$6 ] ) always clobbers reg byte a +Statement [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#0 mulf16s::$16 ] ) always clobbers reg byte a +Statement [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 [ mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16s::m#1 ] ) always clobbers reg byte a +Statement [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 ] ) always clobbers reg byte a +Statement [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 [ mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::m#5 mulf16s::$12 ] ) always clobbers reg byte a +Statement [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 [ mulf16s::m#5 mulf16s::$17 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#5 mulf16s::$17 ] ) always clobbers reg byte a +Statement [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 [ mulf16s::m#2 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::m#2 ] ) always clobbers reg byte a +Statement [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 [ mulf16s::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::return#0 ] ) always clobbers reg byte a +Statement [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 [ mulf16u::b#2 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::b#2 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::b#2 ] ) always clobbers reg byte a +Statement [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 [ ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a Statement asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } always clobbers reg byte a reg byte x -Statement [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:217 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a -Statement [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a -Statement [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a -Statement [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a -Statement [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a -Statement [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a -Statement [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a -Statement [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a -Statement [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a -Statement [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a -Statement [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a -Statement [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a -Statement [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a -Statement [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a -Statement [179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a -Statement [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a -Statement [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:161 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:212 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a -Statement [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a -Statement [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a -Statement [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a -Statement [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a -Statement [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a -Statement [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a -Statement [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a -Statement [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a -Statement [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a -Statement [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a -Statement [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a -Statement [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a -Statement [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a -Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a -Statement [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a -Statement [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a -Statement [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a -Statement [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a -Statement [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a -Statement [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a -Statement [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a -Statement [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:232 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a -Statement [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a -Statement [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a -Statement [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:207 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a -Statement [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a -Statement [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [306] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) [ mulf16u::return#0 ] ( main:2::mul16s_compare:11::mulf16s:31::mulf16u:138 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s_compare::mn#0 mulf16s::a#0 mulf16s::b#0 mulf16u::return#0 ] main:2::mul16u_compare:9::mulf16u:221 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#0 ] ) always clobbers reg byte a +Statement [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 ] ) always clobbers reg byte a +Statement [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::b#3 mul16u::a#8 ] ) always clobbers reg byte a +Statement [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::return#2 ] ) always clobbers reg byte a +Statement [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 ] ) always clobbers reg byte a +Statement [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$6 ] ) always clobbers reg byte a +Statement [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 [ mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#0 mul16s::$16 ] ) always clobbers reg byte a +Statement [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16s::m#1 ] ) always clobbers reg byte a +Statement [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 ] ) always clobbers reg byte a +Statement [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 [ mul16s::a#0 mul16s::m#5 mul16s::$12 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::m#5 mul16s::$12 ] ) always clobbers reg byte a +Statement [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 [ mul16s::m#5 mul16s::$17 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#5 mul16s::$17 ] ) always clobbers reg byte a +Statement [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 [ mul16s::m#2 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::m#2 ] ) always clobbers reg byte a +Statement [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::mul16s_compare:11::mul16s:26 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::return#0 ] ) always clobbers reg byte a +Statement [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#6 mul16u::mb#0 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#6 mul16u::mb#0 ] ) always clobbers reg byte a +Statement [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ) always clobbers reg byte a +Statement [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ) always clobbers reg byte a +Statement [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::mul16s_compare:11::mul16s:26::mul16u:163 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 mul16s_compare::ms#0 mul16s::a#0 mul16s::b#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::mul16u_compare:9::mul16u:216 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ) always clobbers reg byte a +Statement [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 [ muls16s::a#0 muls16s::b#0 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 ] ) always clobbers reg byte a +Statement [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::j#2 muls16s::m#1 ] ) always clobbers reg byte a +Statement [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 [ muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#1 muls16s::j#1 ] ) always clobbers reg byte a +Statement [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#2 ] ) always clobbers reg byte a +Statement [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 [ muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ( main:2::mul16s_compare:11::muls16s:21 [ print_line_cursor#1 mul16s_compare::i#12 print_char_cursor#128 mul16s_compare::a#1 mul16s_compare::b#1 mul16s_compare::j#10 muls16s::a#0 muls16s::b#0 muls16s::m#2 muls16s::i#1 ] ) always clobbers reg byte a +Statement [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#2 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 ] ) always clobbers reg byte a +Statement [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 ] ) always clobbers reg byte a +Statement [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::return#2 ] ) always clobbers reg byte a +Statement [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u::b#1 mul16u::a#2 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 ] ) always clobbers reg byte a +Statement [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u::return#3 ] ) always clobbers reg byte a +Statement [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mulf16u::a#1 mulf16u::b#1 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 ] ) always clobbers reg byte a +Statement [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mulf16u::return#3 ] ) always clobbers reg byte a +Statement [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_compare::ok#4 ] ) always clobbers reg byte a +Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 ] ) always clobbers reg byte a +Statement [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::b#1 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 ] ) always clobbers reg byte a +Statement [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::ms#0 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 ] ) always clobbers reg byte a +Statement [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mn#0 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 ] ) always clobbers reg byte a +Statement [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::mf#0 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 ] ) always clobbers reg byte a +Statement [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_error::a#0 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ( main:2::mul16u_compare:9 [ print_char_cursor#128 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::i#1 ] ) always clobbers reg byte a +Statement [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#192 ] ( main:2::mul16u_compare:9 [ print_line_cursor#1 print_char_cursor#192 ] ) always clobbers reg byte a +Statement [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#3 mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_word::w#4 mul16u_error::ms#0 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#1 mul16u_error::mn#0 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#2 mul16u_error::mf#0 ] ) always clobbers reg byte a +Statement [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 [ print_char_cursor#128 print_dword::dw#3 ] ( main:2::mul16u_compare:9::mul16u_error:236 [ print_char_cursor#128 print_dword::dw#3 ] ) always clobbers reg byte a +Statement [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 [ muls16u::a#0 muls16u::b#0 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 ] ) always clobbers reg byte a +Statement [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 [ muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::i#2 muls16u::m#1 ] ) always clobbers reg byte a +Statement [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 [ muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ( main:2::mul16u_compare:9::muls16u:211 [ print_char_cursor#128 mul16u_compare::i#12 mul16u_compare::a#1 mul16u_compare::b#1 mul16u_compare::j#10 muls16u::a#0 muls16u::b#0 muls16u::m#1 muls16u::i#1 ] ) always clobbers reg byte a +Statement [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [310] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] : zp ZP_BYTE:2 , Potential registers zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] : zp ZP_WORD:5 , @@ -7502,48 +7562,52 @@ Potential registers zp ZP_DWORD:138 [ mul16s_error::mf#0 ] : zp ZP_DWORD:138 , Potential registers zp ZP_BYTE:142 [ print_byte::$0 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:143 [ print_byte::$2 ] : zp ZP_BYTE:143 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_DWORD:144 [ mulf16u::return#2 ] : zp ZP_DWORD:144 , -Potential registers zp ZP_WORD:148 [ mulf16s::$6 ] : zp ZP_WORD:148 , -Potential registers zp ZP_WORD:150 [ mulf16s::$16 ] : zp ZP_WORD:150 , -Potential registers zp ZP_WORD:152 [ mulf16s::$12 ] : zp ZP_WORD:152 , -Potential registers zp ZP_WORD:154 [ mulf16s::$17 ] : zp ZP_WORD:154 , -Potential registers zp ZP_DWORD:156 [ mulf16s::return#0 ] : zp ZP_DWORD:156 , -Potential registers zp ZP_DWORD:160 [ mulf16u::return#0 ] : zp ZP_DWORD:160 , -Potential registers zp ZP_DWORD:164 [ mul16u::return#2 ] : zp ZP_DWORD:164 , -Potential registers zp ZP_WORD:168 [ mul16s::$6 ] : zp ZP_WORD:168 , -Potential registers zp ZP_WORD:170 [ mul16s::$16 ] : zp ZP_WORD:170 , -Potential registers zp ZP_WORD:172 [ mul16s::$12 ] : zp ZP_WORD:172 , -Potential registers zp ZP_WORD:174 [ mul16s::$17 ] : zp ZP_WORD:174 , -Potential registers zp ZP_DWORD:176 [ mul16s::return#0 ] : zp ZP_DWORD:176 , -Potential registers zp ZP_BYTE:180 [ mul16u::$1 ] : zp ZP_BYTE:180 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:181 [ muls16u::a#0 ] : zp ZP_WORD:181 , -Potential registers zp ZP_WORD:183 [ muls16u::b#0 ] : zp ZP_WORD:183 , -Potential registers zp ZP_DWORD:185 [ muls16u::return#2 ] : zp ZP_DWORD:185 , -Potential registers zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] : zp ZP_DWORD:189 , -Potential registers zp ZP_DWORD:193 [ mul16u::return#3 ] : zp ZP_DWORD:193 , -Potential registers zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] : zp ZP_DWORD:197 , -Potential registers zp ZP_DWORD:201 [ mulf16u::return#3 ] : zp ZP_DWORD:201 , -Potential registers zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] : zp ZP_DWORD:205 , -Potential registers zp ZP_WORD:209 [ mul16u_error::a#0 ] : zp ZP_WORD:209 , -Potential registers zp ZP_WORD:211 [ mul16u_error::b#0 ] : zp ZP_WORD:211 , -Potential registers zp ZP_DWORD:213 [ mul16u_error::ms#0 ] : zp ZP_DWORD:213 , -Potential registers zp ZP_DWORD:217 [ mul16u_error::mn#0 ] : zp ZP_DWORD:217 , -Potential registers zp ZP_DWORD:221 [ mul16u_error::mf#0 ] : zp ZP_DWORD:221 , -Potential registers zp ZP_BYTE:225 [ mulf_init::$2 ] : zp ZP_BYTE:225 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:226 [ mulf_init::$5 ] : zp ZP_BYTE:226 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:227 [ mulf_init::$6 ] : zp ZP_BYTE:227 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:148 [ mulf16s::$5 ] : zp ZP_WORD:148 , +Potential registers zp ZP_WORD:150 [ mulf16s::$6 ] : zp ZP_WORD:150 , +Potential registers zp ZP_WORD:152 [ mulf16s::$16 ] : zp ZP_WORD:152 , +Potential registers zp ZP_WORD:154 [ mulf16s::$11 ] : zp ZP_WORD:154 , +Potential registers zp ZP_WORD:156 [ mulf16s::$12 ] : zp ZP_WORD:156 , +Potential registers zp ZP_WORD:158 [ mulf16s::$17 ] : zp ZP_WORD:158 , +Potential registers zp ZP_DWORD:160 [ mulf16s::return#0 ] : zp ZP_DWORD:160 , +Potential registers zp ZP_DWORD:164 [ mulf16u::return#0 ] : zp ZP_DWORD:164 , +Potential registers zp ZP_DWORD:168 [ mul16u::return#2 ] : zp ZP_DWORD:168 , +Potential registers zp ZP_WORD:172 [ mul16s::$5 ] : zp ZP_WORD:172 , +Potential registers zp ZP_WORD:174 [ mul16s::$6 ] : zp ZP_WORD:174 , +Potential registers zp ZP_WORD:176 [ mul16s::$16 ] : zp ZP_WORD:176 , +Potential registers zp ZP_WORD:178 [ mul16s::$11 ] : zp ZP_WORD:178 , +Potential registers zp ZP_WORD:180 [ mul16s::$12 ] : zp ZP_WORD:180 , +Potential registers zp ZP_WORD:182 [ mul16s::$17 ] : zp ZP_WORD:182 , +Potential registers zp ZP_DWORD:184 [ mul16s::return#0 ] : zp ZP_DWORD:184 , +Potential registers zp ZP_BYTE:188 [ mul16u::$1 ] : zp ZP_BYTE:188 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:189 [ muls16u::a#0 ] : zp ZP_WORD:189 , +Potential registers zp ZP_WORD:191 [ muls16u::b#0 ] : zp ZP_WORD:191 , +Potential registers zp ZP_DWORD:193 [ muls16u::return#2 ] : zp ZP_DWORD:193 , +Potential registers zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] : zp ZP_DWORD:197 , +Potential registers zp ZP_DWORD:201 [ mul16u::return#3 ] : zp ZP_DWORD:201 , +Potential registers zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] : zp ZP_DWORD:205 , +Potential registers zp ZP_DWORD:209 [ mulf16u::return#3 ] : zp ZP_DWORD:209 , +Potential registers zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] : zp ZP_DWORD:213 , +Potential registers zp ZP_WORD:217 [ mul16u_error::a#0 ] : zp ZP_WORD:217 , +Potential registers zp ZP_WORD:219 [ mul16u_error::b#0 ] : zp ZP_WORD:219 , +Potential registers zp ZP_DWORD:221 [ mul16u_error::ms#0 ] : zp ZP_DWORD:221 , +Potential registers zp ZP_DWORD:225 [ mul16u_error::mn#0 ] : zp ZP_DWORD:225 , +Potential registers zp ZP_DWORD:229 [ mul16u_error::mf#0 ] : zp ZP_DWORD:229 , +Potential registers zp ZP_BYTE:233 [ mulf_init::$2 ] : zp ZP_BYTE:233 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:234 [ mulf_init::$5 ] : zp ZP_BYTE:234 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:235 [ mulf_init::$6 ] : zp ZP_BYTE:235 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [muls16s] 6,707: zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] 2,502.5: zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] 2,502.5: zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] 202: zp ZP_DWORD:94 [ muls16s::return#2 ] 191.18: zp ZP_WORD:92 [ muls16s::b#0 ] 175.58: zp ZP_WORD:90 [ muls16s::a#0 ] -Uplift Scope [mul16u] 3,446.71: zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,435.29: zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 2,002: zp ZP_BYTE:180 [ mul16u::$1 ] 1,826.17: zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 309: zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] 202: zp ZP_DWORD:193 [ mul16u::return#3 ] 4: zp ZP_DWORD:164 [ mul16u::return#2 ] -Uplift Scope [muls16u] 3,370.33: zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] 2,502.5: zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] 202: zp ZP_DWORD:185 [ muls16u::return#2 ] 183.67: zp ZP_WORD:183 [ muls16u::b#0 ] 157.71: zp ZP_WORD:181 [ muls16u::a#0 ] -Uplift Scope [mul16u_compare] 241.86: zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] 235.67: zp ZP_BYTE:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] 159.58: zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] 135.36: zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] 17.26: zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 15.69: zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] 14.52: zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] 12: zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] +Uplift Scope [mul16u] 3,446.71: zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 2,435.29: zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 2,002: zp ZP_BYTE:188 [ mul16u::$1 ] 1,826.17: zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] 309: zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] 202: zp ZP_DWORD:201 [ mul16u::return#3 ] 4: zp ZP_DWORD:168 [ mul16u::return#2 ] +Uplift Scope [muls16u] 3,370.33: zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] 2,502.5: zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] 202: zp ZP_DWORD:193 [ muls16u::return#2 ] 183.67: zp ZP_WORD:191 [ muls16u::b#0 ] 157.71: zp ZP_WORD:189 [ muls16u::a#0 ] +Uplift Scope [mul16u_compare] 241.86: zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] 235.67: zp ZP_BYTE:67 [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] 159.58: zp ZP_BYTE:66 [ mul16u_compare::j#10 mul16u_compare::j#1 ] 135.36: zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] 17.26: zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] 15.69: zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] 14.52: zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] 12: zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] Uplift Scope [mul16s_compare] 241.86: zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] 235.67: zp ZP_BYTE:8 [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] 159.58: zp ZP_BYTE:7 [ mul16s_compare::j#10 mul16s_compare::j#1 ] 135.36: zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] 17.26: zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] 15.69: zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] 14.52: zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] 12: zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] -Uplift Scope [mulf16u] 258.5: zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] 208: zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] 202: zp ZP_DWORD:201 [ mulf16u::return#3 ] 26.25: zp ZP_DWORD:160 [ mulf16u::return#0 ] 4: zp ZP_DWORD:144 [ mulf16u::return#2 ] +Uplift Scope [mulf16u] 258.5: zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] 208: zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] 202: zp ZP_DWORD:209 [ mulf16u::return#3 ] 26.25: zp ZP_DWORD:164 [ mulf16u::return#0 ] 4: zp ZP_DWORD:144 [ mulf16u::return#2 ] +Uplift Scope [mul16s] 202: zp ZP_DWORD:106 [ mul16s::return#2 ] 34.33: zp ZP_DWORD:184 [ mul16s::return#0 ] 20: zp ZP_WORD:172 [ mul16s::$5 ] 20: zp ZP_WORD:178 [ mul16s::$11 ] 18.4: zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 8.58: zp ZP_WORD:104 [ mul16s::b#0 ] 6.44: zp ZP_WORD:102 [ mul16s::a#0 ] 4: zp ZP_WORD:174 [ mul16s::$6 ] 4: zp ZP_WORD:176 [ mul16s::$16 ] 4: zp ZP_WORD:180 [ mul16s::$12 ] 4: zp ZP_WORD:182 [ mul16s::$17 ] +Uplift Scope [mulf16s] 202: zp ZP_DWORD:118 [ mulf16s::return#2 ] 34.33: zp ZP_DWORD:160 [ mulf16s::return#0 ] 20: zp ZP_WORD:148 [ mulf16s::$5 ] 20: zp ZP_WORD:154 [ mulf16s::$11 ] 18.4: zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 8.58: zp ZP_WORD:116 [ mulf16s::b#0 ] 6.44: zp ZP_WORD:114 [ mulf16s::a#0 ] 4: zp ZP_WORD:150 [ mulf16s::$6 ] 4: zp ZP_WORD:152 [ mulf16s::$16 ] 4: zp ZP_WORD:156 [ mulf16s::$12 ] 4: zp ZP_WORD:158 [ mulf16s::$17 ] Uplift Scope [print_str] 305.5: zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplift Scope [mul16s] 202: zp ZP_DWORD:106 [ mul16s::return#2 ] 34.33: zp ZP_DWORD:176 [ mul16s::return#0 ] 18.5: zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 9.36: zp ZP_WORD:104 [ mul16s::b#0 ] 7.36: zp ZP_WORD:102 [ mul16s::a#0 ] 4: zp ZP_WORD:168 [ mul16s::$6 ] 4: zp ZP_WORD:170 [ mul16s::$16 ] 4: zp ZP_WORD:172 [ mul16s::$12 ] 4: zp ZP_WORD:174 [ mul16s::$17 ] -Uplift Scope [mulf16s] 202: zp ZP_DWORD:118 [ mulf16s::return#2 ] 34.33: zp ZP_DWORD:156 [ mulf16s::return#0 ] 18.5: zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] 9.36: zp ZP_WORD:116 [ mulf16s::b#0 ] 7.36: zp ZP_WORD:114 [ mulf16s::a#0 ] 4: zp ZP_WORD:148 [ mulf16s::$6 ] 4: zp ZP_WORD:150 [ mulf16s::$16 ] 4: zp ZP_WORD:152 [ mulf16s::$12 ] 4: zp ZP_WORD:154 [ mulf16s::$17 ] Uplift Scope [] 241.74: zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#176 print_char_cursor#128 print_char_cursor#20 print_char_cursor#185 print_char_cursor#139 print_char_cursor#192 print_char_cursor#1 print_char_cursor#130 ] 34.6: zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplift Scope [mulf_init] 45.1: zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:225 [ mulf_init::$2 ] 22: zp ZP_BYTE:226 [ mulf_init::$5 ] 22: zp ZP_BYTE:227 [ mulf_init::$6 ] 20.62: zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplift Scope [mulf_init] 45.1: zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:74 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:233 [ mulf_init::$2 ] 22: zp ZP_BYTE:234 [ mulf_init::$5 ] 22: zp ZP_BYTE:235 [ mulf_init::$6 ] 20.62: zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [print_cls] 33: zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_sdword] 25: zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] Uplift Scope [print_word] 24.67: zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] @@ -7551,44 +7615,44 @@ Uplift Scope [print_dword] 20: zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::d Uplift Scope [print_sword] 18.5: zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] Uplift Scope [print_byte] 10: zp ZP_BYTE:23 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:142 [ print_byte::$0 ] 4: zp ZP_BYTE:143 [ print_byte::$2 ] Uplift Scope [print_char] 14: zp ZP_BYTE:24 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplift Scope [mul16u_error] 0.57: zp ZP_WORD:209 [ mul16u_error::a#0 ] 0.4: zp ZP_WORD:211 [ mul16u_error::b#0 ] 0.31: zp ZP_DWORD:213 [ mul16u_error::ms#0 ] 0.25: zp ZP_DWORD:217 [ mul16u_error::mn#0 ] 0.21: zp ZP_DWORD:221 [ mul16u_error::mf#0 ] +Uplift Scope [mul16u_error] 0.57: zp ZP_WORD:217 [ mul16u_error::a#0 ] 0.4: zp ZP_WORD:219 [ mul16u_error::b#0 ] 0.31: zp ZP_DWORD:221 [ mul16u_error::ms#0 ] 0.25: zp ZP_DWORD:225 [ mul16u_error::mn#0 ] 0.21: zp ZP_DWORD:229 [ mul16u_error::mf#0 ] Uplift Scope [mul16s_error] 0.57: zp ZP_WORD:126 [ mul16s_error::a#0 ] 0.4: zp ZP_WORD:128 [ mul16s_error::b#0 ] 0.31: zp ZP_DWORD:130 [ mul16s_error::ms#0 ] 0.25: zp ZP_DWORD:134 [ mul16s_error::mn#0 ] 0.21: zp ZP_DWORD:138 [ mul16s_error::mf#0 ] Uplift Scope [print_ln] Uplift Scope [main] -Uplifting [muls16s] best 558895 combination zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:94 [ muls16s::return#2 ] zp ZP_WORD:92 [ muls16s::b#0 ] zp ZP_WORD:90 [ muls16s::a#0 ] -Uplifting [mul16u] best 552895 combination zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] zp ZP_DWORD:193 [ mul16u::return#3 ] zp ZP_DWORD:164 [ mul16u::return#2 ] -Uplifting [muls16u] best 552895 combination zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:185 [ muls16u::return#2 ] zp ZP_WORD:183 [ muls16u::b#0 ] zp ZP_WORD:181 [ muls16u::a#0 ] -Uplifting [mul16u_compare] best 550795 combination zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] -Uplifting [mul16s_compare] best 548695 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] -Uplifting [mulf16u] best 548695 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] zp ZP_DWORD:201 [ mulf16u::return#3 ] zp ZP_DWORD:160 [ mulf16u::return#0 ] zp ZP_DWORD:144 [ mulf16u::return#2 ] -Uplifting [print_str] best 548695 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] -Uplifting [mul16s] best 548695 combination zp ZP_DWORD:106 [ mul16s::return#2 ] zp ZP_DWORD:176 [ mul16s::return#0 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:104 [ mul16s::b#0 ] zp ZP_WORD:102 [ mul16s::a#0 ] zp ZP_WORD:168 [ mul16s::$6 ] zp ZP_WORD:170 [ mul16s::$16 ] zp ZP_WORD:172 [ mul16s::$12 ] zp ZP_WORD:174 [ mul16s::$17 ] -Uplifting [mulf16s] best 548695 combination zp ZP_DWORD:118 [ mulf16s::return#2 ] zp ZP_DWORD:156 [ mulf16s::return#0 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:116 [ mulf16s::b#0 ] zp ZP_WORD:114 [ mulf16s::a#0 ] zp ZP_WORD:148 [ mulf16s::$6 ] zp ZP_WORD:150 [ mulf16s::$16 ] zp ZP_WORD:152 [ mulf16s::$12 ] zp ZP_WORD:154 [ mulf16s::$17 ] -Uplifting [] best 548695 combination zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#176 print_char_cursor#128 print_char_cursor#20 print_char_cursor#185 print_char_cursor#139 print_char_cursor#192 print_char_cursor#1 print_char_cursor#130 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] -Uplifting [mulf_init] best 548445 combination zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls16s] best 558943 combination zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] zp ZP_DWORD:94 [ muls16s::return#2 ] zp ZP_WORD:92 [ muls16s::b#0 ] zp ZP_WORD:90 [ muls16s::a#0 ] +Uplifting [mul16u] best 552943 combination zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] zp ZP_DWORD:201 [ mul16u::return#3 ] zp ZP_DWORD:168 [ mul16u::return#2 ] +Uplifting [muls16u] best 552943 combination zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] zp ZP_WORD:68 [ muls16u::i#2 muls16u::i#1 ] zp ZP_DWORD:193 [ muls16u::return#2 ] zp ZP_WORD:191 [ muls16u::b#0 ] zp ZP_WORD:189 [ muls16u::a#0 ] +Uplifting [mul16u_compare] best 550843 combination zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] reg byte x [ mul16u_compare::ok#3 mul16u_compare::ok#4 ] reg byte y [ mul16u_compare::j#10 mul16u_compare::j#1 ] zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] +Uplifting [mul16s_compare] best 548743 combination zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] +Uplifting [mulf16u] best 548743 combination zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] zp ZP_DWORD:209 [ mulf16u::return#3 ] zp ZP_DWORD:164 [ mulf16u::return#0 ] zp ZP_DWORD:144 [ mulf16u::return#2 ] +Uplifting [mul16s] best 548743 combination zp ZP_DWORD:106 [ mul16s::return#2 ] zp ZP_DWORD:184 [ mul16s::return#0 ] zp ZP_WORD:172 [ mul16s::$5 ] zp ZP_WORD:178 [ mul16s::$11 ] zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp ZP_WORD:104 [ mul16s::b#0 ] zp ZP_WORD:102 [ mul16s::a#0 ] zp ZP_WORD:174 [ mul16s::$6 ] zp ZP_WORD:176 [ mul16s::$16 ] zp ZP_WORD:180 [ mul16s::$12 ] zp ZP_WORD:182 [ mul16s::$17 ] +Uplifting [mulf16s] best 548743 combination zp ZP_DWORD:118 [ mulf16s::return#2 ] zp ZP_DWORD:160 [ mulf16s::return#0 ] zp ZP_WORD:148 [ mulf16s::$5 ] zp ZP_WORD:154 [ mulf16s::$11 ] zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] zp ZP_WORD:116 [ mulf16s::b#0 ] zp ZP_WORD:114 [ mulf16s::a#0 ] zp ZP_WORD:150 [ mulf16s::$6 ] zp ZP_WORD:152 [ mulf16s::$16 ] zp ZP_WORD:156 [ mulf16s::$12 ] zp ZP_WORD:158 [ mulf16s::$17 ] +Uplifting [print_str] best 548743 combination zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] +Uplifting [] best 548743 combination zp ZP_WORD:25 [ print_char_cursor#84 print_char_cursor#136 print_char_cursor#132 print_char_cursor#133 print_char_cursor#134 print_char_cursor#148 print_char_cursor#129 print_char_cursor#143 print_char_cursor#176 print_char_cursor#128 print_char_cursor#20 print_char_cursor#185 print_char_cursor#139 print_char_cursor#192 print_char_cursor#1 print_char_cursor#130 ] zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] +Uplifting [mulf_init] best 548493 combination zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [print_cls] best 548445 combination zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_sdword] best 548445 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] -Uplifting [print_word] best 548445 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] -Uplifting [print_dword] best 548445 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] -Uplifting [print_sword] best 548445 combination zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] -Uplifting [print_byte] best 548433 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_char] best 548418 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] -Uplifting [mul16u_error] best 548418 combination zp ZP_WORD:209 [ mul16u_error::a#0 ] zp ZP_WORD:211 [ mul16u_error::b#0 ] zp ZP_DWORD:213 [ mul16u_error::ms#0 ] zp ZP_DWORD:217 [ mul16u_error::mn#0 ] zp ZP_DWORD:221 [ mul16u_error::mf#0 ] -Uplifting [mul16s_error] best 548418 combination zp ZP_WORD:126 [ mul16s_error::a#0 ] zp ZP_WORD:128 [ mul16s_error::b#0 ] zp ZP_DWORD:130 [ mul16s_error::ms#0 ] zp ZP_DWORD:134 [ mul16s_error::mn#0 ] zp ZP_DWORD:138 [ mul16s_error::mf#0 ] -Uplifting [print_ln] best 548418 combination -Uplifting [main] best 548418 combination +Uplifting [print_cls] best 548493 combination zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_sdword] best 548493 combination zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] +Uplifting [print_word] best 548493 combination zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] +Uplifting [print_dword] best 548493 combination zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] +Uplifting [print_sword] best 548493 combination zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] +Uplifting [print_byte] best 548481 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_char] best 548466 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] +Uplifting [mul16u_error] best 548466 combination zp ZP_WORD:217 [ mul16u_error::a#0 ] zp ZP_WORD:219 [ mul16u_error::b#0 ] zp ZP_DWORD:221 [ mul16u_error::ms#0 ] zp ZP_DWORD:225 [ mul16u_error::mn#0 ] zp ZP_DWORD:229 [ mul16u_error::mf#0 ] +Uplifting [mul16s_error] best 548466 combination zp ZP_WORD:126 [ mul16s_error::a#0 ] zp ZP_WORD:128 [ mul16s_error::b#0 ] zp ZP_DWORD:130 [ mul16s_error::ms#0 ] zp ZP_DWORD:134 [ mul16s_error::mn#0 ] zp ZP_DWORD:138 [ mul16s_error::mf#0 ] +Uplifting [print_ln] best 548466 combination +Uplifting [main] best 548466 combination Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 548418 combination zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 548466 combination zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] -Uplifting [mul16s_compare] best 548418 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] +Uplifting [mul16s_compare] best 548466 combination zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] -Uplifting [mul16u_compare] best 548418 combination zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] +Uplifting [mul16u_compare] best 548466 combination zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:82 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 548278 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 548326 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 548278 combination zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 548326 combination zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 ] ] with [ zp ZP_WORD:90 [ muls16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 ] ] with [ zp ZP_WORD:102 [ mul16s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 ] ] with [ zp ZP_WORD:114 [ mulf16s::a#0 ] ] - score: 1 @@ -7600,43 +7664,43 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ mul16s_com Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 ] ] with [ zp ZP_DWORD:17 [ print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 ] ] with [ zp ZP_DWORD:130 [ mul16s_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] ] with [ zp ZP_WORD:27 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:209 [ mul16u_error::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:217 [ mul16u_error::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 ] ] with [ zp ZP_DWORD:144 [ mulf16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp ZP_DWORD:156 [ mulf16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 ] ] with [ zp ZP_DWORD:160 [ mulf16s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 ] ] with [ zp ZP_WORD:62 [ mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 ] ] with [ zp ZP_WORD:64 [ mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] ] with [ zp ZP_DWORD:164 [ mul16u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 ] ] with [ zp ZP_DWORD:176 [ mul16s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:193 [ mul16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] ] with [ zp ZP_DWORD:168 [ mul16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 ] ] with [ zp ZP_DWORD:184 [ mul16s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp ZP_DWORD:201 [ mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 ] ] with [ zp ZP_DWORD:94 [ muls16s::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] ] with [ zp ZP_DWORD:185 [ muls16u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 ] ] with [ zp ZP_DWORD:193 [ muls16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:106 [ mul16s::return#2 ] ] with [ zp ZP_DWORD:110 [ mul16s_compare::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:118 [ mulf16s::return#2 ] ] with [ zp ZP_DWORD:122 [ mul16s_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:148 [ mulf16s::$6 ] ] with [ zp ZP_WORD:150 [ mulf16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:152 [ mulf16s::$12 ] ] with [ zp ZP_WORD:154 [ mulf16s::$17 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:160 [ mulf16u::return#0 ] ] with [ zp ZP_DWORD:201 [ mulf16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:168 [ mul16s::$6 ] ] with [ zp ZP_WORD:170 [ mul16s::$16 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:172 [ mul16s::$12 ] ] with [ zp ZP_WORD:174 [ mul16s::$17 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:189 [ mul16u_compare::ms#0 ] ] with [ zp ZP_DWORD:213 [ mul16u_error::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:197 [ mul16u_compare::mn#0 ] ] with [ zp ZP_DWORD:217 [ mul16u_error::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:205 [ mul16u_compare::mf#0 ] ] with [ zp ZP_DWORD:221 [ mul16u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:150 [ mulf16s::$6 ] ] with [ zp ZP_WORD:152 [ mulf16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:156 [ mulf16s::$12 ] ] with [ zp ZP_WORD:158 [ mulf16s::$17 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:164 [ mulf16u::return#0 ] ] with [ zp ZP_DWORD:209 [ mulf16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:174 [ mul16s::$6 ] ] with [ zp ZP_WORD:176 [ mul16s::$16 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:180 [ mul16s::$12 ] ] with [ zp ZP_WORD:182 [ mul16s::$17 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:197 [ mul16u_compare::ms#0 ] ] with [ zp ZP_DWORD:221 [ mul16u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:205 [ mul16u_compare::mn#0 ] ] with [ zp ZP_DWORD:225 [ mul16u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:213 [ mul16u_compare::mf#0 ] ] with [ zp ZP_DWORD:229 [ mul16u_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 ] ] with [ zp ZP_WORD:21 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 ] ] with [ zp ZP_DWORD:98 [ mul16s_compare::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp ZP_DWORD:189 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 ] ] with [ zp ZP_DWORD:197 [ mul16u_compare::ms#0 mul16u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 ] ] with [ zp ZP_DWORD:118 [ mulf16s::return#2 mul16s_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 ] ] with [ zp ZP_DWORD:160 [ mulf16u::return#0 mulf16u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] with [ zp ZP_WORD:181 [ muls16u::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 ] ] with [ zp ZP_DWORD:164 [ mulf16u::return#0 mulf16u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:33 [ mulf16u::a#2 mulf16u::a#1 mulf16u::a#4 mul16u_compare::a#2 mul16u_compare::a#6 mul16u_compare::a#1 ] ] with [ zp ZP_WORD:189 [ muls16u::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 ] ] with [ zp ZP_WORD:41 [ mul16u::b#2 mul16u::b#3 mul16u::b#1 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 ] ] with [ zp ZP_WORD:183 [ muls16u::b#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 muls16u::b#0 ] ] with [ zp ZP_WORD:211 [ mul16u_error::b#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 ] ] with [ zp ZP_WORD:191 [ muls16u::b#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:35 [ mulf16u::b#2 mulf16u::b#1 mulf16u::b#4 mul16u_compare::b#2 mul16u_compare::b#6 mul16u_compare::b#1 mul16u::b#2 mul16u::b#3 mul16u::b#1 muls16u::b#0 ] ] with [ zp ZP_WORD:219 [ mul16u_error::b#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 ] ] with [ zp ZP_DWORD:45 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] with [ zp ZP_DWORD:106 [ mul16s::return#2 mul16s_compare::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 ] ] with [ zp ZP_DWORD:55 [ muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:13 [ print_sdword::dw#5 print_sdword::dw#4 print_sdword::dw#1 print_sdword::dw#2 print_sdword::dw#3 print_sdword::dw#0 print_dword::dw#4 print_dword::dw#1 print_dword::dw#2 print_dword::dw#3 print_dword::dw#0 mul16s_error::ms#0 mul16s_compare::ms#0 mul16u_compare::ms#0 mul16u_error::ms#0 muls16s::m#5 muls16s::return#0 muls16s::m#3 muls16s::m#1 muls16s::m#2 muls16s::return#2 ] ] with [ zp ZP_DWORD:70 [ muls16u::return#0 muls16u::m#3 muls16u::m#1 muls16u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 ] ] with [ zp ZP_DWORD:138 [ mul16s_error::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 ] ] with [ zp ZP_DWORD:205 [ mul16u_compare::mf#0 mul16u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 ] ] with [ zp ZP_DWORD:213 [ mul16u_compare::mf#0 mul16u_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 ] ] with [ zp ZP_DWORD:134 [ mul16s_error::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 ] ] with [ zp ZP_DWORD:197 [ mul16u_compare::mn#0 mul16u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_DWORD:37 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 mul16s_compare::mn#0 mul16s_error::mn#0 ] ] with [ zp ZP_DWORD:205 [ mul16u_compare::mn#0 mul16u_error::mn#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 ] ] with [ zp ZP_BYTE:61 [ mul16u_compare::i#12 mul16u_compare::i#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 ] ] with [ zp ZP_BYTE:79 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] with [ zp ZP_BYTE:87 [ mulf_init::dir#2 mulf_init::dir#3 ] ] @@ -7644,16 +7708,20 @@ Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compar Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 ] ] with [ zp ZP_WORD:75 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp ZP_WORD:83 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] with [ zp ZP_WORD:88 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] ] with [ zp ZP_WORD:148 [ mulf16s::$5 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 ] ] with [ zp ZP_WORD:154 [ mulf16s::$11 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 ] ] with [ zp ZP_WORD:172 [ mul16s::$5 ] ] +Coalescing zero page register [ zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 ] ] with [ zp ZP_WORD:178 [ mul16s::$11 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 ] ] with [ zp ZP_WORD:77 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] ] with [ zp ZP_WORD:85 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] ] Coalescing zero page register [ zp ZP_WORD:9 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 ] ] with [ zp ZP_WORD:80 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] ] Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 ] ] with [ zp ZP_WORD:43 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ] ] with [ zp ZP_WORD:53 [ muls16s::j#2 muls16s::j#1 ] ] Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 ] ] with [ zp ZP_WORD:59 [ muls16s::i#2 muls16s::i#1 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 ] ] with [ zp ZP_WORD:148 [ mulf16s::$6 mulf16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 ] ] with [ zp ZP_WORD:152 [ mulf16s::$12 mulf16s::$17 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 ] ] with [ zp ZP_WORD:168 [ mul16s::$6 mul16s::$16 ] ] -Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:172 [ mul16s::$12 mul16s::$17 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 ] ] with [ zp ZP_WORD:150 [ mulf16s::$6 mulf16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 ] ] with [ zp ZP_WORD:156 [ mulf16s::$12 mulf16s::$17 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 ] ] with [ zp ZP_WORD:174 [ mul16s::$6 mul16s::$16 ] ] +Coalescing zero page register [ zp ZP_WORD:11 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 mul16s::$6 mul16s::$16 ] ] with [ zp ZP_WORD:180 [ mul16s::$12 mul16s::$17 ] ] Coalescing zero page register [ zp ZP_DWORD:29 [ mulf16s::m#4 mulf16s::m#5 mulf16s::m#1 mulf16s::m#0 mulf16s::m#2 mulf16u::return#2 mulf16s::return#0 mulf16s::return#2 mul16s_compare::mf#0 mulf16u::return#0 mulf16u::return#3 mul16s_error::mf#0 mul16u_compare::mf#0 mul16u_error::mf#0 ] ] with [ zp ZP_DWORD:49 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] ] Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ print_line_cursor#22 print_line_cursor#43 print_line_cursor#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ print_str::str#15 print_str::str#17 print_str::str#0 mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 muls16s::j#2 muls16s::j#1 muls16s::i#2 muls16s::i#1 mulf16s::$6 mulf16s::$16 mulf16s::$12 mulf16s::$17 mul16s::$6 mul16s::$16 mul16s::$12 mul16s::$17 ] @@ -7693,7 +7761,7 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls - //SEG11 [304] phi from main to print_cls [phi:main->print_cls] + //SEG11 [308] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -7702,7 +7770,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call mulf_init - //SEG15 [275] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -7711,7 +7779,7 @@ main: { //SEG17 main::@2 b2: //SEG18 [9] call mul16u_compare - //SEG19 [199] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG19 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] mul16u_compare_from_b2: jsr mul16u_compare //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] @@ -8466,7 +8534,9 @@ print_sword: { } //SEG296 mulf16s mulf16s: { + .label _5 = 3 .label _6 = 9 + .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -8485,10 +8555,10 @@ mulf16s: { lda b+1 sta mulf16u.b+1 //SEG299 [138] call mulf16u - //SEG300 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG300 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] mulf16u_from_mulf16s: - //SEG301 [153] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG302 [153] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG301 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG302 [155] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u //SEG303 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 // (dword) mulf16u::return#2 = (dword) mulf16u::return#0 // register copy zp ZP_DWORD:17 @@ -8503,12 +8573,17 @@ mulf16s: { jmp b3 //SEG307 mulf16s::@3 b3: - //SEG308 [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG308 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG309 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG309 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG310 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8516,30 +8591,35 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG310 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG311 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG311 [145] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG312 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] b1_from_b3: b1_from_b6: - //SEG312 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG313 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy jmp b1 - //SEG313 mulf16s::@1 + //SEG314 mulf16s::@1 b1: - //SEG314 [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG315 [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG315 mulf16s::@4 + //SEG316 mulf16s::@4 b4: - //SEG316 [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG317 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + lda m+2 + sta _11 + lda m+3 + sta _11+1 + //SEG318 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG317 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG319 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8547,26 +8627,26 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG318 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG320 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG319 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG321 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] b2_from_b1: b2_from_b4: - //SEG320 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG322 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy jmp b2 - //SEG321 mulf16s::@2 + //SEG323 mulf16s::@2 b2: - //SEG322 [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG324 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG323 mulf16s::@return + //SEG325 mulf16s::@return breturn: - //SEG324 [152] return + //SEG326 [154] return rts } -//SEG325 mulf16u +//SEG327 mulf16u mulf16u: { .label memA = $f8 .label memB = $fa @@ -8574,17 +8654,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG326 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG328 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG327 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG329 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG328 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG330 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -8677,7 +8757,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG329 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG331 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -8687,14 +8767,16 @@ mulf16u: { lda memR+3 sta return+3 jmp breturn - //SEG330 mulf16u::@return + //SEG332 mulf16u::@return breturn: - //SEG331 [158] return + //SEG333 [160] return rts } -//SEG332 mul16s +//SEG334 mul16s mul16s: { + .label _5 = 3 .label _6 = 9 + .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -8702,41 +8784,46 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG333 [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG335 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG334 [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG336 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG335 [161] call mul16u - //SEG336 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG337 [163] call mul16u + //SEG338 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] mul16u_from_mul16s: - //SEG337 [176] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG338 [176] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy + //SEG339 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG340 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG339 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG341 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 // (dword) mul16u::return#2 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:25 jmp b6 - //SEG340 mul16s::@6 + //SEG342 mul16s::@6 b6: - //SEG341 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG343 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 // (dword) mul16s::m#0 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:25 - //SEG342 [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG344 [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1_from_b6 jmp b3 - //SEG343 mul16s::@3 + //SEG345 mul16s::@3 b3: - //SEG344 [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG346 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG347 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG345 [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG348 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -8744,30 +8831,35 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG346 [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG349 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG347 [168] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG350 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] b1_from_b3: b1_from_b6: - //SEG348 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG351 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy jmp b1 - //SEG349 mul16s::@1 + //SEG352 mul16s::@1 b1: - //SEG350 [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG353 [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2_from_b1 jmp b4 - //SEG351 mul16s::@4 + //SEG354 mul16s::@4 b4: - //SEG352 [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG355 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + lda m+2 + sta _11 + lda m+3 + sta _11+1 + //SEG356 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG353 [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG357 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -8775,33 +8867,33 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG354 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG358 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG355 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG359 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] b2_from_b1: b2_from_b4: - //SEG356 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG360 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy jmp b2 - //SEG357 mul16s::@2 + //SEG361 mul16s::@2 b2: - //SEG358 [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG362 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 jmp breturn - //SEG359 mul16s::@return + //SEG363 mul16s::@return breturn: - //SEG360 [175] return + //SEG364 [179] return rts } -//SEG361 mul16u +//SEG365 mul16u mul16u: { .label mb = $11 .label a = 9 .label res = $19 .label return = $19 .label b = $17 - //SEG362 [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG366 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -8809,42 +8901,42 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG363 [178] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG367 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] b1_from_mul16u: - //SEG364 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG365 [178] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG368 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG369 [182] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 lda #0 sta res lda #0 sta res+1 sta res+2 sta res+3 - //SEG366 [178] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG370 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy jmp b1 - //SEG367 mul16u::@1 + //SEG371 mul16u::@1 b1: - //SEG368 [179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG372 [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 jmp breturn - //SEG369 mul16u::@return + //SEG373 mul16u::@return breturn: - //SEG370 [180] return + //SEG374 [184] return rts - //SEG371 mul16u::@2 + //SEG375 mul16u::@2 b2: - //SEG372 [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG376 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG373 [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG377 [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG374 mul16u::@7 + //SEG378 mul16u::@7 b7: - //SEG375 [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG379 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -8858,30 +8950,30 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG376 [184] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG380 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] b4_from_b2: b4_from_b7: - //SEG377 [184] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG381 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy jmp b4 - //SEG378 mul16u::@4 + //SEG382 mul16u::@4 b4: - //SEG379 [185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG383 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG380 [186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG384 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG381 [178] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG385 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] b1_from_b4: - //SEG382 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG383 [178] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG384 [178] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG386 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG387 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG388 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG385 muls16s +//SEG389 muls16s muls16s: { .label m = $b .label j = 9 @@ -8889,27 +8981,27 @@ muls16s: { .label i = 9 .label a = 3 .label b = 5 - //SEG386 [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 + //SEG390 [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 lda a+1 bmi b5_from_muls16s jmp b6 - //SEG387 muls16s::@6 + //SEG391 muls16s::@6 b6: - //SEG388 [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 + //SEG392 [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 lda a+1 bmi b4_from_b6 bne !+ lda a beq b4_from_b6 !: - //SEG389 [189] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG393 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] b3_from_b6: - //SEG390 [189] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 + //SEG394 [193] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 lda #<0 sta j lda #>0 sta j+1 - //SEG391 [189] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 + //SEG395 [193] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -8919,14 +9011,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b3 - //SEG392 [189] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG396 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] b3_from_b3: - //SEG393 [189] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG394 [189] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG397 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG398 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy jmp b3 - //SEG395 muls16s::@3 + //SEG399 muls16s::@3 b3: - //SEG396 [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG400 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -8946,26 +9038,26 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG397 [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG401 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG398 [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG402 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3_from_b3 lda j cmp a bne b3_from_b3 - //SEG399 [193] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG403 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] b4_from_b3: b4_from_b5: - //SEG400 [193] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG404 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG401 [193] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG405 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b4_from_b6: - //SEG402 [193] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 + //SEG406 [197] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 lda #<0 sta return lda #>0 @@ -8975,21 +9067,21 @@ muls16s: { lda #>0>>$10 sta return+3 jmp b4 - //SEG403 muls16s::@4 + //SEG407 muls16s::@4 b4: jmp breturn - //SEG404 muls16s::@return + //SEG408 muls16s::@return breturn: - //SEG405 [194] return + //SEG409 [198] return rts - //SEG406 [195] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG410 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b5_from_muls16s: - //SEG407 [195] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 + //SEG411 [199] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG408 [195] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 + //SEG412 [199] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 lda #<0 sta m lda #>0 @@ -8999,14 +9091,14 @@ muls16s: { lda #>0>>$10 sta m+3 jmp b5 - //SEG409 [195] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG413 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] b5_from_b5: - //SEG410 [195] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy - //SEG411 [195] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy + //SEG414 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG415 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy jmp b5 - //SEG412 muls16s::@5 + //SEG416 muls16s::@5 b5: - //SEG413 [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG417 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -9026,13 +9118,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG414 [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG418 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG415 [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG419 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b5_from_b5 @@ -9041,7 +9133,7 @@ muls16s: { bne b5_from_b5 jmp b4_from_b5 } -//SEG416 mul16u_compare +//SEG420 mul16u_compare mul16u_compare: { .label a = $15 .label b = $17 @@ -9049,62 +9141,62 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG417 [200] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG421 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] b1_from_mul16u_compare: - //SEG418 [200] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG422 [204] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG419 [200] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG423 [204] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 lda #<0 sta b lda #>0 sta b+1 - //SEG420 [200] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG424 [204] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 lda #<0 sta a lda #>0 sta a+1 - //SEG421 [200] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG425 [204] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 jmp b1 - //SEG422 [200] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG426 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] b1_from_b10: - //SEG423 [200] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy - //SEG424 [200] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy - //SEG425 [200] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy - //SEG426 [200] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy + //SEG427 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG428 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG429 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG430 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy jmp b1 - //SEG427 mul16u_compare::@1 + //SEG431 mul16u_compare::@1 b1: - //SEG428 [201] call print_str - //SEG429 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG432 [205] call print_str + //SEG433 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] print_str_from_b1: - //SEG430 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG431 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG434 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG435 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG432 [202] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG436 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] b2_from_b1: - //SEG433 [202] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + //SEG437 [206] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG434 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG435 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG438 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG439 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG436 [202] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG440 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] b2_from_b5: - //SEG437 [202] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG438 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG439 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG441 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG442 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG443 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy jmp b2 - //SEG440 mul16u_compare::@2 + //SEG444 mul16u_compare::@2 b2: - //SEG441 [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG445 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -9112,7 +9204,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG442 [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -9120,57 +9212,57 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG443 [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG447 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 // (word) muls16u::a#0 = (word) mul16u_compare::a#1 // register copy zp ZP_WORD:21 - //SEG444 [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG448 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 // (word) muls16u::b#0 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG445 [207] call muls16u + //SEG449 [211] call muls16u jsr muls16u - //SEG446 [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG450 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 // (dword) muls16u::return#2 = (dword) muls16u::return#0 // register copy zp ZP_DWORD:11 jmp b13 - //SEG447 mul16u_compare::@13 + //SEG451 mul16u_compare::@13 b13: - //SEG448 [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG452 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 // (dword) mul16u_compare::ms#0 = (dword) muls16u::return#2 // register copy zp ZP_DWORD:11 - //SEG449 [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG453 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG450 [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG454 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 // (word) mul16u::b#1 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG451 [212] call mul16u - //SEG452 [176] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG455 [216] call mul16u + //SEG456 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] mul16u_from_b13: - //SEG453 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy - //SEG454 [176] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy + //SEG457 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG458 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG455 [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG459 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:25 jmp b14 - //SEG456 mul16u_compare::@14 + //SEG460 mul16u_compare::@14 b14: - //SEG457 [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG461 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 // (dword) mul16u_compare::mn#0 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:25 - //SEG458 [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG462 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 // (word) mulf16u::a#1 = (word) mul16u_compare::a#1 // register copy zp ZP_WORD:21 - //SEG459 [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG463 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 // (word) mulf16u::b#1 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG460 [217] call mulf16u - //SEG461 [153] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG464 [221] call mulf16u + //SEG465 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] mulf16u_from_b14: - //SEG462 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy - //SEG463 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy + //SEG466 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG467 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG464 [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG468 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 // (dword) mulf16u::return#3 = (dword) mulf16u::return#0 // register copy zp ZP_DWORD:17 jmp b15 - //SEG465 mul16u_compare::@15 + //SEG469 mul16u_compare::@15 b15: - //SEG466 [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG470 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 // (dword) mul16u_compare::mf#0 = (dword) mulf16u::return#3 // register copy zp ZP_DWORD:17 - //SEG467 [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG471 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -9184,24 +9276,24 @@ mul16u_compare: { cmp mf+3 beq b3_from_b15 !: - //SEG468 [221] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG472 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] b6_from_b15: jmp b6 - //SEG469 mul16u_compare::@6 + //SEG473 mul16u_compare::@6 b6: - //SEG470 [222] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG474 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] b3_from_b6: - //SEG471 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG475 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG472 [222] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG476 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b3_from_b15: - //SEG473 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG477 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG474 mul16u_compare::@3 + //SEG478 mul16u_compare::@3 b3: - //SEG475 [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG479 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -9215,219 +9307,219 @@ mul16u_compare: { cmp mn+3 beq b22_from_b3 !: - //SEG476 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG480 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] b4_from_b3: - //SEG477 [224] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + //SEG481 [228] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG478 mul16u_compare::@4 + //SEG482 mul16u_compare::@4 b4: - //SEG479 [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG483 [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b8 - //SEG480 mul16u_compare::@8 + //SEG484 mul16u_compare::@8 b8: - //SEG481 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG485 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG482 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG486 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG483 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG487 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 // (word) mul16u_error::b#0 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG484 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG488 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 // (dword) mul16u_error::ms#0 = (dword) mul16u_compare::ms#0 // register copy zp ZP_DWORD:11 - //SEG485 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG489 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 // (dword) mul16u_error::mn#0 = (dword) mul16u_compare::mn#0 // register copy zp ZP_DWORD:25 - //SEG486 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG490 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 // (dword) mul16u_error::mf#0 = (dword) mul16u_compare::mf#0 // register copy zp ZP_DWORD:17 - //SEG487 [232] call mul16u_error - //SEG488 [245] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG491 [236] call mul16u_error + //SEG492 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] mul16u_error_from_b8: jsr mul16u_error jmp breturn - //SEG489 mul16u_compare::@return + //SEG493 mul16u_compare::@return breturn: - //SEG490 [233] return + //SEG494 [237] return rts - //SEG491 mul16u_compare::@5 + //SEG495 mul16u_compare::@5 b5: - //SEG492 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG496 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG493 [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG497 [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2_from_b5 jmp b10 - //SEG494 mul16u_compare::@10 + //SEG498 mul16u_compare::@10 b10: - //SEG495 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG499 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG496 [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG500 [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 bne b1_from_b10 - //SEG497 [238] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG501 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] b11_from_b10: jmp b11 - //SEG498 mul16u_compare::@11 + //SEG502 mul16u_compare::@11 b11: - //SEG499 [239] call print_ln - //SEG500 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG503 [243] call print_ln + //SEG504 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] print_ln_from_b11: - //SEG501 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy - //SEG502 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 + //SEG505 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG506 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp b17 - //SEG503 mul16u_compare::@17 + //SEG507 mul16u_compare::@17 b17: - //SEG504 [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG508 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG505 [241] call print_str - //SEG506 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG509 [245] call print_str + //SEG510 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] print_str_from_b17: - //SEG507 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy - //SEG508 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG511 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG512 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG509 [242] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG513 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] b18_from_b17: jmp b18 - //SEG510 mul16u_compare::@18 + //SEG514 mul16u_compare::@18 b18: - //SEG511 [243] call print_ln - //SEG512 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG515 [247] call print_ln + //SEG516 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] print_ln_from_b18: - //SEG513 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy - //SEG514 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy + //SEG517 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG518 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG515 [244] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG519 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] b22_from_b3: jmp b22 - //SEG516 mul16u_compare::@22 + //SEG520 mul16u_compare::@22 b22: - //SEG517 [224] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG521 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] b4_from_b22: - //SEG518 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG522 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy jmp b4 str: .text ".@" str1: .text "word multiply results match!@" } -//SEG519 mul16u_error +//SEG523 mul16u_error mul16u_error: { .label a = 3 .label b = $17 .label ms = $b .label mn = $19 .label mf = $11 - //SEG520 [246] call print_str - //SEG521 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG524 [250] call print_str + //SEG525 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] print_str_from_mul16u_error: - //SEG522 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG523 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG526 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG527 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG524 mul16u_error::@1 + //SEG528 mul16u_error::@1 b1: - //SEG525 [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG529 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 // (word) print_word::w#3 = (word) mul16u_error::a#0 // register copy zp ZP_WORD:3 - //SEG526 [248] call print_word - //SEG527 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG530 [252] call print_word + //SEG531 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] print_word_from_b1: - //SEG528 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG529 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG532 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG533 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG530 [249] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG534 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] b2_from_b1: jmp b2 - //SEG531 mul16u_error::@2 + //SEG535 mul16u_error::@2 b2: - //SEG532 [250] call print_str - //SEG533 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG536 [254] call print_str + //SEG537 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] print_str_from_b2: - //SEG534 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG535 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG538 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG539 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG536 mul16u_error::@3 + //SEG540 mul16u_error::@3 b3: - //SEG537 [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG541 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG538 [252] call print_word - //SEG539 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG542 [256] call print_word + //SEG543 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] print_word_from_b3: - //SEG540 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG541 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG544 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG545 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG542 [253] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG546 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] b4_from_b3: jmp b4 - //SEG543 mul16u_error::@4 + //SEG547 mul16u_error::@4 b4: - //SEG544 [254] call print_str - //SEG545 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG548 [258] call print_str + //SEG549 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] print_str_from_b4: - //SEG546 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG547 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG550 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG551 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG548 mul16u_error::@5 + //SEG552 mul16u_error::@5 b5: - //SEG549 [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG553 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 // (dword) print_dword::dw#1 = (dword) mul16u_error::ms#0 // register copy zp ZP_DWORD:11 - //SEG550 [256] call print_dword - //SEG551 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG554 [260] call print_dword + //SEG555 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] print_dword_from_b5: - //SEG552 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG553 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG556 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG557 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG554 [257] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG558 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] b6_from_b5: jmp b6 - //SEG555 mul16u_error::@6 + //SEG559 mul16u_error::@6 b6: - //SEG556 [258] call print_str - //SEG557 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG560 [262] call print_str + //SEG561 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] print_str_from_b6: - //SEG558 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG559 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG562 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG563 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG560 mul16u_error::@7 + //SEG564 mul16u_error::@7 b7: - //SEG561 [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG565 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -9436,31 +9528,31 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG562 [260] call print_dword - //SEG563 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG566 [264] call print_dword + //SEG567 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] print_dword_from_b7: - //SEG564 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG565 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG568 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG569 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG566 [261] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG570 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] b8_from_b7: jmp b8 - //SEG567 mul16u_error::@8 + //SEG571 mul16u_error::@8 b8: - //SEG568 [262] call print_str - //SEG569 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG572 [266] call print_str + //SEG573 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] print_str_from_b8: - //SEG570 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG571 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG574 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG575 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG572 mul16u_error::@9 + //SEG576 mul16u_error::@9 b9: - //SEG573 [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG577 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -9469,31 +9561,31 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG574 [264] call print_dword - //SEG575 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG578 [268] call print_dword + //SEG579 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] print_dword_from_b9: - //SEG576 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG577 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG580 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG581 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG578 [265] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG582 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] b10_from_b9: jmp b10 - //SEG579 mul16u_error::@10 + //SEG583 mul16u_error::@10 b10: - //SEG580 [266] call print_ln - //SEG581 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG584 [270] call print_ln + //SEG585 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] print_ln_from_b10: - //SEG582 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG583 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG586 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG587 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln jmp breturn - //SEG584 mul16u_error::@return + //SEG588 mul16u_error::@return breturn: - //SEG585 [267] return + //SEG589 [271] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -9501,27 +9593,27 @@ mul16u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG586 muls16u +//SEG590 muls16u muls16u: { .label return = $b .label m = $b .label i = 3 .label a = $15 .label b = $17 - //SEG587 [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + //SEG591 [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b1_from_muls16u !: - //SEG588 [269] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG592 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] b2_from_muls16u: - //SEG589 [269] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG593 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG590 [269] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG594 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 lda #0 sta m lda #0 @@ -9529,14 +9621,14 @@ muls16u: { sta m+2 sta m+3 jmp b2 - //SEG591 [269] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG595 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] b2_from_b2: - //SEG592 [269] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG593 [269] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG596 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG597 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy jmp b2 - //SEG594 muls16u::@2 + //SEG598 muls16u::@2 b2: - //SEG595 [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG599 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -9550,25 +9642,25 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG596 [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG600 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG597 [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG601 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2_from_b2 lda i cmp a bne b2_from_b2 - //SEG598 [273] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG602 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] b1_from_b2: - //SEG599 [273] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG603 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG600 [273] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG604 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b1_from_muls16u: - //SEG601 [273] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG605 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return lda #0 @@ -9576,15 +9668,15 @@ muls16u: { sta return+2 sta return+3 jmp b1 - //SEG602 muls16u::@1 + //SEG606 muls16u::@1 b1: jmp breturn - //SEG603 muls16u::@return + //SEG607 muls16u::@return breturn: - //SEG604 [274] return + //SEG608 [278] return rts } -//SEG605 mulf_init +//SEG609 mulf_init mulf_init: { .label sqr1_hi = 5 .label sqr = 7 @@ -9593,81 +9685,81 @@ mulf_init: { .label sqr2_hi = 5 .label sqr2_lo = 3 .label dir = 2 - //SEG606 [276] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG610 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG607 [276] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG611 [280] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG608 [276] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG612 [280] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG609 [276] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG613 [280] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG610 [276] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG614 [280] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG611 [276] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG615 [280] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG612 [276] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG616 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG613 [276] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG614 [276] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG615 [276] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG616 [276] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG617 [276] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG617 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG618 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG619 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG620 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG621 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG618 mulf_init::@1 + //SEG622 mulf_init::@1 b1: - //SEG619 [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG623 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG620 [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG624 [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG621 [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG625 [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG622 mulf_init::@5 + //SEG626 mulf_init::@5 b5: - //SEG623 [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG627 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG624 [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG628 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG625 [282] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG629 [286] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG626 [282] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG627 [282] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG630 [286] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG631 [286] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG628 mulf_init::@2 + //SEG632 mulf_init::@2 b2: - //SEG629 [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG633 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG630 [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG634 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG631 [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG635 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG632 [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG636 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG633 [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG637 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG634 [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG638 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -9675,80 +9767,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG635 [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG639 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG636 [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG640 [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG641 [295] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG638 [291] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG642 [295] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG639 [291] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG643 [295] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG640 [291] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG644 [295] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG641 [291] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG645 [295] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG642 [291] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG646 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG643 [291] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG644 [291] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG645 [291] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG646 [291] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG647 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG648 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG649 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG650 [295] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG647 mulf_init::@3 + //SEG651 mulf_init::@3 b3: - //SEG648 [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG652 [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG649 [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG653 [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG650 [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG654 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG651 [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG655 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG652 [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG656 [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG653 [297] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG657 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG654 [297] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG658 [301] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG655 mulf_init::@4 + //SEG659 mulf_init::@4 b4: - //SEG656 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG660 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG657 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG661 [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -9756,56 +9848,56 @@ mulf_init: { cmp #mulf_init::@12] + //SEG667 [307] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG664 mulf_init::@12 + //SEG668 mulf_init::@12 b12: - //SEG665 [297] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG669 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG666 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG670 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG667 print_cls +//SEG671 print_cls print_cls: { .label sc = 3 - //SEG668 [305] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG672 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG669 [305] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG673 [309] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG670 [305] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG674 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG671 [305] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG675 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG672 print_cls::@1 + //SEG676 print_cls::@1 b1: - //SEG673 [306] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG677 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG674 [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG678 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG675 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG679 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -9813,9 +9905,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG676 print_cls::@return + //SEG680 print_cls::@return breturn: - //SEG677 [309] return + //SEG681 [313] return rts } print_hextab: .text "0123456789abcdef" @@ -10238,7 +10330,7 @@ Removing unreachable instruction jmp b4 Removing unreachable instruction jmp b4 Succesful ASM optimization Pass5UnreachableCodeElimination Fixing long branch [109] bne b1 to beq -Fixing long branch [811] bne b1 to beq +Fixing long branch [831] bne b1 to beq FINAL SYMBOL TABLE (label) @40 @@ -10252,9 +10344,11 @@ FINAL SYMBOL TABLE (label) main::@3 (label) main::@return (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) +(word~) mul16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mul16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mul16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mul16s::$17 $17 zp ZP_WORD:9 4.0 +(word~) mul16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:9 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -10263,15 +10357,15 @@ FINAL SYMBOL TABLE (label) mul16s::@6 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp ZP_WORD:3 7.357142857142858 +(signed word) mul16s::a#0 a zp ZP_WORD:3 6.4375 (signed word) mul16s::b -(signed word) mul16s::b#0 b zp ZP_WORD:5 9.363636363636363 +(signed word) mul16s::b#0 b zp ZP_WORD:5 8.583333333333332 (dword) mul16s::m (dword) mul16s::m#0 m zp ZP_DWORD:25 2.0 (dword) mul16s::m#1 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#2 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#4 m zp ZP_DWORD:25 6.0 -(dword) mul16s::m#5 m zp ZP_DWORD:25 2.5 +(dword) mul16s::m#5 m zp ZP_DWORD:25 2.4 (signed dword) mul16s::return (signed dword) mul16s::return#0 return zp ZP_DWORD:25 34.33333333333333 (signed dword) mul16s::return#2 return zp ZP_DWORD:25 202.0 @@ -10442,9 +10536,11 @@ FINAL SYMBOL TABLE (const string) mul16u_error::str3 str3 = (string) " / normal:@" (const string) mul16u_error::str4 str4 = (string) " / fast:@" (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) +(word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mulf16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mulf16s::$17 $17 zp ZP_WORD:9 4.0 +(word~) mulf16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mulf16s::$6 $6 zp ZP_WORD:9 4.0 (label) mulf16s::@1 (label) mulf16s::@2 @@ -10453,15 +10549,15 @@ FINAL SYMBOL TABLE (label) mulf16s::@6 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp ZP_WORD:3 7.357142857142858 +(signed word) mulf16s::a#0 a zp ZP_WORD:3 6.4375 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp ZP_WORD:5 9.363636363636363 +(signed word) mulf16s::b#0 b zp ZP_WORD:5 8.583333333333332 (dword) mulf16s::m (dword) mulf16s::m#0 m zp ZP_DWORD:17 2.0 (dword) mulf16s::m#1 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#2 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#4 m zp ZP_DWORD:17 6.0 -(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.5 +(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.4 (signed dword) mulf16s::return (signed dword) mulf16s::return#0 return zp ZP_DWORD:17 34.33333333333333 (signed dword) mulf16s::return#2 return zp ZP_DWORD:17 202.0 @@ -10676,7 +10772,7 @@ FINAL SYMBOL TABLE (word) print_word::w#5 w zp ZP_WORD:3 4.666666666666666 zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] -zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] @@ -10703,7 +10799,7 @@ reg byte a [ mulf_init::$6 ] FINAL ASSEMBLER -Score: 444925 +Score: 444973 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -10726,17 +10822,17 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls - //SEG11 [304] phi from main to print_cls [phi:main->print_cls] + //SEG11 [308] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] //SEG13 main::@1 //SEG14 [7] call mulf_init - //SEG15 [275] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [279] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG17 main::@2 //SEG18 [9] call mul16u_compare - //SEG19 [199] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] + //SEG19 [203] phi from main::@2 to mul16u_compare [phi:main::@2->mul16u_compare] jsr mul16u_compare //SEG20 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG21 main::@3 @@ -11350,7 +11446,9 @@ print_sword: { } //SEG296 mulf16s mulf16s: { + .label _5 = 3 .label _6 = 9 + .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -11369,9 +11467,9 @@ mulf16s: { lda b+1 sta mulf16u.b+1 //SEG299 [138] call mulf16u - //SEG300 [153] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] - //SEG301 [153] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy - //SEG302 [153] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy + //SEG300 [155] phi from mulf16s to mulf16u [phi:mulf16s->mulf16u] + //SEG301 [155] phi (word) mulf16u::b#2 = (word~) mulf16u::b#4 [phi:mulf16s->mulf16u#0] -- register_copy + //SEG302 [155] phi (word) mulf16u::a#2 = (word~) mulf16u::a#4 [phi:mulf16s->mulf16u#1] -- register_copy jsr mulf16u //SEG303 [139] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0 // (dword) mulf16u::return#2 = (dword) mulf16u::return#0 // register copy zp ZP_DWORD:17 @@ -11382,12 +11480,17 @@ mulf16s: { lda a+1 bpl b1 //SEG307 mulf16s::@3 - //SEG308 [142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + //SEG308 [142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG309 [143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG309 [143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG310 [144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11395,25 +11498,30 @@ mulf16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG310 [144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG311 [145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG311 [145] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] - //SEG312 [145] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy - //SEG313 mulf16s::@1 + //SEG312 [146] phi from mulf16s::@3 mulf16s::@6 to mulf16s::@1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1] + //SEG313 [146] phi (dword) mulf16s::m#5 = (dword) mulf16s::m#1 [phi:mulf16s::@3/mulf16s::@6->mulf16s::@1#0] -- register_copy + //SEG314 mulf16s::@1 b1: - //SEG314 [146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 + //SEG315 [147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 - //SEG315 mulf16s::@4 - //SEG316 [147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + //SEG316 mulf16s::@4 + //SEG317 [148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 + lda m+2 + sta _11 + lda m+3 + sta _11+1 + //SEG318 [149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG317 [148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG319 [150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11421,21 +11529,21 @@ mulf16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG318 [149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG320 [151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG319 [150] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] - //SEG320 [150] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy - //SEG321 mulf16s::@2 + //SEG321 [152] phi from mulf16s::@1 mulf16s::@4 to mulf16s::@2 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2] + //SEG322 [152] phi (dword) mulf16s::m#4 = (dword) mulf16s::m#5 [phi:mulf16s::@1/mulf16s::@4->mulf16s::@2#0] -- register_copy + //SEG323 mulf16s::@2 b2: - //SEG322 [151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG323 mulf16s::@return - //SEG324 [152] return + //SEG324 [153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG325 mulf16s::@return + //SEG326 [154] return rts } -//SEG325 mulf16u +//SEG327 mulf16u mulf16u: { .label memA = $f8 .label memB = $fa @@ -11443,17 +11551,17 @@ mulf16u: { .label return = $11 .label a = $15 .label b = $17 - //SEG326 [154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 + //SEG328 [156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2 -- _deref_pwuc1=vwuz1 lda a sta memA lda a+1 sta memA+1 - //SEG327 [155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 + //SEG329 [157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2 -- _deref_pwuc1=vwuz1 lda b sta memB lda b+1 sta memB+1 - //SEG328 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } + //SEG330 asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: } lda memA sta sm1a+1 sta sm3a+1 @@ -11546,7 +11654,7 @@ mulf16u: { bcc !+ inc memR+3 !: - //SEG329 [157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 + //SEG331 [159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0) -- vduz1=_deref_pduc1 lda memR sta return lda memR+1 @@ -11555,13 +11663,15 @@ mulf16u: { sta return+2 lda memR+3 sta return+3 - //SEG330 mulf16u::@return - //SEG331 [158] return + //SEG332 mulf16u::@return + //SEG333 [160] return rts } -//SEG332 mul16s +//SEG334 mul16s mul16s: { + .label _5 = 3 .label _6 = 9 + .label _11 = 3 .label _12 = 9 .label _16 = 9 .label _17 = 9 @@ -11569,36 +11679,41 @@ mul16s: { .label return = $19 .label a = 3 .label b = 5 - //SEG333 [159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 + //SEG335 [161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0 -- vwuz1=vwuz2 lda b sta mul16u.b lda b+1 sta mul16u.b+1 - //SEG334 [160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 + //SEG336 [162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG335 [161] call mul16u - //SEG336 [176] phi from mul16s to mul16u [phi:mul16s->mul16u] - //SEG337 [176] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy - //SEG338 [176] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy + //SEG337 [163] call mul16u + //SEG338 [180] phi from mul16s to mul16u [phi:mul16s->mul16u] + //SEG339 [180] phi (word) mul16u::a#6 = (word~) mul16u::a#8 [phi:mul16s->mul16u#0] -- register_copy + //SEG340 [180] phi (word) mul16u::b#2 = (word~) mul16u::b#3 [phi:mul16s->mul16u#1] -- register_copy jsr mul16u - //SEG339 [162] (dword) mul16u::return#2 ← (dword) mul16u::res#2 + //SEG341 [164] (dword) mul16u::return#2 ← (dword) mul16u::res#2 // (dword) mul16u::return#2 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:25 - //SEG340 mul16s::@6 - //SEG341 [163] (dword) mul16s::m#0 ← (dword) mul16u::return#2 + //SEG342 mul16s::@6 + //SEG343 [165] (dword) mul16s::m#0 ← (dword) mul16u::return#2 // (dword) mul16s::m#0 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:25 - //SEG342 [164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 + //SEG344 [166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1 lda a+1 bpl b1 - //SEG343 mul16s::@3 - //SEG344 [165] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + //SEG345 mul16s::@3 + //SEG346 [167] (word~) mul16s::$5 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 + lda m+2 + sta _5 + lda m+3 + sta _5+1 + //SEG347 [168] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2 lda m+2 sta _6 lda m+3 sta _6+1 - //SEG345 [166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG348 [169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0 -- vwuz1=vwuz1_minus_vwuz2 lda _16 sec sbc b @@ -11606,25 +11721,30 @@ mul16s: { lda _16+1 sbc b+1 sta _16+1 - //SEG346 [167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 + //SEG349 [170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 -- vduz1=vduz1_sethi_vwuz2 lda _16 sta m+2 lda _16+1 sta m+3 - //SEG347 [168] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] - //SEG348 [168] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy - //SEG349 mul16s::@1 + //SEG350 [171] phi from mul16s::@3 mul16s::@6 to mul16s::@1 [phi:mul16s::@3/mul16s::@6->mul16s::@1] + //SEG351 [171] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@6->mul16s::@1#0] -- register_copy + //SEG352 mul16s::@1 b1: - //SEG350 [169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 + //SEG353 [172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1 lda b+1 bpl b2 - //SEG351 mul16s::@4 - //SEG352 [170] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + //SEG354 mul16s::@4 + //SEG355 [173] (word~) mul16s::$11 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 + lda m+2 + sta _11 + lda m+3 + sta _11+1 + //SEG356 [174] (word~) mul16s::$12 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2 lda m+2 sta _12 lda m+3 sta _12+1 - //SEG353 [171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 + //SEG357 [175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0 -- vwuz1=vwuz1_minus_vwuz2 lda _17 sec sbc a @@ -11632,28 +11752,28 @@ mul16s: { lda _17+1 sbc a+1 sta _17+1 - //SEG354 [172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 + //SEG358 [176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17 -- vduz1=vduz1_sethi_vwuz2 lda _17 sta m+2 lda _17+1 sta m+3 - //SEG355 [173] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] - //SEG356 [173] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy - //SEG357 mul16s::@2 + //SEG359 [177] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2] + //SEG360 [177] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy + //SEG361 mul16s::@2 b2: - //SEG358 [174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 - //SEG359 mul16s::@return - //SEG360 [175] return + //SEG362 [178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 -- vdsz1=_sdword_vduz1 + //SEG363 mul16s::@return + //SEG364 [179] return rts } -//SEG361 mul16u +//SEG365 mul16u mul16u: { .label mb = $11 .label a = 9 .label res = $19 .label return = $19 .label b = $17 - //SEG362 [177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 + //SEG366 [181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 -- vduz1=_dword_vwuz2 lda b sta mb lda b+1 @@ -11661,34 +11781,34 @@ mul16u: { lda #0 sta mb+2 sta mb+3 - //SEG363 [178] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] - //SEG364 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy - //SEG365 [178] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 + //SEG367 [182] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1] + //SEG368 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy + //SEG369 [182] phi (dword) mul16u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vbuc1 sta res sta res+1 sta res+2 sta res+3 - //SEG366 [178] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy - //SEG367 mul16u::@1 + //SEG370 [182] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy + //SEG371 mul16u::@1 b1: - //SEG368 [179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 + //SEG372 [183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1 lda a bne b2 lda a+1 bne b2 - //SEG369 mul16u::@return - //SEG370 [180] return + //SEG373 mul16u::@return + //SEG374 [184] return rts - //SEG371 mul16u::@2 + //SEG375 mul16u::@2 b2: - //SEG372 [181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 + //SEG376 [185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vwuz1_band_vbuc1 lda a and #1 - //SEG373 [182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 + //SEG377 [186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG374 mul16u::@7 - //SEG375 [183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 + //SEG378 mul16u::@7 + //SEG379 [187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2 lda res clc adc mb @@ -11702,26 +11822,26 @@ mul16u: { lda res+3 adc mb+3 sta res+3 - //SEG376 [184] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] - //SEG377 [184] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy - //SEG378 mul16u::@4 + //SEG380 [188] phi from mul16u::@2 mul16u::@7 to mul16u::@4 [phi:mul16u::@2/mul16u::@7->mul16u::@4] + //SEG381 [188] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@7->mul16u::@4#0] -- register_copy + //SEG382 mul16u::@4 b4: - //SEG379 [185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 + //SEG383 [189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_ror_1 clc ror a+1 ror a - //SEG380 [186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 + //SEG384 [190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vduz1=vduz1_rol_1 asl mb rol mb+1 rol mb+2 rol mb+3 - //SEG381 [178] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] - //SEG382 [178] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy - //SEG383 [178] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy - //SEG384 [178] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy + //SEG385 [182] phi from mul16u::@4 to mul16u::@1 [phi:mul16u::@4->mul16u::@1] + //SEG386 [182] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@4->mul16u::@1#0] -- register_copy + //SEG387 [182] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@4->mul16u::@1#1] -- register_copy + //SEG388 [182] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@4->mul16u::@1#2] -- register_copy jmp b1 } -//SEG385 muls16s +//SEG389 muls16s muls16s: { .label m = $b .label j = 9 @@ -11729,34 +11849,34 @@ muls16s: { .label i = 9 .label a = 3 .label b = 5 - //SEG386 [187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 + //SEG390 [191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5 -- vwsz1_lt_0_then_la1 lda a+1 bmi b6 - //SEG387 muls16s::@6 - //SEG388 [188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 + //SEG391 muls16s::@6 + //SEG392 [192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4 -- vwsz1_le_0_then_la1 bmi b2 bne !+ lda a beq b2 !: - //SEG389 [189] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] - //SEG390 [189] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 + //SEG393 [193] phi from muls16s::@6 to muls16s::@3 [phi:muls16s::@6->muls16s::@3] + //SEG394 [193] phi (signed word) muls16s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#0] -- vwsz1=vbuc1 lda #<0 sta j sta j+1 - //SEG391 [189] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 + //SEG395 [193] phi (signed dword) muls16s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@3#1] -- vdsz1=vbuc1 sta m sta m+1 lda #<0>>$10 sta m+2 lda #>0>>$10 sta m+3 - //SEG392 [189] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] - //SEG393 [189] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy - //SEG394 [189] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy - //SEG395 muls16s::@3 + //SEG396 [193] phi from muls16s::@3 to muls16s::@3 [phi:muls16s::@3->muls16s::@3] + //SEG397 [193] phi (signed word) muls16s::j#2 = (signed word) muls16s::j#1 [phi:muls16s::@3->muls16s::@3#0] -- register_copy + //SEG398 [193] phi (signed dword) muls16s::m#3 = (signed dword) muls16s::m#1 [phi:muls16s::@3->muls16s::@3#1] -- register_copy + //SEG399 muls16s::@3 b3: - //SEG396 [190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 + //SEG400 [194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0 -- vdsz1=vdsz1_plus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -11776,24 +11896,24 @@ muls16s: { lda m+3 adc $ff sta m+3 - //SEG397 [191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 + //SEG401 [195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2 -- vwsz1=_inc_vwsz1 inc j bne !+ inc j+1 !: - //SEG398 [192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 + //SEG402 [196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3 -- vwsz1_neq_vwsz2_then_la1 lda j+1 cmp a+1 bne b3 lda j cmp a bne b3 - //SEG399 [193] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] - //SEG400 [193] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy + //SEG403 [197] phi from muls16s::@3 muls16s::@5 to muls16s::@4 [phi:muls16s::@3/muls16s::@5->muls16s::@4] + //SEG404 [197] phi (signed dword) muls16s::return#0 = (signed dword) muls16s::m#1 [phi:muls16s::@3/muls16s::@5->muls16s::@4#0] -- register_copy jmp b4 - //SEG401 [193] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] + //SEG405 [197] phi from muls16s::@6 to muls16s::@4 [phi:muls16s::@6->muls16s::@4] b2: - //SEG402 [193] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 + //SEG406 [197] phi (signed dword) muls16s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s::@6->muls16s::@4#0] -- vdsz1=vbuc1 lda #<0 sta return sta return+1 @@ -11801,30 +11921,30 @@ muls16s: { sta return+2 lda #>0>>$10 sta return+3 - //SEG403 muls16s::@4 + //SEG407 muls16s::@4 b4: - //SEG404 muls16s::@return - //SEG405 [194] return + //SEG408 muls16s::@return + //SEG409 [198] return rts - //SEG406 [195] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] + //SEG410 [199] phi from muls16s to muls16s::@5 [phi:muls16s->muls16s::@5] b6: - //SEG407 [195] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 + //SEG411 [199] phi (signed word) muls16s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#0] -- vwsz1=vbuc1 lda #<0 sta i sta i+1 - //SEG408 [195] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 + //SEG412 [199] phi (signed dword) muls16s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16s->muls16s::@5#1] -- vdsz1=vbuc1 sta m sta m+1 lda #<0>>$10 sta m+2 lda #>0>>$10 sta m+3 - //SEG409 [195] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] - //SEG410 [195] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy - //SEG411 [195] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy - //SEG412 muls16s::@5 + //SEG413 [199] phi from muls16s::@5 to muls16s::@5 [phi:muls16s::@5->muls16s::@5] + //SEG414 [199] phi (signed word) muls16s::i#2 = (signed word) muls16s::i#1 [phi:muls16s::@5->muls16s::@5#0] -- register_copy + //SEG415 [199] phi (signed dword) muls16s::m#5 = (signed dword) muls16s::m#2 [phi:muls16s::@5->muls16s::@5#1] -- register_copy + //SEG416 muls16s::@5 b5: - //SEG413 [196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 + //SEG417 [200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0 -- vdsz1=vdsz1_minus_vwsz2 lda b+1 ora #$7f bmi !+ @@ -11844,13 +11964,13 @@ muls16s: { lda m+3 sbc $ff sta m+3 - //SEG414 [197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 + //SEG418 [201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2 -- vwsz1=_dec_vwsz1 lda i bne !+ dec i+1 !: dec i - //SEG415 [198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 + //SEG419 [202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5 -- vwsz1_neq_vwsz2_then_la1 lda i+1 cmp a+1 bne b5 @@ -11859,7 +11979,7 @@ muls16s: { bne b5 jmp b4 } -//SEG416 mul16u_compare +//SEG420 mul16u_compare mul16u_compare: { .label a = $15 .label b = $17 @@ -11867,49 +11987,49 @@ mul16u_compare: { .label mn = $19 .label mf = $11 .label i = 2 - //SEG417 [200] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] - //SEG418 [200] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 + //SEG421 [204] phi from mul16u_compare to mul16u_compare::@1 [phi:mul16u_compare->mul16u_compare::@1] + //SEG422 [204] phi (byte) mul16u_compare::i#12 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG419 [200] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 + //SEG423 [204] phi (word) mul16u_compare::b#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#1] -- vwuz1=vbuc1 sta b sta b+1 - //SEG420 [200] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 + //SEG424 [204] phi (word) mul16u_compare::a#6 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare->mul16u_compare::@1#2] -- vwuz1=vbuc1 sta a sta a+1 - //SEG421 [200] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 + //SEG425 [204] phi (byte*) print_char_cursor#139 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare->mul16u_compare::@1#3] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG422 [200] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] - //SEG423 [200] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy - //SEG424 [200] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy - //SEG425 [200] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy - //SEG426 [200] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy - //SEG427 mul16u_compare::@1 + //SEG426 [204] phi from mul16u_compare::@10 to mul16u_compare::@1 [phi:mul16u_compare::@10->mul16u_compare::@1] + //SEG427 [204] phi (byte) mul16u_compare::i#12 = (byte) mul16u_compare::i#1 [phi:mul16u_compare::@10->mul16u_compare::@1#0] -- register_copy + //SEG428 [204] phi (word) mul16u_compare::b#6 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@10->mul16u_compare::@1#1] -- register_copy + //SEG429 [204] phi (word) mul16u_compare::a#6 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@10->mul16u_compare::@1#2] -- register_copy + //SEG430 [204] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@10->mul16u_compare::@1#3] -- register_copy + //SEG431 mul16u_compare::@1 b1: - //SEG428 [201] call print_str - //SEG429 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] - //SEG430 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy - //SEG431 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 + //SEG432 [205] call print_str + //SEG433 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] + //SEG434 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy + //SEG435 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG432 [202] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] - //SEG433 [202] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 + //SEG436 [206] phi from mul16u_compare::@1 to mul16u_compare::@2 [phi:mul16u_compare::@1->mul16u_compare::@2] + //SEG437 [206] phi (byte) mul16u_compare::j#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@1->mul16u_compare::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG434 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy - //SEG435 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy - //SEG436 [202] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] - //SEG437 [202] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy - //SEG438 [202] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy - //SEG439 [202] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy - //SEG440 mul16u_compare::@2 + //SEG438 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#6 [phi:mul16u_compare::@1->mul16u_compare::@2#1] -- register_copy + //SEG439 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#6 [phi:mul16u_compare::@1->mul16u_compare::@2#2] -- register_copy + //SEG440 [206] phi from mul16u_compare::@5 to mul16u_compare::@2 [phi:mul16u_compare::@5->mul16u_compare::@2] + //SEG441 [206] phi (byte) mul16u_compare::j#10 = (byte) mul16u_compare::j#1 [phi:mul16u_compare::@5->mul16u_compare::@2#0] -- register_copy + //SEG442 [206] phi (word) mul16u_compare::b#2 = (word) mul16u_compare::b#1 [phi:mul16u_compare::@5->mul16u_compare::@2#1] -- register_copy + //SEG443 [206] phi (word) mul16u_compare::a#2 = (word) mul16u_compare::a#1 [phi:mul16u_compare::@5->mul16u_compare::@2#2] -- register_copy + //SEG444 mul16u_compare::@2 b2: - //SEG441 [203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 + //SEG445 [207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371 -- vwuz1=vwuz1_plus_vwuc1 clc lda a adc #<$d2b @@ -11917,7 +12037,7 @@ mul16u_compare: { lda a+1 adc #>$d2b sta a+1 - //SEG442 [204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 + //SEG446 [208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093 -- vwuz1=vwuz1_plus_vwuc1 clc lda b adc #<$ffd @@ -11925,49 +12045,49 @@ mul16u_compare: { lda b+1 adc #>$ffd sta b+1 - //SEG443 [205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 + //SEG447 [209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1 // (word) muls16u::a#0 = (word) mul16u_compare::a#1 // register copy zp ZP_WORD:21 - //SEG444 [206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 + //SEG448 [210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1 // (word) muls16u::b#0 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG445 [207] call muls16u + //SEG449 [211] call muls16u jsr muls16u - //SEG446 [208] (dword) muls16u::return#2 ← (dword) muls16u::return#0 + //SEG450 [212] (dword) muls16u::return#2 ← (dword) muls16u::return#0 // (dword) muls16u::return#2 = (dword) muls16u::return#0 // register copy zp ZP_DWORD:11 - //SEG447 mul16u_compare::@13 - //SEG448 [209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 + //SEG451 mul16u_compare::@13 + //SEG452 [213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2 // (dword) mul16u_compare::ms#0 = (dword) muls16u::return#2 // register copy zp ZP_DWORD:11 - //SEG449 [210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG453 [214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u.a lda a+1 sta mul16u.a+1 - //SEG450 [211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 + //SEG454 [215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1 // (word) mul16u::b#1 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG451 [212] call mul16u - //SEG452 [176] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] - //SEG453 [176] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy - //SEG454 [176] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy + //SEG455 [216] call mul16u + //SEG456 [180] phi from mul16u_compare::@13 to mul16u [phi:mul16u_compare::@13->mul16u] + //SEG457 [180] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mul16u_compare::@13->mul16u#0] -- register_copy + //SEG458 [180] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mul16u_compare::@13->mul16u#1] -- register_copy jsr mul16u - //SEG455 [213] (dword) mul16u::return#3 ← (dword) mul16u::res#2 + //SEG459 [217] (dword) mul16u::return#3 ← (dword) mul16u::res#2 // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:25 - //SEG456 mul16u_compare::@14 - //SEG457 [214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 + //SEG460 mul16u_compare::@14 + //SEG461 [218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3 // (dword) mul16u_compare::mn#0 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:25 - //SEG458 [215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 + //SEG462 [219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1 // (word) mulf16u::a#1 = (word) mul16u_compare::a#1 // register copy zp ZP_WORD:21 - //SEG459 [216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 + //SEG463 [220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1 // (word) mulf16u::b#1 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG460 [217] call mulf16u - //SEG461 [153] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] - //SEG462 [153] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy - //SEG463 [153] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy + //SEG464 [221] call mulf16u + //SEG465 [155] phi from mul16u_compare::@14 to mulf16u [phi:mul16u_compare::@14->mulf16u] + //SEG466 [155] phi (word) mulf16u::b#2 = (word) mulf16u::b#1 [phi:mul16u_compare::@14->mulf16u#0] -- register_copy + //SEG467 [155] phi (word) mulf16u::a#2 = (word) mulf16u::a#1 [phi:mul16u_compare::@14->mulf16u#1] -- register_copy jsr mulf16u - //SEG464 [218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 + //SEG468 [222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0 // (dword) mulf16u::return#3 = (dword) mulf16u::return#0 // register copy zp ZP_DWORD:17 - //SEG465 mul16u_compare::@15 - //SEG466 [219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 + //SEG469 mul16u_compare::@15 + //SEG470 [223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3 // (dword) mul16u_compare::mf#0 = (dword) mulf16u::return#3 // register copy zp ZP_DWORD:17 - //SEG467 [220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 + //SEG471 [224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3 -- vduz1_eq_vduz2_then_la1 lda ms cmp mf bne !+ @@ -11981,19 +12101,19 @@ mul16u_compare: { cmp mf+3 beq b6 !: - //SEG468 [221] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] - //SEG469 mul16u_compare::@6 - //SEG470 [222] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] - //SEG471 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG472 [225] phi from mul16u_compare::@15 to mul16u_compare::@6 [phi:mul16u_compare::@15->mul16u_compare::@6] + //SEG473 mul16u_compare::@6 + //SEG474 [226] phi from mul16u_compare::@6 to mul16u_compare::@3 [phi:mul16u_compare::@6->mul16u_compare::@3] + //SEG475 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@6->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG472 [222] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] + //SEG476 [226] phi from mul16u_compare::@15 to mul16u_compare::@3 [phi:mul16u_compare::@15->mul16u_compare::@3] b6: - //SEG473 [222] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 + //SEG477 [226] phi (byte) mul16u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul16u_compare::@15->mul16u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG474 mul16u_compare::@3 + //SEG478 mul16u_compare::@3 b3: - //SEG475 [223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 + //SEG479 [227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22 -- vduz1_eq_vduz2_then_la1 lda ms cmp mn bne !+ @@ -12007,173 +12127,173 @@ mul16u_compare: { cmp mn+3 beq b4 !: - //SEG476 [224] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] - //SEG477 [224] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 + //SEG480 [228] phi from mul16u_compare::@3 to mul16u_compare::@4 [phi:mul16u_compare::@3->mul16u_compare::@4] + //SEG481 [228] phi (byte) mul16u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul16u_compare::@3->mul16u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG478 mul16u_compare::@4 + //SEG482 mul16u_compare::@4 b4: - //SEG479 [225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG483 [229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG480 mul16u_compare::@8 - //SEG481 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG484 mul16u_compare::@8 + //SEG485 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG482 [227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 + //SEG486 [231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1 -- vwuz1=vwuz2 lda a sta mul16u_error.a lda a+1 sta mul16u_error.a+1 - //SEG483 [228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 + //SEG487 [232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1 // (word) mul16u_error::b#0 = (word) mul16u_compare::b#1 // register copy zp ZP_WORD:23 - //SEG484 [229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 + //SEG488 [233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0 // (dword) mul16u_error::ms#0 = (dword) mul16u_compare::ms#0 // register copy zp ZP_DWORD:11 - //SEG485 [230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 + //SEG489 [234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0 // (dword) mul16u_error::mn#0 = (dword) mul16u_compare::mn#0 // register copy zp ZP_DWORD:25 - //SEG486 [231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 + //SEG490 [235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0 // (dword) mul16u_error::mf#0 = (dword) mul16u_compare::mf#0 // register copy zp ZP_DWORD:17 - //SEG487 [232] call mul16u_error - //SEG488 [245] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] + //SEG491 [236] call mul16u_error + //SEG492 [249] phi from mul16u_compare::@8 to mul16u_error [phi:mul16u_compare::@8->mul16u_error] jsr mul16u_error - //SEG489 mul16u_compare::@return + //SEG493 mul16u_compare::@return breturn: - //SEG490 [233] return + //SEG494 [237] return rts - //SEG491 mul16u_compare::@5 + //SEG495 mul16u_compare::@5 b5: - //SEG492 [234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy + //SEG496 [238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10 -- vbuyy=_inc_vbuyy iny - //SEG493 [235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 + //SEG497 [239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2 -- vbuyy_neq_vbuc1_then_la1 cpy #$10 bne b2 - //SEG494 mul16u_compare::@10 - //SEG495 [236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 + //SEG498 mul16u_compare::@10 + //SEG499 [240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12 -- vbuz1=_inc_vbuz1 inc i - //SEG496 [237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 + //SEG500 [241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1 -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$10 beq !b1+ jmp b1 !b1: - //SEG497 [238] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] - //SEG498 mul16u_compare::@11 - //SEG499 [239] call print_ln - //SEG500 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] - //SEG501 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy - //SEG502 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 + //SEG501 [242] phi from mul16u_compare::@10 to mul16u_compare::@11 [phi:mul16u_compare::@10->mul16u_compare::@11] + //SEG502 mul16u_compare::@11 + //SEG503 [243] call print_ln + //SEG504 [59] phi from mul16u_compare::@11 to print_ln [phi:mul16u_compare::@11->print_ln] + //SEG505 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@11->print_ln#0] -- register_copy + //SEG506 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_compare::@11->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG503 mul16u_compare::@17 - //SEG504 [240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG507 mul16u_compare::@17 + //SEG508 [244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG505 [241] call print_str - //SEG506 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] - //SEG507 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy - //SEG508 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 + //SEG509 [245] call print_str + //SEG510 [64] phi from mul16u_compare::@17 to print_str [phi:mul16u_compare::@17->print_str] + //SEG511 [64] phi (byte*) print_char_cursor#148 = (byte*~) print_char_cursor#192 [phi:mul16u_compare::@17->print_str#0] -- register_copy + //SEG512 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str1 [phi:mul16u_compare::@17->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG509 [242] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] - //SEG510 mul16u_compare::@18 - //SEG511 [243] call print_ln - //SEG512 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] - //SEG513 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy - //SEG514 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy + //SEG513 [246] phi from mul16u_compare::@17 to mul16u_compare::@18 [phi:mul16u_compare::@17->mul16u_compare::@18] + //SEG514 mul16u_compare::@18 + //SEG515 [247] call print_ln + //SEG516 [59] phi from mul16u_compare::@18 to print_ln [phi:mul16u_compare::@18->print_ln] + //SEG517 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#128 [phi:mul16u_compare::@18->print_ln#0] -- register_copy + //SEG518 [59] phi (byte*) print_line_cursor#43 = (byte*) print_line_cursor#1 [phi:mul16u_compare::@18->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG515 [244] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] - //SEG516 mul16u_compare::@22 - //SEG517 [224] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] - //SEG518 [224] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy + //SEG519 [248] phi from mul16u_compare::@3 to mul16u_compare::@22 [phi:mul16u_compare::@3->mul16u_compare::@22] + //SEG520 mul16u_compare::@22 + //SEG521 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] + //SEG522 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy str: .text ".@" str1: .text "word multiply results match!@" } -//SEG519 mul16u_error +//SEG523 mul16u_error mul16u_error: { .label a = 3 .label b = $17 .label ms = $b .label mn = $19 .label mf = $11 - //SEG520 [246] call print_str - //SEG521 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] - //SEG522 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy - //SEG523 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 + //SEG524 [250] call print_str + //SEG525 [64] phi from mul16u_error to print_str [phi:mul16u_error->print_str] + //SEG526 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#128 [phi:mul16u_error->print_str#0] -- register_copy + //SEG527 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str [phi:mul16u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG524 mul16u_error::@1 - //SEG525 [247] (word) print_word::w#3 ← (word) mul16u_error::a#0 + //SEG528 mul16u_error::@1 + //SEG529 [251] (word) print_word::w#3 ← (word) mul16u_error::a#0 // (word) print_word::w#3 = (word) mul16u_error::a#0 // register copy zp ZP_WORD:3 - //SEG526 [248] call print_word - //SEG527 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] - //SEG528 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy - //SEG529 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy + //SEG530 [252] call print_word + //SEG531 [109] phi from mul16u_error::@1 to print_word [phi:mul16u_error::@1->print_word] + //SEG532 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@1->print_word#0] -- register_copy + //SEG533 [109] phi (word) print_word::w#5 = (word) print_word::w#3 [phi:mul16u_error::@1->print_word#1] -- register_copy jsr print_word - //SEG530 [249] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] - //SEG531 mul16u_error::@2 - //SEG532 [250] call print_str - //SEG533 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] - //SEG534 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy - //SEG535 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG534 [253] phi from mul16u_error::@1 to mul16u_error::@2 [phi:mul16u_error::@1->mul16u_error::@2] + //SEG535 mul16u_error::@2 + //SEG536 [254] call print_str + //SEG537 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] + //SEG538 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy + //SEG539 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG536 mul16u_error::@3 - //SEG537 [251] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 + //SEG540 mul16u_error::@3 + //SEG541 [255] (word) print_word::w#4 ← (word) mul16u_error::b#0 -- vwuz1=vwuz2 lda b sta print_word.w lda b+1 sta print_word.w+1 - //SEG538 [252] call print_word - //SEG539 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] - //SEG540 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy - //SEG541 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy + //SEG542 [256] call print_word + //SEG543 [109] phi from mul16u_error::@3 to print_word [phi:mul16u_error::@3->print_word] + //SEG544 [109] phi (byte*) print_char_cursor#132 = (byte*) print_char_cursor#128 [phi:mul16u_error::@3->print_word#0] -- register_copy + //SEG545 [109] phi (word) print_word::w#5 = (word) print_word::w#4 [phi:mul16u_error::@3->print_word#1] -- register_copy jsr print_word - //SEG542 [253] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] - //SEG543 mul16u_error::@4 - //SEG544 [254] call print_str - //SEG545 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] - //SEG546 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy - //SEG547 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG546 [257] phi from mul16u_error::@3 to mul16u_error::@4 [phi:mul16u_error::@3->mul16u_error::@4] + //SEG547 mul16u_error::@4 + //SEG548 [258] call print_str + //SEG549 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] + //SEG550 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy + //SEG551 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG548 mul16u_error::@5 - //SEG549 [255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 + //SEG552 mul16u_error::@5 + //SEG553 [259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0 // (dword) print_dword::dw#1 = (dword) mul16u_error::ms#0 // register copy zp ZP_DWORD:11 - //SEG550 [256] call print_dword - //SEG551 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] - //SEG552 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy - //SEG553 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy + //SEG554 [260] call print_dword + //SEG555 [103] phi from mul16u_error::@5 to print_dword [phi:mul16u_error::@5->print_dword] + //SEG556 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@5->print_dword#0] -- register_copy + //SEG557 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#1 [phi:mul16u_error::@5->print_dword#1] -- register_copy jsr print_dword - //SEG554 [257] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] - //SEG555 mul16u_error::@6 - //SEG556 [258] call print_str - //SEG557 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] - //SEG558 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy - //SEG559 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG558 [261] phi from mul16u_error::@5 to mul16u_error::@6 [phi:mul16u_error::@5->mul16u_error::@6] + //SEG559 mul16u_error::@6 + //SEG560 [262] call print_str + //SEG561 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] + //SEG562 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy + //SEG563 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG560 mul16u_error::@7 - //SEG561 [259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 + //SEG564 mul16u_error::@7 + //SEG565 [263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0 -- vduz1=vduz2 lda mn sta print_dword.dw lda mn+1 @@ -12182,24 +12302,24 @@ mul16u_error: { sta print_dword.dw+2 lda mn+3 sta print_dword.dw+3 - //SEG562 [260] call print_dword - //SEG563 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] - //SEG564 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy - //SEG565 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy + //SEG566 [264] call print_dword + //SEG567 [103] phi from mul16u_error::@7 to print_dword [phi:mul16u_error::@7->print_dword] + //SEG568 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@7->print_dword#0] -- register_copy + //SEG569 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#2 [phi:mul16u_error::@7->print_dword#1] -- register_copy jsr print_dword - //SEG566 [261] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] - //SEG567 mul16u_error::@8 - //SEG568 [262] call print_str - //SEG569 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] - //SEG570 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy - //SEG571 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG570 [265] phi from mul16u_error::@7 to mul16u_error::@8 [phi:mul16u_error::@7->mul16u_error::@8] + //SEG571 mul16u_error::@8 + //SEG572 [266] call print_str + //SEG573 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] + //SEG574 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy + //SEG575 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG572 mul16u_error::@9 - //SEG573 [263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 + //SEG576 mul16u_error::@9 + //SEG577 [267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0 -- vduz1=vduz2 lda mf sta print_dword.dw lda mf+1 @@ -12208,24 +12328,24 @@ mul16u_error: { sta print_dword.dw+2 lda mf+3 sta print_dword.dw+3 - //SEG574 [264] call print_dword - //SEG575 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] - //SEG576 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy - //SEG577 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy + //SEG578 [268] call print_dword + //SEG579 [103] phi from mul16u_error::@9 to print_dword [phi:mul16u_error::@9->print_dword] + //SEG580 [103] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#128 [phi:mul16u_error::@9->print_dword#0] -- register_copy + //SEG581 [103] phi (dword) print_dword::dw#4 = (dword) print_dword::dw#3 [phi:mul16u_error::@9->print_dword#1] -- register_copy jsr print_dword - //SEG578 [265] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] - //SEG579 mul16u_error::@10 - //SEG580 [266] call print_ln - //SEG581 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] - //SEG582 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy - //SEG583 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG582 [269] phi from mul16u_error::@9 to mul16u_error::@10 [phi:mul16u_error::@9->mul16u_error::@10] + //SEG583 mul16u_error::@10 + //SEG584 [270] call print_ln + //SEG585 [59] phi from mul16u_error::@10 to print_ln [phi:mul16u_error::@10->print_ln] + //SEG586 [59] phi (byte*) print_char_cursor#129 = (byte*) print_char_cursor#20 [phi:mul16u_error::@10->print_ln#0] -- register_copy + //SEG587 [59] phi (byte*) print_line_cursor#43 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mul16u_error::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG584 mul16u_error::@return - //SEG585 [267] return + //SEG588 mul16u_error::@return + //SEG589 [271] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -12233,35 +12353,35 @@ mul16u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG586 muls16u +//SEG590 muls16u muls16u: { .label return = $b .label m = $b .label i = 3 .label a = $15 .label b = $17 - //SEG587 [268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 + //SEG591 [272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1 -- vwuz1_eq_0_then_la1 lda a bne !+ lda a+1 beq b3 !: - //SEG588 [269] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] - //SEG589 [269] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 + //SEG592 [273] phi from muls16u to muls16u::@2 [phi:muls16u->muls16u::@2] + //SEG593 [273] phi (word) muls16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG590 [269] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 + //SEG594 [273] phi (dword) muls16u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@2#1] -- vduz1=vbuc1 sta m sta m+1 sta m+2 sta m+3 - //SEG591 [269] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] - //SEG592 [269] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy - //SEG593 [269] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy - //SEG594 muls16u::@2 + //SEG595 [273] phi from muls16u::@2 to muls16u::@2 [phi:muls16u::@2->muls16u::@2] + //SEG596 [273] phi (word) muls16u::i#2 = (word) muls16u::i#1 [phi:muls16u::@2->muls16u::@2#0] -- register_copy + //SEG597 [273] phi (dword) muls16u::m#3 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@2#1] -- register_copy + //SEG598 muls16u::@2 b2: - //SEG595 [270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 + //SEG599 [274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0 -- vduz1=vduz1_plus_vwuz2 lda m clc adc b @@ -12275,36 +12395,36 @@ muls16u: { lda m+3 adc #0 sta m+3 - //SEG596 [271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 + //SEG600 [275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2 -- vwuz1=_inc_vwuz1 inc i bne !+ inc i+1 !: - //SEG597 [272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 + //SEG601 [276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2 -- vwuz1_neq_vwuz2_then_la1 lda i+1 cmp a+1 bne b2 lda i cmp a bne b2 - //SEG598 [273] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] - //SEG599 [273] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy + //SEG602 [277] phi from muls16u::@2 to muls16u::@1 [phi:muls16u::@2->muls16u::@1] + //SEG603 [277] phi (dword) muls16u::return#0 = (dword) muls16u::m#1 [phi:muls16u::@2->muls16u::@1#0] -- register_copy jmp b1 - //SEG600 [273] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] + //SEG604 [277] phi from muls16u to muls16u::@1 [phi:muls16u->muls16u::@1] b3: - //SEG601 [273] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 + //SEG605 [277] phi (dword) muls16u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls16u->muls16u::@1#0] -- vduz1=vbuc1 lda #0 sta return sta return+1 sta return+2 sta return+3 - //SEG602 muls16u::@1 + //SEG606 muls16u::@1 b1: - //SEG603 muls16u::@return - //SEG604 [274] return + //SEG607 muls16u::@return + //SEG608 [278] return rts } -//SEG605 mulf_init +//SEG609 mulf_init mulf_init: { .label sqr1_hi = 5 .label sqr = 7 @@ -12313,70 +12433,70 @@ mulf_init: { .label sqr2_hi = 5 .label sqr2_lo = 3 .label dir = 2 - //SEG606 [276] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG607 [276] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG610 [280] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG611 [280] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG608 [276] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG612 [280] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG609 [276] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG613 [280] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG610 [276] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG614 [280] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr sta sqr+1 - //SEG611 [276] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG615 [280] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG612 [276] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG613 [276] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG614 [276] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG615 [276] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG616 [276] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG617 [276] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG618 mulf_init::@1 + //SEG616 [280] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG617 [280] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG618 [280] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG619 [280] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG620 [280] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG621 [280] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG622 mulf_init::@1 b1: - //SEG619 [277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG623 [281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG620 [278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG624 [282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG621 [279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG625 [283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG622 mulf_init::@5 - //SEG623 [280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG626 mulf_init::@5 + //SEG627 [284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG624 [281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG628 [285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG625 [282] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] - //SEG626 [282] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG627 [282] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy - //SEG628 mulf_init::@2 + //SEG629 [286] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG630 [286] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG631 [286] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG632 mulf_init::@2 b2: - //SEG629 [283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG633 [287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG630 [284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG634 [288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG631 [285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG635 [289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG632 [286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG636 [290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG633 [287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG637 [291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG634 [288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG638 [292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12384,125 +12504,125 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG635 [289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG639 [293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG636 [290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG640 [294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@3] - //SEG638 [291] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG641 [295] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG642 [295] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG639 [291] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG643 [295] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG640 [291] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG644 [295] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG641 [291] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG645 [295] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG642 [291] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] - //SEG643 [291] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG644 [291] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG645 [291] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG646 [291] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy - //SEG647 mulf_init::@3 + //SEG646 [295] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG647 [295] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG648 [295] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG649 [295] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG650 [295] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG651 mulf_init::@3 b3: - //SEG648 [292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG652 [296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG649 [293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG653 [297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG650 [294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG654 [298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG651 [295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG655 [299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG652 [296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG656 [300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG653 [297] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] - //SEG654 [297] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG657 [301] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG658 [301] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG655 mulf_init::@4 + //SEG659 mulf_init::@4 b4: - //SEG656 [298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG660 [302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG657 [299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG661 [303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #mulf_init::@12] - //SEG664 mulf_init::@12 - //SEG665 [297] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] - //SEG666 [297] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG667 [307] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG668 mulf_init::@12 + //SEG669 [301] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG670 [301] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } -//SEG667 print_cls +//SEG671 print_cls print_cls: { .label sc = 3 - //SEG668 [305] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG669 [305] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG672 [309] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG673 [309] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG670 [305] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG671 [305] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG672 print_cls::@1 + //SEG674 [309] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG675 [309] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG676 print_cls::@1 b1: - //SEG673 [306] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG677 [310] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG674 [307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG678 [311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG675 [308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG679 [312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG676 print_cls::@return - //SEG677 [309] return + //SEG680 print_cls::@return + //SEG681 [313] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-multiply-16bit.sym b/src/test/ref/test-multiply-16bit.sym index 547e7d492..67e1193f3 100644 --- a/src/test/ref/test-multiply-16bit.sym +++ b/src/test/ref/test-multiply-16bit.sym @@ -9,9 +9,11 @@ (label) main::@3 (label) main::@return (signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b) +(word~) mul16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mul16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mul16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mul16s::$17 $17 zp ZP_WORD:9 4.0 +(word~) mul16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mul16s::$6 $6 zp ZP_WORD:9 4.0 (label) mul16s::@1 (label) mul16s::@2 @@ -20,15 +22,15 @@ (label) mul16s::@6 (label) mul16s::@return (signed word) mul16s::a -(signed word) mul16s::a#0 a zp ZP_WORD:3 7.357142857142858 +(signed word) mul16s::a#0 a zp ZP_WORD:3 6.4375 (signed word) mul16s::b -(signed word) mul16s::b#0 b zp ZP_WORD:5 9.363636363636363 +(signed word) mul16s::b#0 b zp ZP_WORD:5 8.583333333333332 (dword) mul16s::m (dword) mul16s::m#0 m zp ZP_DWORD:25 2.0 (dword) mul16s::m#1 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#2 m zp ZP_DWORD:25 4.0 (dword) mul16s::m#4 m zp ZP_DWORD:25 6.0 -(dword) mul16s::m#5 m zp ZP_DWORD:25 2.5 +(dword) mul16s::m#5 m zp ZP_DWORD:25 2.4 (signed dword) mul16s::return (signed dword) mul16s::return#0 return zp ZP_DWORD:25 34.33333333333333 (signed dword) mul16s::return#2 return zp ZP_DWORD:25 202.0 @@ -199,9 +201,11 @@ (const string) mul16u_error::str3 str3 = (string) " / normal:@" (const string) mul16u_error::str4 str4 = (string) " / fast:@" (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) +(word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mulf16s::$16 $16 zp ZP_WORD:9 4.0 (word~) mulf16s::$17 $17 zp ZP_WORD:9 4.0 +(word~) mulf16s::$5 $5 zp ZP_WORD:3 20.0 (word~) mulf16s::$6 $6 zp ZP_WORD:9 4.0 (label) mulf16s::@1 (label) mulf16s::@2 @@ -210,15 +214,15 @@ (label) mulf16s::@6 (label) mulf16s::@return (signed word) mulf16s::a -(signed word) mulf16s::a#0 a zp ZP_WORD:3 7.357142857142858 +(signed word) mulf16s::a#0 a zp ZP_WORD:3 6.4375 (signed word) mulf16s::b -(signed word) mulf16s::b#0 b zp ZP_WORD:5 9.363636363636363 +(signed word) mulf16s::b#0 b zp ZP_WORD:5 8.583333333333332 (dword) mulf16s::m (dword) mulf16s::m#0 m zp ZP_DWORD:17 2.0 (dword) mulf16s::m#1 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#2 m zp ZP_DWORD:17 4.0 (dword) mulf16s::m#4 m zp ZP_DWORD:17 6.0 -(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.5 +(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.4 (signed dword) mulf16s::return (signed dword) mulf16s::return#0 return zp ZP_DWORD:17 34.33333333333333 (signed dword) mulf16s::return#2 return zp ZP_DWORD:17 202.0 @@ -433,7 +437,7 @@ (word) print_word::w#5 w zp ZP_WORD:3 4.666666666666666 zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] -zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ] +zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ] zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ] reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ] diff --git a/src/test/ref/test-multiply-8bit.cfg b/src/test/ref/test-multiply-8bit.cfg index 8609e6276..378fac4b3 100644 --- a/src/test/ref/test-multiply-8bit.cfg +++ b/src/test/ref/test-multiply-8bit.cfg @@ -274,409 +274,413 @@ mul8s::@6: scope:[mul8s] from mul8s [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 to:mul8s::@3 mul8s::@3: scope:[mul8s] from mul8s::@6 - [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 - [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 - [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 + [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 + [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 + [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 + [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 to:mul8s::@1 mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@6 - [140] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) - [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 + [141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) + [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 to:mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 - [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 - [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 - [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 + [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 + [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 + [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 + [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 to:mul8s::@2 mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 - [145] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) + [147] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) to:mul8s::@return mul8s::@return: scope:[mul8s] from mul8s::@2 - [146] return + [148] return to:@return mul8u: scope:[mul8u] from mul8s mul8u_compare::@13 - [147] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) - [147] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) - [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [149] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) + [149] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) + [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [149] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [151] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [151] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [151] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [151] return + [153] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [157] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 mulf8s: scope:[mulf8s] from mul8s_compare::@12 - [158] phi() + [160] phi() to:mulf8s::mulf8s_prepare1 mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - [160] call mulf8u_prepare + [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + [162] call mulf8u_prepare to:mulf8s::@2 mulf8s::@2: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 - [162] call mulf8s_prepared - [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 + [164] call mulf8s_prepared + [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 to:mulf8s::@4 mulf8s::@4: scope:[mulf8s] from mulf8s::@2 - [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 to:mulf8s::@return mulf8s::@return: scope:[mulf8s] from mulf8s::@4 - [165] return + [167] return to:@return mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@2 - [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 - [167] call mulf8u_prepared - [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 + [169] call mulf8u_prepared + [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 to:mulf8s_prepared::@6 mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared - [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 + [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 - [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 + [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 + [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [174] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [177] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 + [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [179] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [183] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [180] return + [184] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@2 - [181] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) - [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 + [185] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) + [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [185] return + [189] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u - [186] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) - [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [190] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) + [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [189] return + [193] return to:@return muls8s: scope:[muls8s] from mul8s_compare::@2 - [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 + [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 to:muls8s::@6 muls8s::@6: scope:[muls8s] from muls8s - [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 + [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 to:muls8s::@3 muls8s::@3: scope:[muls8s] from muls8s::@3 muls8s::@6 - [192] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [192] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 - [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 - [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 + [196] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [196] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 + [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 + [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 to:muls8s::@4 muls8s::@4: scope:[muls8s] from muls8s::@3 muls8s::@5 muls8s::@6 - [196] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) + [200] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) to:muls8s::@return muls8s::@return: scope:[muls8s] from muls8s::@4 - [197] return + [201] return to:@return muls8s::@5: scope:[muls8s] from muls8s muls8s::@5 - [198] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) - [198] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) - [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 - [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 - [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 + [202] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) + [202] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) + [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 + [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 + [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 to:muls8s::@4 mul8u_compare: scope:[mul8u_compare] from main::@4 - [202] phi() + [206] phi() to:mul8u_compare::@1 mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@10 - [203] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) + [207] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) to:mul8u_compare::@2 mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5 - [204] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) - [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 - [207] call muls8u - [208] (word) muls8u::return#2 ← (word) muls8u::return#0 + [208] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) + [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 + [211] call muls8u + [212] (word) muls8u::return#2 ← (word) muls8u::return#0 to:mul8u_compare::@12 mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@2 - [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 - [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 - [212] call mulf8u - [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 + [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 + [216] call mulf8u + [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 to:mul8u_compare::@13 mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@12 - [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 - [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 - [217] call mul8u - [218] (word) mul8u::return#3 ← (word) mul8u::res#2 + [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 + [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 + [221] call mul8u + [222] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mul8u_compare::@14 mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@13 - [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 + [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 to:mul8u_compare::@6 mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@14 - [221] phi() + [225] phi() to:mul8u_compare::@3 mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@6 - [222] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 + [226] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 to:mul8u_compare::@4 mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@20 mul8u_compare::@3 - [224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 + [228] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 to:mul8u_compare::@8 mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@4 - [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 - [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - [232] call mul8u_error + [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 + [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + [236] call mul8u_error to:mul8u_compare::@return mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@16 mul8u_compare::@8 - [233] return + [237] return to:@return mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 - [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 - [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 + [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 + [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 to:mul8u_compare::@10 mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@5 - [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 - [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 + [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 + [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 to:mul8u_compare::@11 mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10 - [238] phi() - [239] call print_str + [242] phi() + [243] call print_str to:mul8u_compare::@16 mul8u_compare::@16: scope:[mul8u_compare] from mul8u_compare::@11 - [240] phi() - [241] call print_ln + [244] phi() + [245] call print_ln to:mul8u_compare::@return mul8u_compare::@20: scope:[mul8u_compare] from mul8u_compare::@3 - [242] phi() + [246] phi() to:mul8u_compare::@4 mul8u_error: scope:[mul8u_error] from mul8u_compare::@8 - [243] phi() - [244] call print_str - to:mul8u_error::@1 -mul8u_error::@1: scope:[mul8u_error] from mul8u_error - [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - [246] call print_byte - to:mul8u_error::@2 -mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 [247] phi() [248] call print_str - to:mul8u_error::@3 -mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 - [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + to:mul8u_error::@1 +mul8u_error::@1: scope:[mul8u_error] from mul8u_error + [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 [250] call print_byte - to:mul8u_error::@4 -mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 + to:mul8u_error::@2 +mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 [251] phi() [252] call print_str - to:mul8u_error::@5 -mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 - [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - [254] call print_word - to:mul8u_error::@6 -mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 + to:mul8u_error::@3 +mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 + [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + [254] call print_byte + to:mul8u_error::@4 +mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 [255] phi() [256] call print_str - to:mul8u_error::@7 -mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 - [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + to:mul8u_error::@5 +mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 + [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [258] call print_word - to:mul8u_error::@8 -mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 + to:mul8u_error::@6 +mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 [259] phi() [260] call print_str + to:mul8u_error::@7 +mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 + [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + [262] call print_word + to:mul8u_error::@8 +mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 + [263] phi() + [264] call print_str to:mul8u_error::@9 mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8 - [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 - [262] call print_word + [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 + [266] call print_word to:mul8u_error::@10 mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9 - [263] phi() - [264] call print_ln + [267] phi() + [268] call print_ln to:mul8u_error::@return mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10 - [265] return + [269] return to:@return mulf8u: scope:[mulf8u] from mul8u_compare::@12 - [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - [267] call mulf8u_prepare + [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + [271] call mulf8u_prepare to:mulf8u::@2 mulf8u::@2: scope:[mulf8u] from mulf8u - [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - [269] call mulf8u_prepared - [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + [273] call mulf8u_prepared + [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 to:mulf8u::@3 mulf8u::@3: scope:[mulf8u] from mulf8u::@2 - [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 to:mulf8u::@return mulf8u::@return: scope:[mulf8u] from mulf8u::@3 - [272] return + [276] return to:@return muls8u: scope:[muls8u] from mul8u_compare::@2 - [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 + [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 to:muls8u::@2 muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 - [274] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [274] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 - [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 - [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 + [278] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [278] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 + [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 + [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 to:muls8u::@1 muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 - [278] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) + [282] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) to:muls8u::@return muls8u::@return: scope:[muls8u] from muls8u::@1 - [279] return + [283] return to:@return mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3 - [280] phi() + [284] phi() to:mulf_tables_cmp::@1 mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2 - [281] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) - [281] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) - [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 + [285] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) + [285] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) + [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 to:mulf_tables_cmp::@3 mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [284] call print_str + [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [288] call print_str to:mulf_tables_cmp::@6 mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 - [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - [286] call print_word + [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + [290] call print_word to:mulf_tables_cmp::@7 mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6 - [287] phi() - [288] call print_str + [291] phi() + [292] call print_str to:mulf_tables_cmp::@8 mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 - [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 - [290] call print_word + [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 + [294] call print_word to:mulf_tables_cmp::@return mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@10 mulf_tables_cmp::@8 - [291] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) - [291] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) - [292] return + [295] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) + [295] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) + [296] return to:@return mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 - [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 - [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 + [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 + [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 + [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 to:mulf_tables_cmp::@5 mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2 - [296] phi() - [297] call print_str + [300] phi() + [301] call print_str to:mulf_tables_cmp::@10 mulf_tables_cmp::@10: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5 - [298] phi() - [299] call print_ln - [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 + [302] phi() + [303] call print_ln + [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 to:mulf_tables_cmp::@return mulf_init_asm: scope:[mulf_init_asm] from main::@2 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } - [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) - [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) - [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) - [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) + [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) + [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) + [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) + [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) to:mulf_init_asm::@return mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm - [306] return + [310] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [307] phi() + [311] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [308] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [308] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [308] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [308] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [308] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [312] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [312] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [312] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [312] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [312] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [314] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [314] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [318] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [318] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [323] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [323] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [323] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [323] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [327] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [327] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [327] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [327] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [329] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [333] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [334] return + [338] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [335] phi() + [339] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [336] phi() + [340] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [337] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [338] *((byte*) print_cls::sc#2) ← (byte) ' ' - [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [341] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [342] *((byte*) print_cls::sc#2) ← (byte) ' ' + [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [341] return + [345] return to:@return diff --git a/src/test/ref/test-multiply-8bit.log b/src/test/ref/test-multiply-8bit.log index 426784075..95d28e77d 100644 --- a/src/test/ref/test-multiply-8bit.log +++ b/src/test/ref/test-multiply-8bit.log @@ -302,6 +302,7 @@ mul8s::@3: scope:[mul8s] from mul8s::@6 (signed byte) mul8s::a#5 ← phi( mul8s::@6/(signed byte) mul8s::a#2 ) (signed byte) mul8s::b#3 ← phi( mul8s::@6/(signed byte) mul8s::b#4 ) (word) mul8s::m#3 ← phi( mul8s::@6/(word) mul8s::m#0 ) + (byte~) mul8s::$5 ← > (word) mul8s::m#3 (byte~) mul8s::$6 ← > (word) mul8s::m#3 (byte~) mul8s::$7 ← ((byte)) (signed byte) mul8s::b#3 (byte~) mul8s::$8 ← (byte~) mul8s::$6 - (byte~) mul8s::$7 @@ -316,6 +317,7 @@ mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 (signed byte) mul8s::a#3 ← phi( mul8s::@1/(signed byte) mul8s::a#4 ) (word) mul8s::m#5 ← phi( mul8s::@1/(word) mul8s::m#6 ) + (byte~) mul8s::$11 ← > (word) mul8s::m#5 (byte~) mul8s::$12 ← > (word) mul8s::m#5 (byte~) mul8s::$13 ← ((byte)) (signed byte) mul8s::a#3 (byte~) mul8s::$14 ← (byte~) mul8s::$12 - (byte~) mul8s::$13 @@ -504,6 +506,7 @@ mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_pr mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 (signed byte) mulf8s_prepared::b#3 ← phi( mulf8s_prepared::@6/(signed byte) mulf8s_prepared::b#4 ) (word) mulf8s_prepared::m#3 ← phi( mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#3 (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#3 (byte~) mulf8s_prepared::$7 ← (byte~) mulf8s_prepared::$5 - (byte~) mulf8s_prepared::$6 @@ -517,6 +520,7 @@ mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_pr to:mulf8s_prepared::@return mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#6 ) + (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 (byte~) mulf8s_prepared::$12 ← ((byte)) *((signed byte*) mulf8s_prepared::memA#0) (byte~) mulf8s_prepared::$13 ← (byte~) mulf8s_prepared::$11 - (byte~) mulf8s_prepared::$12 @@ -1524,6 +1528,7 @@ SYMBOL TABLE SSA (byte~) mul8s::$0 (byte~) mul8s::$1 (bool~) mul8s::$10 +(byte~) mul8s::$11 (byte~) mul8s::$12 (byte~) mul8s::$13 (byte~) mul8s::$14 @@ -1533,6 +1538,7 @@ SYMBOL TABLE SSA (word~) mul8s::$2 (bool~) mul8s::$3 (bool~) mul8s::$4 +(byte~) mul8s::$5 (byte~) mul8s::$6 (byte~) mul8s::$7 (byte~) mul8s::$8 @@ -1954,6 +1960,7 @@ SYMBOL TABLE SSA (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) (byte~) mulf8s_prepared::$0 (word~) mulf8s_prepared::$1 +(byte~) mulf8s_prepared::$10 (byte~) mulf8s_prepared::$11 (byte~) mulf8s_prepared::$12 (byte~) mulf8s_prepared::$13 @@ -1962,6 +1969,7 @@ SYMBOL TABLE SSA (byte~) mulf8s_prepared::$16 (bool~) mulf8s_prepared::$2 (bool~) mulf8s_prepared::$3 +(byte~) mulf8s_prepared::$4 (byte~) mulf8s_prepared::$5 (byte~) mulf8s_prepared::$6 (byte~) mulf8s_prepared::$7 @@ -3458,12 +3466,12 @@ Calls in [print_word] to print_byte:127 print_byte:131 Calls in [print_byte] to print_char:138 print_char:143 Calls in [print_sbyte] to print_char:152 print_byte:157 print_char:160 Calls in [mul8s] to mul8u:165 -Calls in [mulf8s] to mulf8u_prepare:203 mulf8s_prepared:205 -Calls in [mulf8s_prepared] to mulf8u_prepared:210 -Calls in [mul8u_compare] to muls8u:260 mulf8u:265 mul8u:272 mul8u_error:288 print_str:295 print_ln:298 -Calls in [mul8u_error] to print_str:303 print_byte:307 print_str:309 print_byte:313 print_str:315 print_word:319 print_str:321 print_word:325 print_str:327 print_word:331 print_ln:334 -Calls in [mulf8u] to mulf8u_prepare:338 mulf8u_prepared:341 -Calls in [mulf_tables_cmp] to print_str:359 print_word:362 print_str:364 print_word:367 print_str:375 print_ln:377 +Calls in [mulf8s] to mulf8u_prepare:205 mulf8s_prepared:207 +Calls in [mulf8s_prepared] to mulf8u_prepared:212 +Calls in [mul8u_compare] to muls8u:264 mulf8u:269 mul8u:276 mul8u_error:292 print_str:299 print_ln:302 +Calls in [mul8u_error] to print_str:307 print_byte:311 print_str:313 print_byte:317 print_str:319 print_word:323 print_str:325 print_word:329 print_str:331 print_word:335 print_ln:338 +Calls in [mulf8u] to mulf8u_prepare:342 mulf8u_prepared:345 +Calls in [mulf_tables_cmp] to print_str:363 print_word:366 print_str:368 print_word:371 print_str:379 print_ln:381 Created 63 initial phi equivalence classes Not coalescing [54] print_char_cursor#192 ← print_line_cursor#1 @@ -3509,81 +3517,81 @@ Coalesced [153] print_sbyte::b#12 ← print_sbyte::b#3 Coalesced (already) [156] print_char_cursor#217 ← print_char_cursor#18 Coalesced (already) [159] print_char_cursor#222 ← print_char_cursor#132 Coalesced [162] print_sbyte::b#11 ← print_sbyte::b#0 -Coalesced [172] mul8s::m#7 ← mul8s::m#1 -Coalesced [178] mul8s::m#10 ← mul8s::m#2 -Coalesced [181] mul8s::m#9 ← mul8s::m#5 -Coalesced [182] mul8s::m#8 ← mul8s::m#0 -Coalesced [185] mul8u::a#10 ← mul8u::a#6 -Coalesced [186] mul8u::mb#6 ← mul8u::mb#0 -Coalesced [193] mul8u::res#9 ← mul8u::res#1 -Coalesced [197] mul8u::a#11 ← mul8u::a#0 -Coalesced [198] mul8u::res#7 ← mul8u::res#6 -Coalesced [199] mul8u::mb#7 ← mul8u::mb#1 -Coalesced (already) [200] mul8u::res#8 ← mul8u::res#2 -Coalesced [217] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 -Coalesced [223] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 -Coalesced [226] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 -Coalesced [227] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 -Coalesced [243] muls8s::return#5 ← muls8s::m#1 -Coalesced [246] muls8s::m#10 ← muls8s::m#1 -Coalesced [247] muls8s::j#3 ← muls8s::j#1 -Coalesced [252] muls8s::return#6 ← muls8s::m#2 -Coalesced [253] muls8s::m#11 ← muls8s::m#2 -Coalesced [254] muls8s::i#3 ← muls8s::i#1 -Coalesced [270] mul8u::b#4 ← mul8u::b#1 -Coalesced [271] mul8u::a#9 ← mul8u::a#2 -Coalesced [294] print_char_cursor#198 ← print_char_cursor#31 -Coalesced [296] print_line_cursor#118 ← print_line_cursor#10 -Coalesced (already) [297] print_char_cursor#189 ← print_char_cursor#132 -Coalesced [299] mul8u_compare::a#14 ← mul8u_compare::a#1 -Coalesced [300] mul8u_compare::b#12 ← mul8u_compare::b#1 -Coalesced [301] mul8u_compare::ok#5 ← mul8u_compare::ok#4 -Coalesced (already) [302] print_char_cursor#199 ← print_char_cursor#31 -Coalesced [305] print_byte::b#7 ← print_byte::b#3 -Coalesced (already) [306] print_char_cursor#215 ← print_char_cursor#132 -Coalesced (already) [308] print_char_cursor#200 ← print_char_cursor#18 -Coalesced [311] print_byte::b#8 ← print_byte::b#4 -Coalesced (already) [312] print_char_cursor#216 ← print_char_cursor#132 -Coalesced (already) [314] print_char_cursor#201 ← print_char_cursor#18 -Coalesced [317] print_word::w#8 ← print_word::w#3 -Coalesced (already) [318] print_char_cursor#209 ← print_char_cursor#132 -Coalesced (already) [320] print_char_cursor#202 ← print_char_cursor#18 -Coalesced [323] print_word::w#9 ← print_word::w#4 -Coalesced (already) [324] print_char_cursor#210 ← print_char_cursor#132 -Coalesced (already) [326] print_char_cursor#203 ← print_char_cursor#18 -Coalesced [329] print_word::w#10 ← print_word::w#5 -Coalesced (already) [330] print_char_cursor#211 ← print_char_cursor#132 -Coalesced (already) [332] print_line_cursor#119 ← print_line_cursor#10 -Coalesced (already) [333] print_char_cursor#190 ← print_char_cursor#18 -Coalesced [337] mulf8u_prepare::a#4 ← mulf8u_prepare::a#0 -Coalesced [340] mulf8u_prepared::b#4 ← mulf8u_prepared::b#0 -Coalesced [350] muls8u::return#5 ← muls8u::m#1 -Coalesced [353] muls8u::m#5 ← muls8u::m#1 -Coalesced [354] muls8u::i#3 ← muls8u::i#1 -Coalesced (already) [361] print_char_cursor#212 ← print_char_cursor#132 -Coalesced (already) [363] print_char_cursor#204 ← print_char_cursor#18 -Coalesced (already) [366] print_char_cursor#213 ← print_char_cursor#132 -Coalesced (already) [368] print_char_cursor#226 ← print_char_cursor#18 -Coalesced (already) [376] print_char_cursor#191 ← print_char_cursor#132 -Not coalescing [378] print_char_cursor#225 ← print_line_cursor#1 -Coalesced (already) [379] print_line_cursor#122 ← print_line_cursor#1 -Coalesced [380] mulf_tables_cmp::kc_sqr#8 ← mulf_tables_cmp::kc_sqr#1 -Coalesced [381] mulf_tables_cmp::asm_sqr#6 ← mulf_tables_cmp::asm_sqr#1 -Coalesced [395] mulf_init::sqr#8 ← mulf_init::sqr#2 -Coalesced [396] mulf_init::x_2#7 ← mulf_init::x_2#1 -Coalesced [419] mulf_init::x_255#5 ← mulf_init::x_255#1 -Coalesced [420] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 -Coalesced [421] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 -Coalesced [422] mulf_init::dir#4 ← mulf_init::dir#3 -Coalesced (already) [423] mulf_init::dir#5 ← mulf_init::dir#2 -Coalesced [424] mulf_init::c#5 ← mulf_init::c#1 -Coalesced [425] mulf_init::sqr#6 ← mulf_init::sqr#1 -Coalesced [426] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 -Coalesced [427] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 -Coalesced [428] mulf_init::x_2#5 ← mulf_init::x_2#2 -Coalesced [429] mulf_init::sqr#7 ← mulf_init::sqr#4 -Coalesced (already) [430] mulf_init::x_2#6 ← mulf_init::x_2#3 -Coalesced [437] print_cls::sc#3 ← print_cls::sc#1 +Coalesced [173] mul8s::m#7 ← mul8s::m#1 +Coalesced [180] mul8s::m#10 ← mul8s::m#2 +Coalesced [183] mul8s::m#9 ← mul8s::m#5 +Coalesced [184] mul8s::m#8 ← mul8s::m#0 +Coalesced [187] mul8u::a#10 ← mul8u::a#6 +Coalesced [188] mul8u::mb#6 ← mul8u::mb#0 +Coalesced [195] mul8u::res#9 ← mul8u::res#1 +Coalesced [199] mul8u::a#11 ← mul8u::a#0 +Coalesced [200] mul8u::res#7 ← mul8u::res#6 +Coalesced [201] mul8u::mb#7 ← mul8u::mb#1 +Coalesced (already) [202] mul8u::res#8 ← mul8u::res#2 +Coalesced [220] mulf8s_prepared::m#7 ← mulf8s_prepared::m#1 +Coalesced [227] mulf8s_prepared::m#10 ← mulf8s_prepared::m#2 +Coalesced [230] mulf8s_prepared::m#9 ← mulf8s_prepared::m#5 +Coalesced [231] mulf8s_prepared::m#8 ← mulf8s_prepared::m#0 +Coalesced [247] muls8s::return#5 ← muls8s::m#1 +Coalesced [250] muls8s::m#10 ← muls8s::m#1 +Coalesced [251] muls8s::j#3 ← muls8s::j#1 +Coalesced [256] muls8s::return#6 ← muls8s::m#2 +Coalesced [257] muls8s::m#11 ← muls8s::m#2 +Coalesced [258] muls8s::i#3 ← muls8s::i#1 +Coalesced [274] mul8u::b#4 ← mul8u::b#1 +Coalesced [275] mul8u::a#9 ← mul8u::a#2 +Coalesced [298] print_char_cursor#198 ← print_char_cursor#31 +Coalesced [300] print_line_cursor#118 ← print_line_cursor#10 +Coalesced (already) [301] print_char_cursor#189 ← print_char_cursor#132 +Coalesced [303] mul8u_compare::a#14 ← mul8u_compare::a#1 +Coalesced [304] mul8u_compare::b#12 ← mul8u_compare::b#1 +Coalesced [305] mul8u_compare::ok#5 ← mul8u_compare::ok#4 +Coalesced (already) [306] print_char_cursor#199 ← print_char_cursor#31 +Coalesced [309] print_byte::b#7 ← print_byte::b#3 +Coalesced (already) [310] print_char_cursor#215 ← print_char_cursor#132 +Coalesced (already) [312] print_char_cursor#200 ← print_char_cursor#18 +Coalesced [315] print_byte::b#8 ← print_byte::b#4 +Coalesced (already) [316] print_char_cursor#216 ← print_char_cursor#132 +Coalesced (already) [318] print_char_cursor#201 ← print_char_cursor#18 +Coalesced [321] print_word::w#8 ← print_word::w#3 +Coalesced (already) [322] print_char_cursor#209 ← print_char_cursor#132 +Coalesced (already) [324] print_char_cursor#202 ← print_char_cursor#18 +Coalesced [327] print_word::w#9 ← print_word::w#4 +Coalesced (already) [328] print_char_cursor#210 ← print_char_cursor#132 +Coalesced (already) [330] print_char_cursor#203 ← print_char_cursor#18 +Coalesced [333] print_word::w#10 ← print_word::w#5 +Coalesced (already) [334] print_char_cursor#211 ← print_char_cursor#132 +Coalesced (already) [336] print_line_cursor#119 ← print_line_cursor#10 +Coalesced (already) [337] print_char_cursor#190 ← print_char_cursor#18 +Coalesced [341] mulf8u_prepare::a#4 ← mulf8u_prepare::a#0 +Coalesced [344] mulf8u_prepared::b#4 ← mulf8u_prepared::b#0 +Coalesced [354] muls8u::return#5 ← muls8u::m#1 +Coalesced [357] muls8u::m#5 ← muls8u::m#1 +Coalesced [358] muls8u::i#3 ← muls8u::i#1 +Coalesced (already) [365] print_char_cursor#212 ← print_char_cursor#132 +Coalesced (already) [367] print_char_cursor#204 ← print_char_cursor#18 +Coalesced (already) [370] print_char_cursor#213 ← print_char_cursor#132 +Coalesced (already) [372] print_char_cursor#226 ← print_char_cursor#18 +Coalesced (already) [380] print_char_cursor#191 ← print_char_cursor#132 +Not coalescing [382] print_char_cursor#225 ← print_line_cursor#1 +Coalesced (already) [383] print_line_cursor#122 ← print_line_cursor#1 +Coalesced [384] mulf_tables_cmp::kc_sqr#8 ← mulf_tables_cmp::kc_sqr#1 +Coalesced [385] mulf_tables_cmp::asm_sqr#6 ← mulf_tables_cmp::asm_sqr#1 +Coalesced [399] mulf_init::sqr#8 ← mulf_init::sqr#2 +Coalesced [400] mulf_init::x_2#7 ← mulf_init::x_2#1 +Coalesced [423] mulf_init::x_255#5 ← mulf_init::x_255#1 +Coalesced [424] mulf_init::sqr2_lo#5 ← mulf_init::sqr2_lo#1 +Coalesced [425] mulf_init::sqr2_hi#5 ← mulf_init::sqr2_hi#1 +Coalesced [426] mulf_init::dir#4 ← mulf_init::dir#3 +Coalesced (already) [427] mulf_init::dir#5 ← mulf_init::dir#2 +Coalesced [428] mulf_init::c#5 ← mulf_init::c#1 +Coalesced [429] mulf_init::sqr#6 ← mulf_init::sqr#1 +Coalesced [430] mulf_init::sqr1_lo#5 ← mulf_init::sqr1_lo#1 +Coalesced [431] mulf_init::sqr1_hi#5 ← mulf_init::sqr1_hi#1 +Coalesced [432] mulf_init::x_2#5 ← mulf_init::x_2#2 +Coalesced [433] mulf_init::sqr#7 ← mulf_init::sqr#4 +Coalesced (already) [434] mulf_init::x_2#6 ← mulf_init::x_2#3 +Coalesced [441] print_cls::sc#3 ← print_cls::sc#1 Coalesced down to 39 phi equivalence classes Culled Empty Block (label) mul8s_compare::@7 Culled Empty Block (label) mul8s_compare::@18 @@ -3927,411 +3935,415 @@ mul8s::@6: scope:[mul8s] from mul8s [136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1 to:mul8s::@3 mul8s::@3: scope:[mul8s] from mul8s::@6 - [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 - [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 - [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 + [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 + [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 + [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 + [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 to:mul8s::@1 mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@6 - [140] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) - [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 + [141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 ) + [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 to:mul8s::@4 mul8s::@4: scope:[mul8s] from mul8s::@1 - [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 - [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 - [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 + [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 + [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 + [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 + [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 to:mul8s::@2 mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4 - [145] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) + [147] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 ) to:mul8s::@return mul8s::@return: scope:[mul8s] from mul8s::@2 - [146] return + [148] return to:@return mul8u: scope:[mul8u] from mul8s mul8u_compare::@13 - [147] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) - [147] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) - [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 + [149] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 ) + [149] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 ) + [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 to:mul8u::@1 mul8u::@1: scope:[mul8u] from mul8u mul8u::@4 - [149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) - [149] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) - [149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) - [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 + [151] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 ) + [151] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 ) + [151] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 ) + [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 to:mul8u::@return mul8u::@return: scope:[mul8u] from mul8u::@1 - [151] return + [153] return to:@return mul8u::@2: scope:[mul8u] from mul8u::@1 - [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 + [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 to:mul8u::@7 mul8u::@7: scope:[mul8u] from mul8u::@2 - [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 + [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 to:mul8u::@4 mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7 - [155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) - [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 - [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 + [157] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 ) + [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 + [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 to:mul8u::@1 mulf8s: scope:[mulf8s] from mul8s_compare::@12 - [158] phi() + [160] phi() to:mulf8s::mulf8s_prepare1 mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s - [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 - [160] call mulf8u_prepare + [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + [162] call mulf8u_prepare to:mulf8s::@2 mulf8s::@2: scope:[mulf8s] from mulf8s::mulf8s_prepare1 - [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 - [162] call mulf8s_prepared - [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 + [164] call mulf8s_prepared + [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 to:mulf8s::@4 mulf8s::@4: scope:[mulf8s] from mulf8s::@2 - [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 to:mulf8s::@return mulf8s::@return: scope:[mulf8s] from mulf8s::@4 - [165] return + [167] return to:@return mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@2 - [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 - [167] call mulf8u_prepared - [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 + [169] call mulf8u_prepared + [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 to:mulf8s_prepared::@6 mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared - [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 - [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 + [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 to:mulf8s_prepared::@3 mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6 - [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 - [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 - [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 + [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 + [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 + [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 + [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 to:mulf8s_prepared::@1 mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6 - [174] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) - [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 + [177] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 ) + [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 to:mulf8s_prepared::@4 mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1 - [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 - [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) - [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 + [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 + [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 + [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) + [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 to:mulf8s_prepared::@2 mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4 - [179] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) + [183] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 ) to:mulf8s_prepared::@return mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2 - [180] return + [184] return to:@return mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@2 - [181] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) - [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 + [185] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 ) + [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } - [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) + [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) to:mulf8u_prepared::@return mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared - [185] return + [189] return to:@return mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u - [186] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) - [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 + [190] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 ) + [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } to:mulf8u_prepare::@return mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare - [189] return + [193] return to:@return muls8s: scope:[muls8s] from mul8s_compare::@2 - [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 + [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 to:muls8s::@6 muls8s::@6: scope:[muls8s] from muls8s - [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 + [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 to:muls8s::@3 muls8s::@3: scope:[muls8s] from muls8s::@3 muls8s::@6 - [192] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [192] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 - [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 - [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 + [196] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [196] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 + [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 + [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 to:muls8s::@4 muls8s::@4: scope:[muls8s] from muls8s::@3 muls8s::@5 muls8s::@6 - [196] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) + [200] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 ) to:muls8s::@return muls8s::@return: scope:[muls8s] from muls8s::@4 - [197] return + [201] return to:@return muls8s::@5: scope:[muls8s] from muls8s muls8s::@5 - [198] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) - [198] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) - [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 - [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 - [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 + [202] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 ) + [202] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 ) + [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 + [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 + [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 to:muls8s::@4 mul8u_compare: scope:[mul8u_compare] from main::@4 - [202] phi() + [206] phi() to:mul8u_compare::@1 mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@10 - [203] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) + [207] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 ) to:mul8u_compare::@2 mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5 - [204] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) - [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 - [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 - [207] call muls8u - [208] (word) muls8u::return#2 ← (word) muls8u::return#0 + [208] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 ) + [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 + [211] call muls8u + [212] (word) muls8u::return#2 ← (word) muls8u::return#0 to:mul8u_compare::@12 mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@2 - [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 - [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 - [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 - [212] call mulf8u - [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 + [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 + [216] call mulf8u + [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 to:mul8u_compare::@13 mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@12 - [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 - [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 - [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 - [217] call mul8u - [218] (word) mul8u::return#3 ← (word) mul8u::res#2 + [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 + [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 + [221] call mul8u + [222] (word) mul8u::return#3 ← (word) mul8u::res#2 to:mul8u_compare::@14 mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@13 - [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 - [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 + [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 to:mul8u_compare::@6 mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@14 - [221] phi() + [225] phi() to:mul8u_compare::@3 mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@6 - [222] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 + [226] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 to:mul8u_compare::@4 mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@20 mul8u_compare::@3 - [224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 + [228] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 to:mul8u_compare::@8 mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@4 - [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 - [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 - [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 - [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 - [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 - [232] call mul8u_error + [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 + [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + [236] call mul8u_error to:mul8u_compare::@return mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@16 mul8u_compare::@8 - [233] return + [237] return to:@return mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4 - [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 - [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 + [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 + [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 to:mul8u_compare::@10 mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@5 - [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 - [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 + [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 + [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 to:mul8u_compare::@11 mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10 - [238] phi() - [239] call print_str + [242] phi() + [243] call print_str to:mul8u_compare::@16 mul8u_compare::@16: scope:[mul8u_compare] from mul8u_compare::@11 - [240] phi() - [241] call print_ln + [244] phi() + [245] call print_ln to:mul8u_compare::@return mul8u_compare::@20: scope:[mul8u_compare] from mul8u_compare::@3 - [242] phi() + [246] phi() to:mul8u_compare::@4 mul8u_error: scope:[mul8u_error] from mul8u_compare::@8 - [243] phi() - [244] call print_str - to:mul8u_error::@1 -mul8u_error::@1: scope:[mul8u_error] from mul8u_error - [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 - [246] call print_byte - to:mul8u_error::@2 -mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 [247] phi() [248] call print_str - to:mul8u_error::@3 -mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 - [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + to:mul8u_error::@1 +mul8u_error::@1: scope:[mul8u_error] from mul8u_error + [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 [250] call print_byte - to:mul8u_error::@4 -mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 + to:mul8u_error::@2 +mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1 [251] phi() [252] call print_str - to:mul8u_error::@5 -mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 - [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 - [254] call print_word - to:mul8u_error::@6 -mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 + to:mul8u_error::@3 +mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2 + [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 + [254] call print_byte + to:mul8u_error::@4 +mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3 [255] phi() [256] call print_str - to:mul8u_error::@7 -mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 - [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + to:mul8u_error::@5 +mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4 + [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [258] call print_word - to:mul8u_error::@8 -mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 + to:mul8u_error::@6 +mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5 [259] phi() [260] call print_str + to:mul8u_error::@7 +mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6 + [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 + [262] call print_word + to:mul8u_error::@8 +mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7 + [263] phi() + [264] call print_str to:mul8u_error::@9 mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8 - [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 - [262] call print_word + [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 + [266] call print_word to:mul8u_error::@10 mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9 - [263] phi() - [264] call print_ln + [267] phi() + [268] call print_ln to:mul8u_error::@return mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10 - [265] return + [269] return to:@return mulf8u: scope:[mulf8u] from mul8u_compare::@12 - [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 - [267] call mulf8u_prepare + [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + [271] call mulf8u_prepare to:mulf8u::@2 mulf8u::@2: scope:[mulf8u] from mulf8u - [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 - [269] call mulf8u_prepared - [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + [273] call mulf8u_prepared + [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 to:mulf8u::@3 mulf8u::@3: scope:[mulf8u] from mulf8u::@2 - [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 to:mulf8u::@return mulf8u::@return: scope:[mulf8u] from mulf8u::@3 - [272] return + [276] return to:@return muls8u: scope:[muls8u] from mul8u_compare::@2 - [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 + [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 to:muls8u::@2 muls8u::@2: scope:[muls8u] from muls8u muls8u::@2 - [274] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [274] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) - [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 - [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 - [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 + [278] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [278] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 ) + [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 + [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 + [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 to:muls8u::@1 muls8u::@1: scope:[muls8u] from muls8u muls8u::@2 - [278] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) + [282] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 ) to:muls8u::@return muls8u::@return: scope:[muls8u] from muls8u::@1 - [279] return + [283] return to:@return mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3 - [280] phi() + [284] phi() to:mulf_tables_cmp::@1 mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2 - [281] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) - [281] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) - [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 + [285] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 ) + [285] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 ) + [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 to:mulf_tables_cmp::@3 mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 - [284] call print_str + [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 + [288] call print_str to:mulf_tables_cmp::@6 mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3 - [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 - [286] call print_word + [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + [290] call print_word to:mulf_tables_cmp::@7 mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6 - [287] phi() - [288] call print_str + [291] phi() + [292] call print_str to:mulf_tables_cmp::@8 mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7 - [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 - [290] call print_word + [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 + [294] call print_word to:mulf_tables_cmp::@return mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@10 mulf_tables_cmp::@8 - [291] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) - [291] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) - [292] return + [295] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 ) + [295] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 ) + [296] return to:@return mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1 - [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 - [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 - [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 + [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 + [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 + [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 to:mulf_tables_cmp::@5 mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2 - [296] phi() - [297] call print_str + [300] phi() + [301] call print_str to:mulf_tables_cmp::@10 mulf_tables_cmp::@10: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5 - [298] phi() - [299] call print_ln - [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 + [302] phi() + [303] call print_ln + [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 to:mulf_tables_cmp::@return mulf_init_asm: scope:[mulf_init_asm] from main::@2 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } - [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) - [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) - [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) - [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) + [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) + [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) + [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) + [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) to:mulf_init_asm::@return mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm - [306] return + [310] return to:@return mulf_init: scope:[mulf_init] from main::@1 - [307] phi() + [311] phi() to:mulf_init::@1 mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2 - [308] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) - [308] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) - [308] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) - [308] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) - [308] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) - [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 - [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 - [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 + [312] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 ) + [312] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 ) + [312] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 ) + [312] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 ) + [312] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 ) + [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 + [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 + [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 to:mulf_init::@5 mulf_init::@5: scope:[mulf_init] from mulf_init::@1 - [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 - [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 + [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 + [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 to:mulf_init::@2 mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5 - [314] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) - [314] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) - [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 - [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 - [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 - [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 - [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 - [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 - [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 - [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 + [318] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 ) + [318] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 ) + [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 + [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 + [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 + [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 + [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 + [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 + [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 + [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 to:mulf_init::@3 mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4 - [323] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) - [323] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) - [323] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) - [323] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) - [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) - [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 - [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 - [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 + [327] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 ) + [327] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 ) + [327] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 ) + [327] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) + [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) + [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 + [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 + [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 to:mulf_init::@4 mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3 - [329] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) - [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 - [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 + [333] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 ) + [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 + [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 to:mulf_init::@8 mulf_init::@8: scope:[mulf_init] from mulf_init::@4 - [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) - [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) + [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) + [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) to:mulf_init::@return mulf_init::@return: scope:[mulf_init] from mulf_init::@8 - [334] return + [338] return to:@return mulf_init::@12: scope:[mulf_init] from mulf_init::@3 - [335] phi() + [339] phi() to:mulf_init::@4 print_cls: scope:[print_cls] from main - [336] phi() + [340] phi() to:print_cls::@1 print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 - [337] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) - [338] *((byte*) print_cls::sc#2) ← (byte) ' ' - [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 - [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 + [341] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + [342] *((byte*) print_cls::sc#2) ← (byte) ' ' + [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 to:print_cls::@return print_cls::@return: scope:[print_cls] from print_cls::@1 - [341] return + [345] return to:@return @@ -4339,20 +4351,22 @@ VARIABLE REGISTER WEIGHTS (byte*) BGCOL (void()) main() (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) +(byte~) mul8s::$11 20.0 (byte~) mul8s::$12 4.0 (byte~) mul8s::$16 4.0 (byte~) mul8s::$17 4.0 +(byte~) mul8s::$5 20.0 (byte~) mul8s::$6 4.0 (signed byte) mul8s::a -(signed byte) mul8s::a#0 7.357142857142858 +(signed byte) mul8s::a#0 6.4375 (signed byte) mul8s::b -(signed byte) mul8s::b#0 9.363636363636363 +(signed byte) mul8s::b#0 8.583333333333332 (word) mul8s::m (word) mul8s::m#0 2.0 (word) mul8s::m#1 4.0 (word) mul8s::m#2 4.0 (word) mul8s::m#4 1.3333333333333333 -(word) mul8s::m#5 2.5 +(word) mul8s::m#5 2.4 (signed word) mul8s::return (signed word) mul8s::return#2 202.0 (void()) mul8s_compare() @@ -4447,18 +4461,20 @@ VARIABLE REGISTER WEIGHTS (signed word) mulf8s::return#0 34.33333333333333 (signed word) mulf8s::return#2 202.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) +(byte~) mulf8s_prepared::$10 20.0 (byte~) mulf8s_prepared::$11 4.0 (byte~) mulf8s_prepared::$15 4.0 (byte~) mulf8s_prepared::$16 4.0 +(byte~) mulf8s_prepared::$4 20.0 (byte~) mulf8s_prepared::$5 4.0 (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 0.4 +(signed byte) mulf8s_prepared::b#0 0.36363636363636365 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 2.0 (word) mulf8s_prepared::m#1 4.0 (word) mulf8s_prepared::m#2 4.0 (word) mulf8s_prepared::m#4 1.3333333333333333 -(word) mulf8s_prepared::m#5 2.5 +(word) mulf8s_prepared::m#5 2.4 (signed byte*) mulf8s_prepared::memA (signed word) mulf8s_prepared::return (signed word) mulf8s_prepared::return#2 4.0 @@ -4698,8 +4714,10 @@ Added variable mul8s_error::mf#0 to zero page equivalence class [ mul8s_error::m Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Added variable mul8u::return#2 to zero page equivalence class [ mul8u::return#2 ] +Added variable mul8s::$5 to zero page equivalence class [ mul8s::$5 ] Added variable mul8s::$6 to zero page equivalence class [ mul8s::$6 ] Added variable mul8s::$16 to zero page equivalence class [ mul8s::$16 ] +Added variable mul8s::$11 to zero page equivalence class [ mul8s::$11 ] Added variable mul8s::$12 to zero page equivalence class [ mul8s::$12 ] Added variable mul8s::$17 to zero page equivalence class [ mul8s::$17 ] Added variable mul8u::$1 to zero page equivalence class [ mul8u::$1 ] @@ -4707,8 +4725,10 @@ Added variable mulf8s_prepared::b#0 to zero page equivalence class [ mulf8s_prep Added variable mulf8s_prepared::return#2 to zero page equivalence class [ mulf8s_prepared::return#2 ] Added variable mulf8s::return#0 to zero page equivalence class [ mulf8s::return#0 ] Added variable mulf8u_prepared::return#3 to zero page equivalence class [ mulf8u_prepared::return#3 ] +Added variable mulf8s_prepared::$4 to zero page equivalence class [ mulf8s_prepared::$4 ] Added variable mulf8s_prepared::$5 to zero page equivalence class [ mulf8s_prepared::$5 ] Added variable mulf8s_prepared::$15 to zero page equivalence class [ mulf8s_prepared::$15 ] +Added variable mulf8s_prepared::$10 to zero page equivalence class [ mulf8s_prepared::$10 ] Added variable mulf8s_prepared::$11 to zero page equivalence class [ mulf8s_prepared::$11 ] Added variable mulf8s_prepared::$16 to zero page equivalence class [ mulf8s_prepared::$16 ] Added variable mulf8u_prepared::return#0 to zero page equivalence class [ mulf8u_prepared::return#0 ] @@ -4792,8 +4812,10 @@ Complete equivalence classes [ print_byte::$0 ] [ print_byte::$2 ] [ mul8u::return#2 ] +[ mul8s::$5 ] [ mul8s::$6 ] [ mul8s::$16 ] +[ mul8s::$11 ] [ mul8s::$12 ] [ mul8s::$17 ] [ mul8u::$1 ] @@ -4801,8 +4823,10 @@ Complete equivalence classes [ mulf8s_prepared::return#2 ] [ mulf8s::return#0 ] [ mulf8u_prepared::return#3 ] +[ mulf8s_prepared::$4 ] [ mulf8s_prepared::$5 ] [ mulf8s_prepared::$15 ] +[ mulf8s_prepared::$10 ] [ mulf8s_prepared::$11 ] [ mulf8s_prepared::$16 ] [ mulf8u_prepared::return#0 ] @@ -4885,40 +4909,44 @@ Allocated zp ZP_WORD:84 [ mul8s_error::mf#0 ] Allocated zp ZP_BYTE:86 [ print_byte::$0 ] Allocated zp ZP_BYTE:87 [ print_byte::$2 ] Allocated zp ZP_WORD:88 [ mul8u::return#2 ] -Allocated zp ZP_BYTE:90 [ mul8s::$6 ] -Allocated zp ZP_BYTE:91 [ mul8s::$16 ] -Allocated zp ZP_BYTE:92 [ mul8s::$12 ] -Allocated zp ZP_BYTE:93 [ mul8s::$17 ] -Allocated zp ZP_BYTE:94 [ mul8u::$1 ] -Allocated zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] -Allocated zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] -Allocated zp ZP_WORD:98 [ mulf8s::return#0 ] -Allocated zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] -Allocated zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] -Allocated zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] -Allocated zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] -Allocated zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] -Allocated zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] -Allocated zp ZP_BYTE:108 [ muls8u::a#0 ] -Allocated zp ZP_BYTE:109 [ muls8u::b#0 ] -Allocated zp ZP_WORD:110 [ muls8u::return#2 ] -Allocated zp ZP_WORD:112 [ mul8u_compare::ms#0 ] -Allocated zp ZP_BYTE:114 [ mulf8u::a#0 ] -Allocated zp ZP_BYTE:115 [ mulf8u::b#0 ] -Allocated zp ZP_WORD:116 [ mulf8u::return#2 ] -Allocated zp ZP_WORD:118 [ mul8u_compare::mf#0 ] -Allocated zp ZP_WORD:120 [ mul8u::return#3 ] -Allocated zp ZP_WORD:122 [ mul8u_compare::mn#0 ] -Allocated zp ZP_BYTE:124 [ mul8u_error::a#0 ] -Allocated zp ZP_BYTE:125 [ mul8u_error::b#0 ] -Allocated zp ZP_WORD:126 [ mul8u_error::ms#0 ] -Allocated zp ZP_WORD:128 [ mul8u_error::mn#0 ] -Allocated zp ZP_WORD:130 [ mul8u_error::mf#0 ] -Allocated zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] -Allocated zp ZP_WORD:134 [ mulf8u::return#0 ] -Allocated zp ZP_BYTE:136 [ mulf_init::$2 ] -Allocated zp ZP_BYTE:137 [ mulf_init::$5 ] -Allocated zp ZP_BYTE:138 [ mulf_init::$6 ] +Allocated zp ZP_BYTE:90 [ mul8s::$5 ] +Allocated zp ZP_BYTE:91 [ mul8s::$6 ] +Allocated zp ZP_BYTE:92 [ mul8s::$16 ] +Allocated zp ZP_BYTE:93 [ mul8s::$11 ] +Allocated zp ZP_BYTE:94 [ mul8s::$12 ] +Allocated zp ZP_BYTE:95 [ mul8s::$17 ] +Allocated zp ZP_BYTE:96 [ mul8u::$1 ] +Allocated zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] +Allocated zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] +Allocated zp ZP_WORD:100 [ mulf8s::return#0 ] +Allocated zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] +Allocated zp ZP_BYTE:104 [ mulf8s_prepared::$4 ] +Allocated zp ZP_BYTE:105 [ mulf8s_prepared::$5 ] +Allocated zp ZP_BYTE:106 [ mulf8s_prepared::$15 ] +Allocated zp ZP_BYTE:107 [ mulf8s_prepared::$10 ] +Allocated zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] +Allocated zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] +Allocated zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] +Allocated zp ZP_BYTE:112 [ muls8u::a#0 ] +Allocated zp ZP_BYTE:113 [ muls8u::b#0 ] +Allocated zp ZP_WORD:114 [ muls8u::return#2 ] +Allocated zp ZP_WORD:116 [ mul8u_compare::ms#0 ] +Allocated zp ZP_BYTE:118 [ mulf8u::a#0 ] +Allocated zp ZP_BYTE:119 [ mulf8u::b#0 ] +Allocated zp ZP_WORD:120 [ mulf8u::return#2 ] +Allocated zp ZP_WORD:122 [ mul8u_compare::mf#0 ] +Allocated zp ZP_WORD:124 [ mul8u::return#3 ] +Allocated zp ZP_WORD:126 [ mul8u_compare::mn#0 ] +Allocated zp ZP_BYTE:128 [ mul8u_error::a#0 ] +Allocated zp ZP_BYTE:129 [ mul8u_error::b#0 ] +Allocated zp ZP_WORD:130 [ mul8u_error::ms#0 ] +Allocated zp ZP_WORD:132 [ mul8u_error::mn#0 ] +Allocated zp ZP_WORD:134 [ mul8u_error::mf#0 ] +Allocated zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] +Allocated zp ZP_WORD:138 [ mulf8u::return#0 ] +Allocated zp ZP_BYTE:140 [ mulf_init::$2 ] +Allocated zp ZP_BYTE:141 [ mulf_init::$5 ] +Allocated zp ZP_BYTE:142 [ mulf_init::$6 ] INITIAL ASM //SEG0 Basic Upstart @@ -4949,7 +4977,7 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls - //SEG11 [336] phi from main to print_cls [phi:main->print_cls] + //SEG11 [340] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -4958,7 +4986,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call mulf_init - //SEG15 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -4974,7 +5002,7 @@ main: { //SEG20 main::@3 b3: //SEG21 [11] call mulf_tables_cmp - //SEG22 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG22 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] mulf_tables_cmp_from_b3: jsr mulf_tables_cmp //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -4983,7 +5011,7 @@ main: { //SEG24 main::@4 b4: //SEG25 [13] call mul8u_compare - //SEG26 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG26 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] mul8u_compare_from_b4: jsr mul8u_compare //SEG27 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -5061,7 +5089,7 @@ mul8s_compare: { lda b sta mulf8s.b //SEG52 [27] call mulf8s - //SEG53 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG53 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] mulf8s_from_b12: jsr mulf8s //SEG54 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 -- vwsz1=vwsz2 @@ -5690,10 +5718,12 @@ print_sbyte: { } //SEG273 mul8s mul8s: { - .label _6 = $5a - .label _12 = $5c - .label _16 = $5b - .label _17 = $5d + .label _5 = $5a + .label _6 = $5b + .label _11 = $5d + .label _12 = $5e + .label _16 = $5c + .label _17 = $5f .label m = $12 .label a = $48 .label b = $49 @@ -5705,10 +5735,10 @@ mul8s: { lda a sta mul8u.a //SEG276 [133] call mul8u - //SEG277 [147] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG277 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //SEG278 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy - //SEG279 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy + //SEG278 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG279 [149] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy jsr mul8u //SEG280 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res @@ -5730,104 +5760,110 @@ mul8s: { jmp b3 //SEG284 mul8s::@3 b3: - //SEG285 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 + //SEG285 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 + lda m+1 + sta _5 + //SEG286 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _6 - //SEG286 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG287 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuz1=vbuz2_minus_vbuz3 lda _6 sec sbc b sta _16 - //SEG287 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG288 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG288 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG289 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] b1_from_b3: b1_from_b6: - //SEG289 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG290 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy jmp b1 - //SEG290 mul8s::@1 + //SEG291 mul8s::@1 b1: - //SEG291 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 + //SEG292 [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG292 mul8s::@4 + //SEG293 mul8s::@4 b4: - //SEG293 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 + //SEG294 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 + lda m+1 + sta _11 + //SEG295 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _12 - //SEG294 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG296 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuz1=vbuz2_minus_vbuz3 lda _12 sec sbc a sta _17 - //SEG295 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG297 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuz2 lda _17 sta m+1 - //SEG296 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG298 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG297 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG299 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG298 mul8s::@2 + //SEG300 mul8s::@2 b2: jmp breturn - //SEG299 mul8s::@return + //SEG301 mul8s::@return breturn: - //SEG300 [146] return + //SEG302 [148] return rts } -//SEG301 mul8u +//SEG303 mul8u mul8u: { - .label _1 = $5e + .label _1 = $60 .label mb = $18 .label a = $15 .label res = $16 .label return = $58 .label b = $14 - .label return_3 = $78 - //SEG302 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 + .label return_3 = $7c + //SEG304 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuz2 lda b sta mb lda #0 sta mb+1 - //SEG303 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG305 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG304 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG305 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG306 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG307 [151] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG306 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG308 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG307 mul8u::@1 + //SEG309 mul8u::@1 b1: - //SEG308 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 + //SEG310 [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b2 jmp breturn - //SEG309 mul8u::@return + //SEG311 mul8u::@return breturn: - //SEG310 [151] return + //SEG312 [153] return rts - //SEG311 mul8u::@2 + //SEG313 mul8u::@2 b2: - //SEG312 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG314 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and a sta _1 - //SEG313 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 + //SEG315 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuz1_eq_0_then_la1 lda _1 cmp #0 beq b4_from_b2 jmp b7 - //SEG314 mul8u::@7 + //SEG316 mul8u::@7 b7: - //SEG315 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG317 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -5835,168 +5871,176 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG316 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG318 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG317 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG319 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG318 mul8u::@4 + //SEG320 mul8u::@4 b4: - //SEG319 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 + //SEG321 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1 lsr a - //SEG320 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG322 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG321 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG323 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG322 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG323 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG324 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG324 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG325 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG326 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG325 mulf8s +//SEG327 mulf8s mulf8s: { - .label return = $62 + .label return = $64 .label a = $42 .label b = $43 .label return_2 = $44 jmp mulf8s_prepare1 - //SEG326 mulf8s::mulf8s_prepare1 + //SEG328 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG327 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 + //SEG329 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG328 [160] call mulf8u_prepare - //SEG329 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG330 [162] call mulf8u_prepare + //SEG331 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG330 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG332 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG331 mulf8s::@2 + //SEG333 mulf8s::@2 b2: - //SEG332 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 + //SEG334 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsz2 lda b sta mulf8s_prepared.b - //SEG333 [162] call mulf8s_prepared + //SEG335 [164] call mulf8s_prepared jsr mulf8s_prepared - //SEG334 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 + //SEG336 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 -- vwsz1=vwsz2 lda mulf8s_prepared.m sta mulf8s_prepared.return lda mulf8s_prepared.m+1 sta mulf8s_prepared.return+1 jmp b4 - //SEG335 mulf8s::@4 + //SEG337 mulf8s::@4 b4: - //SEG336 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 + //SEG338 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 -- vwsz1=vwsz2 lda mulf8s_prepared.return sta return lda mulf8s_prepared.return+1 sta return+1 jmp breturn - //SEG337 mulf8s::@return + //SEG339 mulf8s::@return breturn: - //SEG338 [165] return + //SEG340 [167] return rts } -//SEG339 mulf8s_prepared +//SEG341 mulf8s_prepared mulf8s_prepared: { .label memA = $fd - .label _5 = $66 - .label _11 = $68 - .label _15 = $67 - .label _16 = $69 + .label _4 = $68 + .label _5 = $69 + .label _10 = $6b + .label _11 = $6c + .label _15 = $6a + .label _16 = $6d .label m = $1a - .label b = $5f - .label return = $60 - //SEG340 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 + .label b = $61 + .label return = $62 + //SEG342 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG341 [167] call mulf8u_prepared - //SEG342 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG343 [169] call mulf8u_prepared + //SEG344 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG343 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG345 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG344 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG346 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 lda mulf8u_prepared.return sta mulf8u_prepared.return_3 lda mulf8u_prepared.return+1 sta mulf8u_prepared.return_3+1 jmp b6 - //SEG345 mulf8s_prepared::@6 + //SEG347 mulf8s_prepared::@6 b6: - //SEG346 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 + //SEG348 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 -- vwuz1=vwuz2 lda mulf8u_prepared.return_3 sta m lda mulf8u_prepared.return_3+1 sta m+1 - //SEG347 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG349 [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1_from_b6 jmp b3 - //SEG348 mulf8s_prepared::@3 + //SEG350 mulf8s_prepared::@3 b3: - //SEG349 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + //SEG351 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 + lda m+1 + sta _4 + //SEG352 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuz1=_hi_vwuz2 lda m+1 sta _5 - //SEG350 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 + //SEG353 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuz1=vbuz2_minus_vbuz3 lda _5 sec sbc b sta _15 - //SEG351 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG354 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuz2 lda _15 sta m+1 - //SEG352 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG355 [177] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG353 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG356 [177] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG354 mulf8s_prepared::@1 + //SEG357 mulf8s_prepared::@1 b1: - //SEG355 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG358 [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG356 mulf8s_prepared::@4 + //SEG359 mulf8s_prepared::@4 b4: - //SEG357 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + //SEG360 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 + lda m+1 + sta _10 + //SEG361 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuz1=_hi_vwuz2 lda m+1 sta _11 - //SEG358 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 + //SEG362 [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuz1=vbuz2_minus__deref_pbuc1 lda _11 sec sbc memA sta _16 - //SEG359 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 + //SEG363 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuz2 lda _16 sta m+1 - //SEG360 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG364 [183] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG361 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG365 [183] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG362 mulf8s_prepared::@2 + //SEG366 mulf8s_prepared::@2 b2: jmp breturn - //SEG363 mulf8s_prepared::@return + //SEG367 mulf8s_prepared::@return breturn: - //SEG364 [180] return + //SEG368 [184] return rts } -//SEG365 mulf8u_prepared +//SEG369 mulf8u_prepared mulf8u_prepared: { .label resL = $fe .label memB = $ff - .label return = $6a + .label return = $6e .label b = $1c - .label return_2 = $84 - .label return_3 = $64 - //SEG366 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 + .label return_2 = $88 + .label return_3 = $66 + //SEG370 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuz1 lda b sta memB - //SEG367 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG371 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -6009,25 +6053,25 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG368 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG372 [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG369 mulf8u_prepared::@return + //SEG373 mulf8u_prepared::@return breturn: - //SEG370 [185] return + //SEG374 [189] return rts } -//SEG371 mulf8u_prepare +//SEG375 mulf8u_prepare mulf8u_prepare: { .label memA = $fd .label a = $1d - //SEG372 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 + //SEG376 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuz1 lda a sta memA - //SEG373 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG377 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -6035,12 +6079,12 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG374 mulf8u_prepare::@return + //SEG378 mulf8u_prepare::@return breturn: - //SEG375 [189] return + //SEG379 [193] return rts } -//SEG376 muls8s +//SEG380 muls8s muls8s: { .label m = $1f .label j = $1e @@ -6049,35 +6093,35 @@ muls8s: { .label a = $3c .label b = $3d .label return_2 = $3e - //SEG377 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 + //SEG381 [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 lda a bmi b5_from_muls8s jmp b6 - //SEG378 muls8s::@6 + //SEG382 muls8s::@6 b6: - //SEG379 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 + //SEG383 [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b4_from_b6 - //SEG380 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG384 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] b3_from_b6: - //SEG381 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsz1=vbuc1 + //SEG385 [196] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsz1=vbuc1 lda #0 sta j - //SEG382 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 + //SEG386 [196] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b3 - //SEG383 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG387 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //SEG384 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG385 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG388 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG389 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG386 muls8s::@3 + //SEG390 muls8s::@3 b3: - //SEG387 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 + //SEG391 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsz2 lda b sta $fe ora #$7f @@ -6092,51 +6136,51 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG388 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 + //SEG392 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsz1=_inc_vbsz1 inc j - //SEG389 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 + //SEG393 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsz1_neq_vbsz2_then_la1 lda j cmp a bne b3_from_b3 - //SEG390 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG394 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] b4_from_b3: b4_from_b5: - //SEG391 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG395 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG392 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG396 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b4_from_b6: - //SEG393 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 + //SEG397 [200] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b4 - //SEG394 muls8s::@4 + //SEG398 muls8s::@4 b4: jmp breturn - //SEG395 muls8s::@return + //SEG399 muls8s::@return breturn: - //SEG396 [197] return + //SEG400 [201] return rts - //SEG397 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG401 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b5_from_muls8s: - //SEG398 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsz1=vbuc1 + //SEG402 [202] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsz1=vbuc1 lda #0 sta i - //SEG399 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 + //SEG403 [202] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b5 - //SEG400 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG404 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //SEG401 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy - //SEG402 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG405 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG406 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG403 muls8s::@5 + //SEG407 muls8s::@5 b5: - //SEG404 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 + //SEG408 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsz2 lda b sta $fe ora #$7f @@ -6151,114 +6195,114 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG405 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 + //SEG409 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsz1=_dec_vbsz1 dec i - //SEG406 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsz1_neq_vbsz2_then_la1 + //SEG410 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsz1_neq_vbsz2_then_la1 lda i cmp a bne b5_from_b5 jmp b4_from_b5 } -//SEG407 mul8u_compare +//SEG411 mul8u_compare mul8u_compare: { - .label ms = $70 - .label mf = $76 - .label mn = $7a + .label ms = $74 + .label mf = $7a + .label mn = $7e .label b = $23 .label a = $22 .label ok = $24 - //SEG408 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG412 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //SEG409 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG413 [207] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a jmp b1 - //SEG410 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG414 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] b1_from_b10: - //SEG411 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG415 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG412 mul8u_compare::@1 + //SEG416 mul8u_compare::@1 b1: - //SEG413 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG417 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //SEG414 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG418 [208] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG415 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG419 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG416 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG420 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG417 mul8u_compare::@2 + //SEG421 mul8u_compare::@2 b2: - //SEG418 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG422 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta muls8u.a - //SEG419 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG423 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta muls8u.b - //SEG420 [207] call muls8u + //SEG424 [211] call muls8u jsr muls8u - //SEG421 [208] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 + //SEG425 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 -- vwuz1=vwuz2 lda muls8u.return sta muls8u.return_2 lda muls8u.return+1 sta muls8u.return_2+1 jmp b12 - //SEG422 mul8u_compare::@12 + //SEG426 mul8u_compare::@12 b12: - //SEG423 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 + //SEG427 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 -- vwuz1=vwuz2 lda muls8u.return_2 sta ms lda muls8u.return_2+1 sta ms+1 - //SEG424 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG428 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mulf8u.a - //SEG425 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG429 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mulf8u.b - //SEG426 [212] call mulf8u + //SEG430 [216] call mulf8u jsr mulf8u - //SEG427 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 + //SEG431 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 -- vwuz1=vwuz2 lda mulf8u.return sta mulf8u.return_2 lda mulf8u.return+1 sta mulf8u.return_2+1 jmp b13 - //SEG428 mul8u_compare::@13 + //SEG432 mul8u_compare::@13 b13: - //SEG429 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 + //SEG433 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 -- vwuz1=vwuz2 lda mulf8u.return_2 sta mf lda mulf8u.return_2+1 sta mf+1 - //SEG430 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG434 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u.a - //SEG431 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG435 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u.b - //SEG432 [217] call mul8u - //SEG433 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG436 [221] call mul8u + //SEG437 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] mul8u_from_b13: - //SEG434 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy - //SEG435 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy + //SEG438 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG439 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG436 [218] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 + //SEG440 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 -- vwuz1=vwuz2 lda mul8u.res sta mul8u.return_3 lda mul8u.res+1 sta mul8u.return_3+1 jmp b14 - //SEG437 mul8u_compare::@14 + //SEG441 mul8u_compare::@14 b14: - //SEG438 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 + //SEG442 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 -- vwuz1=vwuz2 lda mul8u.return_3 sta mn lda mul8u.return_3+1 sta mn+1 - //SEG439 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG443 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -6266,26 +6310,26 @@ mul8u_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG440 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG444 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] b6_from_b14: jmp b6 - //SEG441 mul8u_compare::@6 + //SEG445 mul8u_compare::@6 b6: - //SEG442 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG446 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //SEG443 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 + //SEG447 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b3 - //SEG444 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG448 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b3_from_b14: - //SEG445 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuz1=vbuc1 + //SEG449 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuz1=vbuc1 lda #1 sta ok jmp b3 - //SEG446 mul8u_compare::@3 + //SEG450 mul8u_compare::@3 b3: - //SEG447 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG451 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -6293,267 +6337,267 @@ mul8u_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG448 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG452 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //SEG449 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 + //SEG453 [228] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuz1=vbuc1 lda #0 sta ok jmp b4 - //SEG450 mul8u_compare::@4 + //SEG454 mul8u_compare::@4 b4: - //SEG451 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 + //SEG455 [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuz1_neq_0_then_la1 lda ok cmp #0 bne b5 jmp b8 - //SEG452 mul8u_compare::@8 + //SEG456 mul8u_compare::@8 b8: - //SEG453 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG457 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG454 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 + //SEG458 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuz1=vbuz2 lda a sta mul8u_error.a - //SEG455 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 + //SEG459 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 -- vbuz1=vbuz2 lda b sta mul8u_error.b - //SEG456 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 + //SEG460 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 -- vwuz1=vwuz2 lda ms sta mul8u_error.ms lda ms+1 sta mul8u_error.ms+1 - //SEG457 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 + //SEG461 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 -- vwuz1=vwuz2 lda mn sta mul8u_error.mn lda mn+1 sta mul8u_error.mn+1 - //SEG458 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 + //SEG462 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 -- vwuz1=vwuz2 lda mf sta mul8u_error.mf lda mf+1 sta mul8u_error.mf+1 - //SEG459 [232] call mul8u_error - //SEG460 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG463 [236] call mul8u_error + //SEG464 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] mul8u_error_from_b8: jsr mul8u_error jmp breturn - //SEG461 mul8u_compare::@return + //SEG465 mul8u_compare::@return breturn: - //SEG462 [233] return + //SEG466 [237] return rts - //SEG463 mul8u_compare::@5 + //SEG467 mul8u_compare::@5 b5: - //SEG464 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG468 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG465 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG469 [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2_from_b5 jmp b10 - //SEG466 mul8u_compare::@10 + //SEG470 mul8u_compare::@10 b10: - //SEG467 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG471 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG468 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG472 [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1_from_b10 - //SEG469 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG473 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] b11_from_b10: jmp b11 - //SEG470 mul8u_compare::@11 + //SEG474 mul8u_compare::@11 b11: - //SEG471 [239] call print_str - //SEG472 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG475 [243] call print_str + //SEG476 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] print_str_from_b11: - //SEG473 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy - //SEG474 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG477 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG478 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG475 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG479 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] b16_from_b11: jmp b16 - //SEG476 mul8u_compare::@16 + //SEG480 mul8u_compare::@16 b16: - //SEG477 [241] call print_ln - //SEG478 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG481 [245] call print_ln + //SEG482 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] print_ln_from_b16: - //SEG479 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy - //SEG480 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy + //SEG483 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG484 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG481 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG485 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] b20_from_b3: jmp b20 - //SEG482 mul8u_compare::@20 + //SEG486 mul8u_compare::@20 b20: - //SEG483 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG487 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] b4_from_b20: - //SEG484 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG488 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy jmp b4 str: .text "multiply results match!@" } -//SEG485 mul8u_error +//SEG489 mul8u_error mul8u_error: { - .label a = $7c - .label b = $7d - .label ms = $7e - .label mn = $80 - .label mf = $82 - //SEG486 [244] call print_str - //SEG487 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + .label a = $80 + .label b = $81 + .label ms = $82 + .label mn = $84 + .label mf = $86 + //SEG490 [248] call print_str + //SEG491 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //SEG488 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG489 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG492 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG493 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG490 mul8u_error::@1 + //SEG494 mul8u_error::@1 b1: - //SEG491 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 + //SEG495 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 -- vbuz1=vbuz2 lda a sta print_byte.b - //SEG492 [246] call print_byte - //SEG493 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG496 [250] call print_byte + //SEG497 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //SEG494 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG495 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG498 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG499 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG496 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG500 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG497 mul8u_error::@2 + //SEG501 mul8u_error::@2 b2: - //SEG498 [248] call print_str - //SEG499 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG502 [252] call print_str + //SEG503 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //SEG500 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG501 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG504 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG505 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG502 mul8u_error::@3 + //SEG506 mul8u_error::@3 b3: - //SEG503 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 + //SEG507 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuz1=vbuz2 lda b sta print_byte.b - //SEG504 [250] call print_byte - //SEG505 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG508 [254] call print_byte + //SEG509 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //SEG506 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG507 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG510 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG511 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG508 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG512 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG509 mul8u_error::@4 + //SEG513 mul8u_error::@4 b4: - //SEG510 [252] call print_str - //SEG511 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG514 [256] call print_str + //SEG515 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //SEG512 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG513 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG516 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG517 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG514 mul8u_error::@5 + //SEG518 mul8u_error::@5 b5: - //SEG515 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 + //SEG519 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 -- vwuz1=vwuz2 lda ms sta print_word.w lda ms+1 sta print_word.w+1 - //SEG516 [254] call print_word - //SEG517 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG520 [258] call print_word + //SEG521 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //SEG518 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG519 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG522 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG523 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG520 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG524 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG521 mul8u_error::@6 + //SEG525 mul8u_error::@6 b6: - //SEG522 [256] call print_str - //SEG523 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG526 [260] call print_str + //SEG527 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //SEG524 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG525 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG528 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG529 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG526 mul8u_error::@7 + //SEG530 mul8u_error::@7 b7: - //SEG527 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG531 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG528 [258] call print_word - //SEG529 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG532 [262] call print_word + //SEG533 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //SEG530 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG531 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG534 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG535 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG532 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG536 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG533 mul8u_error::@8 + //SEG537 mul8u_error::@8 b8: - //SEG534 [260] call print_str - //SEG535 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG538 [264] call print_str + //SEG539 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //SEG536 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG537 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG540 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG541 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG538 mul8u_error::@9 + //SEG542 mul8u_error::@9 b9: - //SEG539 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG543 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG540 [262] call print_word - //SEG541 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG544 [266] call print_word + //SEG545 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //SEG542 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG543 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG546 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG547 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG544 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG548 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG545 mul8u_error::@10 + //SEG549 mul8u_error::@10 b10: - //SEG546 [264] call print_ln - //SEG547 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG550 [268] call print_ln + //SEG551 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //SEG548 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG549 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG552 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG553 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG550 mul8u_error::@return + //SEG554 mul8u_error::@return breturn: - //SEG551 [265] return + //SEG555 [269] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -6561,81 +6605,81 @@ mul8u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG552 mulf8u +//SEG556 mulf8u mulf8u: { - .label return = $86 - .label a = $72 - .label b = $73 - .label return_2 = $74 - //SEG553 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 + .label return = $8a + .label a = $76 + .label b = $77 + .label return_2 = $78 + //SEG557 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 -- vbuz1=vbuz2 lda a sta mulf8u_prepare.a - //SEG554 [267] call mulf8u_prepare - //SEG555 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG558 [271] call mulf8u_prepare + //SEG559 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG556 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG560 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG557 mulf8u::@2 + //SEG561 mulf8u::@2 b2: - //SEG558 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 + //SEG562 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 -- vbuz1=vbuz2 lda b sta mulf8u_prepared.b - //SEG559 [269] call mulf8u_prepared - //SEG560 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG563 [273] call mulf8u_prepared + //SEG564 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] mulf8u_prepared_from_b2: - //SEG561 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG565 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG562 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 + //SEG566 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 -- vwuz1=vwuz2 lda mulf8u_prepared.return sta mulf8u_prepared.return_2 lda mulf8u_prepared.return+1 sta mulf8u_prepared.return_2+1 jmp b3 - //SEG563 mulf8u::@3 + //SEG567 mulf8u::@3 b3: - //SEG564 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 + //SEG568 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 -- vwuz1=vwuz2 lda mulf8u_prepared.return_2 sta return lda mulf8u_prepared.return_2+1 sta return+1 jmp breturn - //SEG565 mulf8u::@return + //SEG569 mulf8u::@return breturn: - //SEG566 [272] return + //SEG570 [276] return rts } -//SEG567 muls8u +//SEG571 muls8u muls8u: { .label return = $26 .label m = $26 .label i = $25 - .label a = $6c - .label b = $6d - .label return_2 = $6e - //SEG568 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + .label a = $70 + .label b = $71 + .label return_2 = $72 + //SEG572 [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b1_from_muls8u - //SEG569 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG573 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG570 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 + //SEG574 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG571 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG575 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b2 - //SEG572 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG576 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG573 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG574 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG577 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG578 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG575 muls8u::@2 + //SEG579 muls8u::@2 b2: - //SEG576 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 + //SEG580 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuz2 lda b clc adc m @@ -6643,151 +6687,151 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG577 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 + //SEG581 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuz1=_inc_vbuz1 inc i - //SEG578 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 + //SEG582 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuz1_neq_vbuz2_then_la1 lda i cmp a bne b2_from_b2 - //SEG579 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG583 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG580 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG584 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG581 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG585 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG582 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG586 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b1 - //SEG583 muls8u::@1 + //SEG587 muls8u::@1 b1: jmp breturn - //SEG584 muls8u::@return + //SEG588 muls8u::@return breturn: - //SEG585 [279] return + //SEG589 [283] return rts } -//SEG586 mulf_tables_cmp +//SEG590 mulf_tables_cmp mulf_tables_cmp: { .label asm_sqr = $2a .label kc_sqr = $28 - //SEG587 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG591 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //SEG588 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG592 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG589 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG593 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG590 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG594 [285] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //SEG591 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG592 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG595 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG596 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy jmp b1 - //SEG593 mulf_tables_cmp::@1 + //SEG597 mulf_tables_cmp::@1 b1: - //SEG594 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG598 [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG595 mulf_tables_cmp::@3 + //SEG599 mulf_tables_cmp::@3 b3: - //SEG596 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG600 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG597 [284] call print_str - //SEG598 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG601 [288] call print_str + //SEG602 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //SEG599 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG603 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG600 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG604 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG601 mulf_tables_cmp::@6 + //SEG605 mulf_tables_cmp::@6 b6: - //SEG602 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 + //SEG606 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 -- vwuz1=vwuz2 lda asm_sqr sta print_word.w lda asm_sqr+1 sta print_word.w+1 - //SEG603 [286] call print_word - //SEG604 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG607 [290] call print_word + //SEG608 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] print_word_from_b6: - //SEG605 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy - //SEG606 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy + //SEG609 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG610 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy jsr print_word - //SEG607 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG611 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] b7_from_b6: jmp b7 - //SEG608 mulf_tables_cmp::@7 + //SEG612 mulf_tables_cmp::@7 b7: - //SEG609 [288] call print_str - //SEG610 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG613 [292] call print_str + //SEG614 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] print_str_from_b7: - //SEG611 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy - //SEG612 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 + //SEG615 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG616 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b8 - //SEG613 mulf_tables_cmp::@8 + //SEG617 mulf_tables_cmp::@8 b8: - //SEG614 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG618 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG615 [290] call print_word - //SEG616 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG619 [294] call print_word + //SEG620 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] print_word_from_b8: - //SEG617 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy - //SEG618 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy + //SEG621 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG622 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy jsr print_word - //SEG619 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] + //SEG623 [295] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] breturn_from_b8: - //SEG620 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG624 [295] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG621 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy + //SEG625 [295] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy jmp breturn - //SEG622 mulf_tables_cmp::@return + //SEG626 mulf_tables_cmp::@return breturn: - //SEG623 [292] return + //SEG627 [296] return rts - //SEG624 mulf_tables_cmp::@2 + //SEG628 mulf_tables_cmp::@2 b2: - //SEG625 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG629 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG626 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG630 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG627 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG631 [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 @@ -6796,58 +6840,58 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] + //SEG632 [300] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5] b5_from_b2: jmp b5 - //SEG629 mulf_tables_cmp::@5 + //SEG633 mulf_tables_cmp::@5 b5: - //SEG630 [297] call print_str - //SEG631 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG634 [301] call print_str + //SEG635 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] print_str_from_b5: - //SEG632 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 + //SEG636 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG633 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG637 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG634 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG638 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] b10_from_b5: jmp b10 - //SEG635 mulf_tables_cmp::@10 + //SEG639 mulf_tables_cmp::@10 b10: - //SEG636 [299] call print_ln - //SEG637 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG640 [303] call print_ln + //SEG641 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] print_ln_from_b10: - //SEG638 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy - //SEG639 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG642 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG643 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG640 [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG644 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG641 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] + //SEG645 [295] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] breturn_from_b10: - //SEG642 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy - //SEG643 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy + //SEG646 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG647 [295] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG644 mulf_init_asm +//SEG648 mulf_init_asm mulf_init_asm: { .label mem = $ff - //SEG645 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG649 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -6886,29 +6930,29 @@ mulf_init_asm: { dey inx bne !- - //SEG646 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG647 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG648 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG649 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem jmp breturn - //SEG650 mulf_init_asm::@return + //SEG654 mulf_init_asm::@return breturn: - //SEG651 [306] return + //SEG655 [310] return rts } -//SEG652 mulf_init +//SEG656 mulf_init mulf_init: { - .label _2 = $88 - .label _5 = $89 - .label _6 = $8a + .label _2 = $8c + .label _5 = $8d + .label _6 = $8e .label c = $2c .label sqr1_hi = $2f .label sqr = $32 @@ -6918,88 +6962,88 @@ mulf_init: { .label x_255 = $34 .label sqr2_lo = $35 .label dir = $39 - //SEG653 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG657 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG654 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG658 [312] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG655 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG659 [312] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG656 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG660 [312] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG657 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG661 [312] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG658 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 + //SEG662 [312] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuz1=vbuc1 lda #0 sta c jmp b1 - //SEG659 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG663 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG660 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG661 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG662 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG663 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG664 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG664 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG665 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG666 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG667 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG668 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG665 mulf_init::@1 + //SEG669 mulf_init::@1 b1: - //SEG666 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 + //SEG670 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuz1=_inc_vbuz1 inc c - //SEG667 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 + //SEG671 [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_band_vbuc1 lda #1 and c sta _2 - //SEG668 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 + //SEG672 [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuz1_neq_0_then_la1 lda _2 cmp #0 bne b2_from_b1 jmp b5 - //SEG669 mulf_init::@5 + //SEG673 mulf_init::@5 b5: - //SEG670 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG674 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG671 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG675 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG672 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG676 [318] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG673 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG674 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG677 [318] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG678 [318] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG675 mulf_init::@2 + //SEG679 mulf_init::@2 b2: - //SEG676 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 + //SEG680 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuz1=_lo_vwuz2 lda sqr sta _5 - //SEG677 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 + //SEG681 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuz2 lda _5 ldy #0 sta (sqr1_lo),y - //SEG678 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 + //SEG682 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuz1=_hi_vwuz2 lda sqr+1 sta _6 - //SEG679 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 + //SEG683 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuz2 lda _6 ldy #0 sta (sqr1_hi),y - //SEG680 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG684 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG681 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG685 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -7007,84 +7051,84 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG682 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG686 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG683 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG687 [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG688 [327] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG685 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG689 [327] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG686 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG690 [327] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG687 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG691 [327] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG688 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 + //SEG692 [327] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuz1=vbuc1 lda #-1 sta x_255 jmp b3 - //SEG689 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG693 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG690 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG691 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG692 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG693 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG694 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG695 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG696 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG697 [327] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG694 mulf_init::@3 + //SEG698 mulf_init::@3 b3: - //SEG695 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG699 [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_lo,y ldy #0 sta (sqr2_lo),y - //SEG696 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG700 [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy x_255 lda mulf_sqr1_hi,y ldy #0 sta (sqr2_hi),y - //SEG697 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG701 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG698 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 + //SEG702 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuz1=vbuz1_plus_vbuz2 lda x_255 clc adc dir sta x_255 - //SEG699 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 + //SEG703 [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuz1_neq_0_then_la1 lda x_255 cmp #0 bne b12_from_b3 - //SEG700 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG704 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG701 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG705 [333] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG702 mulf_init::@4 + //SEG706 mulf_init::@4 b4: - //SEG703 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG707 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG704 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG708 [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -7092,56 +7136,56 @@ mulf_init: { cmp #mulf_init::@12] + //SEG714 [339] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG711 mulf_init::@12 + //SEG715 mulf_init::@12 b12: - //SEG712 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG716 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG713 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG717 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG714 print_cls +//SEG718 print_cls print_cls: { .label sc = $3a - //SEG715 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG719 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG716 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG720 [341] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG717 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG721 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG718 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG722 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG719 print_cls::@1 + //SEG723 print_cls::@1 b1: - //SEG720 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG724 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG721 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG725 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG722 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG726 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -7149,9 +7193,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG723 print_cls::@return + //SEG727 print_cls::@return breturn: - //SEG724 [341] return + //SEG728 [345] return rts } print_hextab: .text "0123456789abcdef" @@ -7192,16 +7236,16 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ m Statement [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_char_cursor#192 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#192 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:78 [ mul8s_error::a#0 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:79 [ mul8s_error::b#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:124 [ mul8u_error::a#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:124 [ mul8u_error::a#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:125 [ mul8u_error::b#0 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:125 [ mul8u_error::b#0 ] -Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:128 [ mul8u_error::a#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:128 [ mul8u_error::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:129 [ mul8u_error::b#0 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:129 [ mul8u_error::b#0 ] +Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y Statement [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ) always clobbers reg byte a Statement [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ) always clobbers reg byte a Statement [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ) always clobbers reg byte a @@ -7209,12 +7253,12 @@ Statement [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf# Statement [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a Statement [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a Statement [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#13 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a +Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a +Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a +Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] -Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a +Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] Statement [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a @@ -7222,98 +7266,102 @@ Statement [134] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8 Removing always clobbered register reg byte a as potential for zp ZP_BYTE:72 [ mul8s::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:73 [ mul8s::b#0 ] Statement [135] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a -Statement [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a -Statement [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a +Statement [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a +Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a +Statement [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 ] ) always clobbers reg byte a +Statement [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a +Statement [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a +Statement [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a -Statement [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] -Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a +Statement [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a +Statement [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] +Statement [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a +Statement [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] -Removing always clobbered register reg byte x as potential for zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] +Removing always clobbered register reg byte x as potential for zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:167 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164::mulf8u_prepared:169 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:216::mulf8u_prepared:273 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:67 [ mulf8s::b#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:115 [ mulf8u::b#0 ] -Statement [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:119 [ mulf8u::b#0 ] +Statement [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:60 [ muls8s::a#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:61 [ muls8s::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ] -Statement [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a +Statement [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ] -Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a -Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a -Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a -Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a -Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a +Statement [212] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a +Statement [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a +Statement [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a +Statement [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a +Statement [222] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a +Statement [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] -Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a -Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a -Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a -Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:108 [ muls8u::a#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:109 [ muls8u::b#0 ] +Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a +Statement [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a +Statement [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a +Statement [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:211 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:112 [ muls8u::a#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:113 [ muls8u::b#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] -Statement [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a -Statement [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a -Statement [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a -Statement [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a +Statement [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a +Statement [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a +Statement [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a +Statement [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a +Statement [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] -Statement [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Statement [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] -Statement [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [338] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [342] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [23] (signed word) muls8s::return#2 ← (signed word) muls8s::return#0 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 muls8s::return#2 print_line_cursor#1 ] ) always clobbers reg byte a Statement [24] (signed word) mul8s_compare::ms#0 ← (signed word) muls8s::return#2 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 ] ) always clobbers reg byte a @@ -7328,10 +7376,10 @@ Statement [44] (signed word) mul8s_error::ms#0 ← (signed word) mul8s_compare:: Statement [45] (signed word) mul8s_error::mn#0 ← (signed word) mul8s_compare::mn#0 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_compare::mf#0 mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [46] (signed word) mul8s_error::mf#0 ← (signed word) mul8s_compare::mf#0 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [53] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1 [ print_char_cursor#192 print_line_cursor#1 ] ( main:2::mul8s_compare:15 [ print_char_cursor#192 print_line_cursor#1 ] ) always clobbers reg byte a -Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:241 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:232::print_ln:264 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:299 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a -Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y -Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:239 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:244 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:248 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:252 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:256 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:232::print_str:260 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:284 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:297 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [60] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#23 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [61] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#133) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#133 ] ( main:2::mul8s_compare:15::print_ln:56 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8s_compare:15::mul8s_error:47::print_ln:91 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::print_ln:245 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mul8u_compare:13::mul8u_error:236::print_ln:268 [ print_line_cursor#1 print_char_cursor#133 ] main:2::mulf_tables_cmp:11::print_ln:303 [ print_line_cursor#1 print_char_cursor#133 ] ) always clobbers reg byte a +Statement [65] if(*((byte*) print_str::str#16)!=(byte) '@') goto print_str::@2 [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y +Statement [67] *((byte*) print_char_cursor#132) ← *((byte*) print_str::str#16) [ print_char_cursor#132 print_str::str#16 ] ( main:2::mul8s_compare:15::print_str:54 [ print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:71 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:75 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:79 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:83 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8s_compare:15::mul8s_error:47::print_str:87 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::print_str:243 [ print_line_cursor#10 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:248 [ print_line_cursor#10 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:252 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:256 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:260 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mul8u_compare:13::mul8u_error:236::print_str:264 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:288 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:292 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#132 print_str::str#16 ] main:2::mulf_tables_cmp:11::print_str:301 [ print_char_cursor#132 print_str::str#16 ] ) always clobbers reg byte a reg byte y Statement [70] (byte*~) print_char_cursor#193 ← (byte*) print_line_cursor#1 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::a#0 mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#193 ] ) always clobbers reg byte a Statement [80] (signed word) print_sword::w#1 ← (signed word) mul8s_error::ms#0 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#1 ] ) always clobbers reg byte a Statement [84] (signed word) print_sword::w#2 ← (signed word) mul8s_error::mn#0 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ( main:2::mul8s_compare:15::mul8s_error:47 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#2 ] ) always clobbers reg byte a @@ -7339,79 +7387,83 @@ Statement [88] (signed word) print_sword::w#3 ← (signed word) mul8s_error::mf# Statement [94] if((signed word) print_sword::w#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#132 print_sword::w#4 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#132 print_sword::w#4 ] ) always clobbers reg byte a Statement [97] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#4 [ print_char_cursor#18 print_sword::w#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#18 print_sword::w#0 ] ) always clobbers reg byte a Statement [99] (word~) print_word::w#13 ← (word)(signed word) print_sword::w#5 [ print_char_cursor#134 print_word::w#13 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89 [ print_line_cursor#1 print_char_cursor#134 print_word::w#13 ] ) always clobbers reg byte a -Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a -Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:286 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a -Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a -Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a -Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:254::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:286::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:246::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:232::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y +Statement [103] (byte) print_byte::b#1 ← > (word) print_word::w#6 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#139 print_byte::b#1 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_word::w#6 print_char_cursor#139 print_byte::b#1 ] ) always clobbers reg byte a +Statement [105] (byte) print_byte::b#2 ← < (word) print_word::w#6 [ print_char_cursor#18 print_byte::b#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100 [ print_line_cursor#1 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::b#2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266 [ print_line_cursor#10 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:290 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::b#2 ] main:2::mulf_tables_cmp:11::print_word:294 [ print_char_cursor#18 print_byte::b#2 ] ) always clobbers reg byte a +Statement [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#140 print_byte::$0 ] ) always clobbers reg byte a +Statement [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#18 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104 [ print_word::w#6 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106 [ print_line_cursor#10 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#18 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106 [ print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#18 print_byte::$2 ] ) always clobbers reg byte a +Statement [117] *((byte*) print_char_cursor#84) ← (byte) print_char::ch#5 [ print_char_cursor#84 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_char:96 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_char:96 [ mul8s_error::mf#0 print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_char:96 [ print_line_cursor#1 print_sword::w#4 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:111 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:111 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:111 [ print_word::w#6 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:111 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:111 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:111 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:111 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:111 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:111 [ print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:111 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:111 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:111 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:111 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104::print_char:114 [ print_line_cursor#1 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:104::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:104::print_char:114 [ print_line_cursor#10 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:104::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:104::print_char:114 [ print_word::w#6 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106::print_char:114 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106::print_char:114 [ print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:258::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:262::print_byte:106::print_char:114 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_word:266::print_byte:106::print_char:114 [ print_line_cursor#10 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:290::print_byte:106::print_char:114 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#84 ] main:2::mulf_tables_cmp:11::print_word:294::print_byte:106::print_char:114 [ print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:126::print_char:114 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:126::print_char:114 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:250::print_char:114 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8u_compare:13::mul8u_error:236::print_byte:254::print_char:114 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:123 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:123 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_char:129 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_char:129 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_sbyte::b#3 print_char_cursor#84 ] ) always clobbers reg byte y Statement [130] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#3 [ print_char_cursor#18 print_sbyte::b#0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#18 print_sbyte::b#0 ] ) always clobbers reg byte a Statement [134] (word) mul8u::return#2 ← (word) mul8u::res#2 [ mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::return#2 ] ) always clobbers reg byte a Statement [135] (word) mul8s::m#0 ← (word) mul8u::return#2 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a -Statement [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a -Statement [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a -Statement [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a -Statement [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a -Statement [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a -Statement [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a -Statement [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:217 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a -Statement [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a -Statement [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a -Statement [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a -Statement [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a -Statement [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a -Statement [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a -Statement [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a -Statement [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a +Statement [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 ] ) always clobbers reg byte a +Statement [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$6 ] ) always clobbers reg byte a +Statement [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 [ mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8s::m#0 mul8s::$16 ] ) always clobbers reg byte a +Statement [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 ] ) always clobbers reg byte a +Statement [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 [ mul8s::a#0 mul8s::m#5 mul8s::$12 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::m#5 mul8s::$12 ] ) always clobbers reg byte a +Statement [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 [ mul8s::m#5 mul8s::$17 ] ( main:2::mul8s_compare:15::mul8s:32 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::m#5 mul8s::$17 ] ) always clobbers reg byte a +Statement [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 [ mul8u::a#6 mul8u::mb#0 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#6 mul8u::mb#0 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#6 mul8u::mb#0 ] ) always clobbers reg byte a +Statement [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::res#2 mul8u::a#3 mul8u::mb#2 mul8u::$1 ] ) always clobbers reg byte a +Statement [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ( main:2::mul8s_compare:15::mul8s:32::mul8u:133 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 mul8s_compare::mf#0 print_line_cursor#1 mul8s::a#0 mul8s::b#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] main:2::mul8u_compare:13::mul8u:221 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::a#3 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a +Statement [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 [ mulf8s_prepared::return#2 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::return#2 ] ) always clobbers reg byte a +Statement [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 [ mulf8s::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s::return#0 ] ) always clobbers reg byte a +Statement [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 [ mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#3 ] ) always clobbers reg byte a +Statement [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 ] ) always clobbers reg byte a +Statement [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$5 ] ) always clobbers reg byte a +Statement [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 [ mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8s_prepared::m#0 mulf8s_prepared::$15 ] ) always clobbers reg byte a +Statement [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 ] ) always clobbers reg byte a +Statement [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 [ mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$11 ] ) always clobbers reg byte a +Statement [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) [ mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::m#5 mulf8s_prepared::$16 ] ) always clobbers reg byte a Statement asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } always clobbers reg byte a reg byte x -Statement [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:162::mulf8u_prepared:167 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:212::mulf8u_prepared:269 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a +Statement [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) [ mulf8u_prepared::return#0 ] ( main:2::mul8s_compare:15::mulf8s:27::mulf8s_prepared:164::mulf8u_prepared:169 [ mul8s_compare::a#7 mul8s_compare::b#10 mul8s_compare::ms#0 print_line_cursor#1 mulf8s_prepared::b#0 mulf8u_prepared::return#0 ] main:2::mul8u_compare:13::mulf8u:216::mulf8u_prepared:273 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#0 ] ) always clobbers reg byte a Statement asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } always clobbers reg byte a -Statement [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a -Statement [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a -Statement [208] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a -Statement [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a -Statement [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a -Statement [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a -Statement [218] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a -Statement [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a -Statement [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a -Statement [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a -Statement [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a -Statement [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a -Statement [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:232 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a -Statement [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a -Statement [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:212 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a -Statement [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:207 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a -Statement [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y -Statement [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a -Statement [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a -Statement [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a -Statement [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a -Statement [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a +Statement [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::j#2 muls8s::m#1 ] ) always clobbers reg byte a +Statement [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 [ muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ( main:2::mul8s_compare:15::muls8s:22 [ mul8s_compare::a#7 mul8s_compare::b#10 print_line_cursor#1 muls8s::a#0 muls8s::b#0 muls8s::m#2 muls8s::i#2 ] ) always clobbers reg byte a +Statement [212] (word) muls8u::return#2 ← (word) muls8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::return#2 ] ) always clobbers reg byte a +Statement [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 ] ) always clobbers reg byte a +Statement [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#2 ] ) always clobbers reg byte a +Statement [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 ] ) always clobbers reg byte a +Statement [222] (word) mul8u::return#3 ← (word) mul8u::res#2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u::return#3 ] ) always clobbers reg byte a +Statement [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_compare::ok#4 ] ) always clobbers reg byte a +Statement [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mul8u_compare::mf#0 mul8u_compare::mn#0 ] ) always clobbers reg byte a +Statement [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_compare::mn#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 ] ) always clobbers reg byte a +Statement [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::mf#0 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 ] ) always clobbers reg byte a +Statement [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13 [ print_line_cursor#10 print_char_cursor#31 mul8u_error::a#0 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#3 mul8u_error::mn#0 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#4 mul8u_error::mf#0 ] ) always clobbers reg byte a +Statement [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ( main:2::mul8u_compare:13::mul8u_error:236 [ print_char_cursor#132 print_line_cursor#10 print_word::w#5 ] ) always clobbers reg byte a +Statement [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 [ mulf8u_prepared::return#2 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u_prepared::return#2 ] ) always clobbers reg byte a +Statement [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 [ mulf8u::return#0 ] ( main:2::mul8u_compare:13::mulf8u:216 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 mul8u_compare::ms#0 mulf8u::return#0 ] ) always clobbers reg byte a +Statement [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 [ muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ( main:2::mul8u_compare:13::muls8u:211 [ print_line_cursor#10 print_char_cursor#31 mul8u_compare::a#7 mul8u_compare::b#10 muls8u::a#0 muls8u::b#0 muls8u::i#2 muls8u::m#1 ] ) always clobbers reg byte a +Statement [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a reg byte y +Statement [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::asm_sqr#2 ] ) always clobbers reg byte a +Statement [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#11 mulf_tables_cmp::kc_sqr#2 ] ) always clobbers reg byte a +Statement [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 [ print_char_cursor#132 print_word::w#12 ] ( main:2::mulf_tables_cmp:11 [ print_char_cursor#132 print_word::w#12 ] ) always clobbers reg byte a +Statement [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ( main:2::mulf_tables_cmp:11 [ mulf_tables_cmp::kc_sqr#1 mulf_tables_cmp::asm_sqr#1 ] ) always clobbers reg byte a +Statement [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 [ print_line_cursor#1 print_char_cursor#225 ] ( main:2::mulf_tables_cmp:11 [ print_line_cursor#1 print_char_cursor#225 ] ) always clobbers reg byte a Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y -Statement [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a -Statement [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a -Statement [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a -Statement [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a -Statement [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y -Statement [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a -Statement [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y -Statement [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a -Statement [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a -Statement [332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a -Statement [338] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) [ ] ( main:2::mulf_init_asm:9 [ ] ) always clobbers reg byte a +Statement [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ( main:2::mulf_init:7 [ mulf_init::sqr#4 mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::x_2#3 mulf_init::c#1 mulf_init::$2 ] ) always clobbers reg byte a +Statement [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$5 ] ) always clobbers reg byte a +Statement [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 mulf_init::$6 ] ) always clobbers reg byte a +Statement [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_hi#2 mulf_init::c#1 mulf_init::x_2#2 mulf_init::sqr#3 ] ) always clobbers reg byte y +Statement [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::sqr1_lo#2 mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ( main:2::mulf_init:7 [ mulf_init::c#1 mulf_init::sqr#1 mulf_init::sqr1_lo#1 mulf_init::sqr1_hi#1 mulf_init::x_2#2 ] ) always clobbers reg byte a +Statement [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ( main:2::mulf_init:7 [ mulf_init::x_255#2 mulf_init::sqr2_lo#2 mulf_init::sqr2_hi#2 mulf_init::dir#2 ] ) always clobbers reg byte a reg byte y +Statement [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ( main:2::mulf_init:7 [ mulf_init::sqr2_lo#2 mulf_init::dir#2 mulf_init::x_255#1 mulf_init::sqr2_hi#1 ] ) always clobbers reg byte a +Statement [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ( main:2::mulf_init:7 [ mulf_init::x_255#1 mulf_init::sqr2_lo#1 mulf_init::sqr2_hi#1 mulf_init::dir#3 ] ) always clobbers reg byte a +Statement [336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256) [ ] ( main:2::mulf_init:7 [ ] ) always clobbers reg byte a +Statement [342] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] : zp ZP_BYTE:2 , reg byte y , Potential registers zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] : zp ZP_BYTE:3 , reg byte y , Potential registers zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -7471,128 +7523,140 @@ Potential registers zp ZP_WORD:84 [ mul8s_error::mf#0 ] : zp ZP_WORD:84 , Potential registers zp ZP_BYTE:86 [ print_byte::$0 ] : zp ZP_BYTE:86 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:87 [ print_byte::$2 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:88 [ mul8u::return#2 ] : zp ZP_WORD:88 , -Potential registers zp ZP_BYTE:90 [ mul8s::$6 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:91 [ mul8s::$16 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:92 [ mul8s::$12 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:93 [ mul8s::$17 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:94 [ mul8u::$1 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] : zp ZP_BYTE:95 , reg byte y , -Potential registers zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] : zp ZP_WORD:96 , -Potential registers zp ZP_WORD:98 [ mulf8s::return#0 ] : zp ZP_WORD:98 , -Potential registers zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] : zp ZP_WORD:100 , -Potential registers zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:102 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:103 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:106 , -Potential registers zp ZP_BYTE:108 [ muls8u::a#0 ] : zp ZP_BYTE:108 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:109 [ muls8u::b#0 ] : zp ZP_BYTE:109 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:110 [ muls8u::return#2 ] : zp ZP_WORD:110 , -Potential registers zp ZP_WORD:112 [ mul8u_compare::ms#0 ] : zp ZP_WORD:112 , -Potential registers zp ZP_BYTE:114 [ mulf8u::a#0 ] : zp ZP_BYTE:114 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:115 [ mulf8u::b#0 ] : zp ZP_BYTE:115 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:116 [ mulf8u::return#2 ] : zp ZP_WORD:116 , -Potential registers zp ZP_WORD:118 [ mul8u_compare::mf#0 ] : zp ZP_WORD:118 , -Potential registers zp ZP_WORD:120 [ mul8u::return#3 ] : zp ZP_WORD:120 , -Potential registers zp ZP_WORD:122 [ mul8u_compare::mn#0 ] : zp ZP_WORD:122 , -Potential registers zp ZP_BYTE:124 [ mul8u_error::a#0 ] : zp ZP_BYTE:124 , reg byte x , -Potential registers zp ZP_BYTE:125 [ mul8u_error::b#0 ] : zp ZP_BYTE:125 , reg byte x , -Potential registers zp ZP_WORD:126 [ mul8u_error::ms#0 ] : zp ZP_WORD:126 , -Potential registers zp ZP_WORD:128 [ mul8u_error::mn#0 ] : zp ZP_WORD:128 , -Potential registers zp ZP_WORD:130 [ mul8u_error::mf#0 ] : zp ZP_WORD:130 , -Potential registers zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:132 , -Potential registers zp ZP_WORD:134 [ mulf8u::return#0 ] : zp ZP_WORD:134 , -Potential registers zp ZP_BYTE:136 [ mulf_init::$2 ] : zp ZP_BYTE:136 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:137 [ mulf_init::$5 ] : zp ZP_BYTE:137 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:138 [ mulf_init::$6 ] : zp ZP_BYTE:138 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:90 [ mul8s::$5 ] : zp ZP_BYTE:90 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:91 [ mul8s::$6 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:92 [ mul8s::$16 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:93 [ mul8s::$11 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:94 [ mul8s::$12 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:95 [ mul8s::$17 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:96 [ mul8u::$1 ] : zp ZP_BYTE:96 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] : zp ZP_BYTE:97 , reg byte y , +Potential registers zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] : zp ZP_WORD:98 , +Potential registers zp ZP_WORD:100 [ mulf8s::return#0 ] : zp ZP_WORD:100 , +Potential registers zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] : zp ZP_WORD:102 , +Potential registers zp ZP_BYTE:104 [ mulf8s_prepared::$4 ] : zp ZP_BYTE:104 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:105 [ mulf8s_prepared::$5 ] : zp ZP_BYTE:105 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:106 [ mulf8s_prepared::$15 ] : zp ZP_BYTE:106 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:107 [ mulf8s_prepared::$10 ] : zp ZP_BYTE:107 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] : zp ZP_BYTE:108 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] : zp ZP_BYTE:109 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] : zp ZP_WORD:110 , +Potential registers zp ZP_BYTE:112 [ muls8u::a#0 ] : zp ZP_BYTE:112 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:113 [ muls8u::b#0 ] : zp ZP_BYTE:113 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:114 [ muls8u::return#2 ] : zp ZP_WORD:114 , +Potential registers zp ZP_WORD:116 [ mul8u_compare::ms#0 ] : zp ZP_WORD:116 , +Potential registers zp ZP_BYTE:118 [ mulf8u::a#0 ] : zp ZP_BYTE:118 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:119 [ mulf8u::b#0 ] : zp ZP_BYTE:119 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:120 [ mulf8u::return#2 ] : zp ZP_WORD:120 , +Potential registers zp ZP_WORD:122 [ mul8u_compare::mf#0 ] : zp ZP_WORD:122 , +Potential registers zp ZP_WORD:124 [ mul8u::return#3 ] : zp ZP_WORD:124 , +Potential registers zp ZP_WORD:126 [ mul8u_compare::mn#0 ] : zp ZP_WORD:126 , +Potential registers zp ZP_BYTE:128 [ mul8u_error::a#0 ] : zp ZP_BYTE:128 , reg byte x , +Potential registers zp ZP_BYTE:129 [ mul8u_error::b#0 ] : zp ZP_BYTE:129 , reg byte x , +Potential registers zp ZP_WORD:130 [ mul8u_error::ms#0 ] : zp ZP_WORD:130 , +Potential registers zp ZP_WORD:132 [ mul8u_error::mn#0 ] : zp ZP_WORD:132 , +Potential registers zp ZP_WORD:134 [ mul8u_error::mf#0 ] : zp ZP_WORD:134 , +Potential registers zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] : zp ZP_WORD:136 , +Potential registers zp ZP_WORD:138 [ mulf8u::return#0 ] : zp ZP_WORD:138 , +Potential registers zp ZP_BYTE:140 [ mulf_init::$2 ] : zp ZP_BYTE:140 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:141 [ mulf_init::$5 ] : zp ZP_BYTE:141 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:142 [ mulf_init::$6 ] : zp ZP_BYTE:142 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [muls8s] 6,707: zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] 2,502.5: zp ZP_BYTE:30 [ muls8s::j#2 muls8s::j#1 ] 2,502.5: zp ZP_BYTE:33 [ muls8s::i#2 muls8s::i#1 ] 202: zp ZP_WORD:62 [ muls8s::return#2 ] 191.18: zp ZP_BYTE:61 [ muls8s::b#0 ] 175.58: zp ZP_BYTE:60 [ muls8s::a#0 ] -Uplift Scope [mul8u] 3,446.71: zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp ZP_BYTE:94 [ mul8u::$1 ] 1,826.17: zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 309: zp ZP_BYTE:20 [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] 202: zp ZP_WORD:120 [ mul8u::return#3 ] 4: zp ZP_WORD:88 [ mul8u::return#2 ] -Uplift Scope [muls8u] 3,370.33: zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 2,502.5: zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] 202: zp ZP_WORD:110 [ muls8u::return#2 ] 183.67: zp ZP_BYTE:109 [ muls8u::b#0 ] 157.71: zp ZP_BYTE:108 [ muls8u::a#0 ] -Uplift Scope [mul8u_compare] 235.67: zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp ZP_WORD:122 [ mul8u_compare::mn#0 ] 14.52: zp ZP_WORD:112 [ mul8u_compare::ms#0 ] 11.33: zp ZP_WORD:118 [ mul8u_compare::mf#0 ] +Uplift Scope [mul8u] 3,446.71: zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] 2,435.29: zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] 2,002: zp ZP_BYTE:96 [ mul8u::$1 ] 1,826.17: zp ZP_BYTE:21 [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] 309: zp ZP_BYTE:20 [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] 202: zp ZP_WORD:124 [ mul8u::return#3 ] 4: zp ZP_WORD:88 [ mul8u::return#2 ] +Uplift Scope [muls8u] 3,370.33: zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] 2,502.5: zp ZP_BYTE:37 [ muls8u::i#2 muls8u::i#1 ] 202: zp ZP_WORD:114 [ muls8u::return#2 ] 183.67: zp ZP_BYTE:113 [ muls8u::b#0 ] 157.71: zp ZP_BYTE:112 [ muls8u::a#0 ] +Uplift Scope [mul8u_compare] 235.67: zp ZP_BYTE:36 [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] 171.78: zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] 28.61: zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] 17: zp ZP_WORD:126 [ mul8u_compare::mn#0 ] 14.52: zp ZP_WORD:116 [ mul8u_compare::ms#0 ] 11.33: zp ZP_WORD:122 [ mul8u_compare::mf#0 ] Uplift Scope [mul8s_compare] 235.67: zp ZP_BYTE:4 [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] 171.78: zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] 28.61: zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] 17: zp ZP_WORD:76 [ mul8s_compare::mn#0 ] 14.52: zp ZP_WORD:64 [ mul8s_compare::ms#0 ] 11.33: zp ZP_WORD:70 [ mul8s_compare::mf#0 ] -Uplift Scope [mulf8u] 202: zp ZP_WORD:116 [ mulf8u::return#2 ] 51.5: zp ZP_BYTE:114 [ mulf8u::a#0 ] 34.33: zp ZP_BYTE:115 [ mulf8u::b#0 ] 34.33: zp ZP_WORD:134 [ mulf8u::return#0 ] -Uplift Scope [mulf8s] 202: zp ZP_WORD:68 [ mulf8s::return#2 ] 34.33: zp ZP_WORD:98 [ mulf8s::return#0 ] 33.67: zp ZP_BYTE:66 [ mulf8s::a#0 ] 25.75: zp ZP_BYTE:67 [ mulf8s::b#0 ] -Uplift Scope [mulf_init] 45.1: zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:136 [ mulf_init::$2 ] 22: zp ZP_BYTE:137 [ mulf_init::$5 ] 22: zp ZP_BYTE:138 [ mulf_init::$6 ] 20.62: zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] -Uplift Scope [mul8s] 202: zp ZP_WORD:74 [ mul8s::return#2 ] 13.83: zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 9.36: zp ZP_BYTE:73 [ mul8s::b#0 ] 7.36: zp ZP_BYTE:72 [ mul8s::a#0 ] 4: zp ZP_BYTE:90 [ mul8s::$6 ] 4: zp ZP_BYTE:91 [ mul8s::$16 ] 4: zp ZP_BYTE:92 [ mul8s::$12 ] 4: zp ZP_BYTE:93 [ mul8s::$17 ] +Uplift Scope [mulf8u] 202: zp ZP_WORD:120 [ mulf8u::return#2 ] 51.5: zp ZP_BYTE:118 [ mulf8u::a#0 ] 34.33: zp ZP_BYTE:119 [ mulf8u::b#0 ] 34.33: zp ZP_WORD:138 [ mulf8u::return#0 ] +Uplift Scope [mulf8s] 202: zp ZP_WORD:68 [ mulf8s::return#2 ] 34.33: zp ZP_WORD:100 [ mulf8s::return#0 ] 33.67: zp ZP_BYTE:66 [ mulf8s::a#0 ] 25.75: zp ZP_BYTE:67 [ mulf8s::b#0 ] +Uplift Scope [mul8s] 202: zp ZP_WORD:74 [ mul8s::return#2 ] 20: zp ZP_BYTE:90 [ mul8s::$5 ] 20: zp ZP_BYTE:93 [ mul8s::$11 ] 13.73: zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] 8.58: zp ZP_BYTE:73 [ mul8s::b#0 ] 6.44: zp ZP_BYTE:72 [ mul8s::a#0 ] 4: zp ZP_BYTE:91 [ mul8s::$6 ] 4: zp ZP_BYTE:92 [ mul8s::$16 ] 4: zp ZP_BYTE:94 [ mul8s::$12 ] 4: zp ZP_BYTE:95 [ mul8s::$17 ] +Uplift Scope [mulf_init] 45.1: zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] 24.36: zp ZP_BYTE:44 [ mulf_init::c#2 mulf_init::c#1 ] 24.14: zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] 22: zp ZP_BYTE:140 [ mulf_init::$2 ] 22: zp ZP_BYTE:141 [ mulf_init::$5 ] 22: zp ZP_BYTE:142 [ mulf_init::$6 ] 20.62: zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] 19.04: zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] 16.5: zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] 14.14: zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] 12.05: zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] 8.5: zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Uplift Scope [] 79.74: zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] 34.73: zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] +Uplift Scope [mulf8s_prepared] 20: zp ZP_BYTE:104 [ mulf8s_prepared::$4 ] 20: zp ZP_BYTE:107 [ mulf8s_prepared::$10 ] 13.73: zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] 4: zp ZP_BYTE:105 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:106 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] 0.36: zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] Uplift Scope [mulf_tables_cmp] 20.17: zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] 15.58: zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] Uplift Scope [print_str] 35.5: zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Uplift Scope [mulf8s_prepared] 13.83: zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] 4: zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] 4: zp ZP_BYTE:102 [ mulf8s_prepared::$5 ] 4: zp ZP_BYTE:103 [ mulf8s_prepared::$15 ] 4: zp ZP_BYTE:104 [ mulf8s_prepared::$11 ] 4: zp ZP_BYTE:105 [ mulf8s_prepared::$16 ] 0.4: zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] Uplift Scope [print_cls] 33: zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] Uplift Scope [print_byte] 23.5: zp ZP_BYTE:13 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:86 [ print_byte::$0 ] 4: zp ZP_BYTE:87 [ print_byte::$2 ] Uplift Scope [print_word] 29.33: zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] -Uplift Scope [mulf8u_prepared] 14: zp ZP_BYTE:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] 4: zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] 4: zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] 1.5: zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] +Uplift Scope [mulf8u_prepared] 14: zp ZP_BYTE:28 [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] 4: zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] 4: zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] 1.5: zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] Uplift Scope [print_sword] 23: zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] Uplift Scope [print_sbyte] 17.67: zp ZP_BYTE:17 [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] Uplift Scope [print_char] 14: zp ZP_BYTE:14 [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] Uplift Scope [mulf8u_prepare] 14: zp ZP_BYTE:29 [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] -Uplift Scope [mul8u_error] 0.57: zp ZP_BYTE:124 [ mul8u_error::a#0 ] 0.4: zp ZP_BYTE:125 [ mul8u_error::b#0 ] 0.31: zp ZP_WORD:126 [ mul8u_error::ms#0 ] 0.25: zp ZP_WORD:128 [ mul8u_error::mn#0 ] 0.21: zp ZP_WORD:130 [ mul8u_error::mf#0 ] +Uplift Scope [mul8u_error] 0.57: zp ZP_BYTE:128 [ mul8u_error::a#0 ] 0.4: zp ZP_BYTE:129 [ mul8u_error::b#0 ] 0.31: zp ZP_WORD:130 [ mul8u_error::ms#0 ] 0.25: zp ZP_WORD:132 [ mul8u_error::mn#0 ] 0.21: zp ZP_WORD:134 [ mul8u_error::mf#0 ] Uplift Scope [mul8s_error] 0.57: zp ZP_BYTE:78 [ mul8s_error::a#0 ] 0.4: zp ZP_BYTE:79 [ mul8s_error::b#0 ] 0.31: zp ZP_WORD:80 [ mul8s_error::ms#0 ] 0.25: zp ZP_WORD:82 [ mul8s_error::mn#0 ] 0.21: zp ZP_WORD:84 [ mul8s_error::mf#0 ] Uplift Scope [print_ln] Uplift Scope [main] Uplift Scope [mulf_init_asm] -Uplifting [muls8s] best 318118 combination zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp ZP_WORD:62 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:60 [ muls8s::a#0 ] -Uplifting [mul8u] best 308509 combination zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] zp ZP_WORD:120 [ mul8u::return#3 ] zp ZP_WORD:88 [ mul8u::return#2 ] -Uplifting [muls8u] best 298209 combination zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:110 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:108 [ muls8u::a#0 ] -Uplifting [mul8u_compare] best 297009 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:122 [ mul8u_compare::mn#0 ] zp ZP_WORD:112 [ mul8u_compare::ms#0 ] zp ZP_WORD:118 [ mul8u_compare::mf#0 ] -Uplifting [mul8s_compare] best 295809 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] zp ZP_WORD:76 [ mul8s_compare::mn#0 ] zp ZP_WORD:64 [ mul8s_compare::ms#0 ] zp ZP_WORD:70 [ mul8s_compare::mf#0 ] -Uplifting [mulf8u] best 295203 combination zp ZP_WORD:116 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:134 [ mulf8u::return#0 ] -Uplifting [mulf8s] best 294597 combination zp ZP_WORD:68 [ mulf8s::return#2 ] zp ZP_WORD:98 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] -Uplifting [mulf_init] best 294347 combination zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] +Uplifting [muls8s] best 318142 combination zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] reg byte y [ muls8s::j#2 muls8s::j#1 ] reg byte y [ muls8s::i#2 muls8s::i#1 ] zp ZP_WORD:62 [ muls8s::return#2 ] reg byte x [ muls8s::b#0 ] zp ZP_BYTE:60 [ muls8s::a#0 ] +Uplifting [mul8u] best 308533 combination zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] zp ZP_WORD:24 [ mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] reg byte a [ mul8u::$1 ] reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ] reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ] zp ZP_WORD:124 [ mul8u::return#3 ] zp ZP_WORD:88 [ mul8u::return#2 ] +Uplifting [muls8u] best 298233 combination zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] reg byte y [ muls8u::i#2 muls8u::i#1 ] zp ZP_WORD:114 [ muls8u::return#2 ] reg byte x [ muls8u::b#0 ] zp ZP_BYTE:112 [ muls8u::a#0 ] +Uplifting [mul8u_compare] best 297033 combination reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ] zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] zp ZP_WORD:126 [ mul8u_compare::mn#0 ] zp ZP_WORD:116 [ mul8u_compare::ms#0 ] zp ZP_WORD:122 [ mul8u_compare::mf#0 ] +Uplifting [mul8s_compare] best 295833 combination reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] zp ZP_WORD:76 [ mul8s_compare::mn#0 ] zp ZP_WORD:64 [ mul8s_compare::ms#0 ] zp ZP_WORD:70 [ mul8s_compare::mf#0 ] +Uplifting [mulf8u] best 295227 combination zp ZP_WORD:120 [ mulf8u::return#2 ] reg byte a [ mulf8u::a#0 ] reg byte x [ mulf8u::b#0 ] zp ZP_WORD:138 [ mulf8u::return#0 ] +Uplifting [mulf8s] best 294621 combination zp ZP_WORD:68 [ mulf8s::return#2 ] zp ZP_WORD:100 [ mulf8s::return#0 ] reg byte a [ mulf8s::a#0 ] reg byte x [ mulf8s::b#0 ] +Uplifting [mul8s] best 294312 combination zp ZP_WORD:74 [ mul8s::return#2 ] reg byte a [ mul8s::$5 ] reg byte a [ mul8s::$11 ] zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp ZP_BYTE:72 [ mul8s::a#0 ] zp ZP_BYTE:91 [ mul8s::$6 ] zp ZP_BYTE:92 [ mul8s::$16 ] zp ZP_BYTE:94 [ mul8s::$12 ] zp ZP_BYTE:95 [ mul8s::$17 ] +Limited combination testing to 100 combinations of 36864 possible. +Uplifting [mulf_init] best 294062 combination zp ZP_WORD:50 [ mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ] reg byte x [ mulf_init::c#2 mulf_init::c#1 ] zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] reg byte a [ mulf_init::$2 ] reg byte a [ mulf_init::$5 ] reg byte a [ mulf_init::$6 ] zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] zp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] zp ZP_WORD:55 [ mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ] zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_WORD:47 [ mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 ] Limited combination testing to 100 combinations of 1024 possible. -Uplifting [mul8s] best 294034 combination zp ZP_WORD:74 [ mul8s::return#2 ] zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] reg byte y [ mul8s::b#0 ] zp ZP_BYTE:72 [ mul8s::a#0 ] reg byte a [ mul8s::$6 ] reg byte a [ mul8s::$16 ] zp ZP_BYTE:92 [ mul8s::$12 ] zp ZP_BYTE:93 [ mul8s::$17 ] -Limited combination testing to 100 combinations of 2304 possible. -Uplifting [] best 294034 combination zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] -Uplifting [mulf_tables_cmp] best 294034 combination zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] -Uplifting [print_str] best 294034 combination zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] -Uplifting [mulf8s_prepared] best 294010 combination zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] -Limited combination testing to 100 combinations of 512 possible. -Uplifting [print_cls] best 294010 combination zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] -Uplifting [print_byte] best 293989 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] -Uplifting [print_word] best 293989 combination zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] -Uplifting [mulf8u_prepared] best 293980 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] -Uplifting [print_sword] best 293980 combination zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] -Uplifting [print_sbyte] best 293968 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] -Uplifting [print_char] best 293950 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] -Uplifting [mulf8u_prepare] best 293941 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] -Uplifting [mul8u_error] best 293935 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:125 [ mul8u_error::b#0 ] zp ZP_WORD:126 [ mul8u_error::ms#0 ] zp ZP_WORD:128 [ mul8u_error::mn#0 ] zp ZP_WORD:130 [ mul8u_error::mf#0 ] -Uplifting [mul8s_error] best 293929 combination reg byte x [ mul8s_error::a#0 ] zp ZP_BYTE:79 [ mul8s_error::b#0 ] zp ZP_WORD:80 [ mul8s_error::ms#0 ] zp ZP_WORD:82 [ mul8s_error::mn#0 ] zp ZP_WORD:84 [ mul8s_error::mf#0 ] -Uplifting [print_ln] best 293929 combination -Uplifting [main] best 293929 combination -Uplifting [mulf_init_asm] best 293929 combination +Uplifting [] best 294062 combination zp ZP_WORD:15 [ print_char_cursor#84 print_char_cursor#140 print_char_cursor#139 print_char_cursor#134 print_char_cursor#152 print_char_cursor#192 print_char_cursor#193 print_char_cursor#133 print_char_cursor#132 print_char_cursor#18 print_char_cursor#31 print_char_cursor#1 print_char_cursor#225 ] zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] +Uplifting [mulf8s_prepared] best 294044 combination reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$10 ] zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] zp ZP_BYTE:108 [ mulf8s_prepared::$11 ] zp ZP_BYTE:109 [ mulf8s_prepared::$16 ] zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] +Limited combination testing to 100 combinations of 8192 possible. +Uplifting [mulf_tables_cmp] best 294044 combination zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] +Uplifting [print_str] best 294044 combination zp ZP_WORD:7 [ print_str::str#16 print_str::str#18 print_str::str#0 ] +Uplifting [print_cls] best 294044 combination zp ZP_WORD:58 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [print_byte] best 294023 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +Uplifting [print_word] best 294023 combination zp ZP_WORD:11 [ print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] +Uplifting [mulf8u_prepared] best 294014 combination reg byte x [ mulf8u_prepared::b#2 mulf8u_prepared::b#3 mulf8u_prepared::b#0 ] zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] +Uplifting [print_sword] best 294014 combination zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 ] +Uplifting [print_sbyte] best 294002 combination reg byte x [ print_sbyte::b#5 print_sbyte::b#0 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 ] +Uplifting [print_char] best 293984 combination reg byte a [ print_char::ch#5 print_char::ch#3 print_char::ch#4 ] +Uplifting [mulf8u_prepare] best 293975 combination reg byte a [ mulf8u_prepare::a#2 mulf8u_prepare::a#3 mulf8u_prepare::a#0 ] +Uplifting [mul8u_error] best 293969 combination reg byte x [ mul8u_error::a#0 ] zp ZP_BYTE:129 [ mul8u_error::b#0 ] zp ZP_WORD:130 [ mul8u_error::ms#0 ] zp ZP_WORD:132 [ mul8u_error::mn#0 ] zp ZP_WORD:134 [ mul8u_error::mf#0 ] +Uplifting [mul8s_error] best 293963 combination reg byte x [ mul8s_error::a#0 ] zp ZP_BYTE:79 [ mul8s_error::b#0 ] zp ZP_WORD:80 [ mul8s_error::ms#0 ] zp ZP_WORD:82 [ mul8s_error::mn#0 ] zp ZP_WORD:84 [ mul8s_error::mf#0 ] +Uplifting [print_ln] best 293963 combination +Uplifting [main] best 293963 combination +Uplifting [mulf_init_asm] best 293963 combination Attempting to uplift remaining variables inzp ZP_BYTE:60 [ muls8s::a#0 ] -Uplifting [muls8s] best 293929 combination zp ZP_BYTE:60 [ muls8s::a#0 ] +Uplifting [muls8s] best 293963 combination zp ZP_BYTE:60 [ muls8s::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] -Uplifting [mul8s_compare] best 293929 combination zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] +Uplifting [mul8s_compare] best 293963 combination zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Uplifting [mul8u_compare] best 293929 combination zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:108 [ muls8u::a#0 ] -Uplifting [muls8u] best 293929 combination zp ZP_BYTE:108 [ muls8u::a#0 ] +Uplifting [mul8u_compare] best 293963 combination zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:112 [ muls8u::a#0 ] +Uplifting [muls8u] best 293963 combination zp ZP_BYTE:112 [ muls8u::a#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] -Uplifting [mul8s_compare] best 293929 combination zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] +Uplifting [mul8s_compare] best 293963 combination zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] -Uplifting [mul8u_compare] best 293929 combination zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] +Uplifting [mul8u_compare] best 293963 combination zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] -Uplifting [mulf_init] best 293929 combination zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] +Uplifting [mulf_init] best 293963 combination zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:52 [ mulf_init::x_255#2 mulf_init::x_255#1 ] -Uplifting [mulf_init] best 293789 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] +Uplifting [mulf_init] best 293823 combination reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] -Uplifting [mulf_init] best 293789 combination zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] +Uplifting [mulf_init] best 293823 combination zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:72 [ mul8s::a#0 ] -Uplifting [mul8s] best 293789 combination zp ZP_BYTE:72 [ mul8s::a#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:92 [ mul8s::$12 ] -Uplifting [mul8s] best 293783 combination reg byte a [ mul8s::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:93 [ mul8s::$17 ] -Uplifting [mul8s] best 293777 combination reg byte a [ mul8s::$17 ] +Uplifting [mul8s] best 293823 combination zp ZP_BYTE:72 [ mul8s::a#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:91 [ mul8s::$6 ] +Uplifting [mul8s] best 293819 combination reg byte a [ mul8s::$6 ] +Attempting to uplift remaining variables inzp ZP_BYTE:92 [ mul8s::$16 ] +Uplifting [mul8s] best 293813 combination reg byte a [ mul8s::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:94 [ mul8s::$12 ] +Uplifting [mul8s] best 293807 combination reg byte a [ mul8s::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:95 [ mul8s::$17 ] +Uplifting [mul8s] best 293801 combination reg byte a [ mul8s::$17 ] +Attempting to uplift remaining variables inzp ZP_BYTE:108 [ mulf8s_prepared::$11 ] +Uplifting [mulf8s_prepared] best 293795 combination reg byte a [ mulf8s_prepared::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:109 [ mulf8s_prepared::$16 ] +Uplifting [mulf8s_prepared] best 293789 combination reg byte a [ mulf8s_prepared::$16 ] Attempting to uplift remaining variables inzp ZP_BYTE:79 [ mul8s_error::b#0 ] -Uplifting [mul8s_error] best 293777 combination zp ZP_BYTE:79 [ mul8s_error::b#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] -Uplifting [mulf8s_prepared] best 293777 combination zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:125 [ mul8u_error::b#0 ] -Uplifting [mul8u_error] best 293777 combination zp ZP_BYTE:125 [ mul8u_error::b#0 ] +Uplifting [mul8s_error] best 293789 combination zp ZP_BYTE:79 [ mul8s_error::b#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:129 [ mul8u_error::b#0 ] +Uplifting [mul8u_error] best 293789 combination zp ZP_BYTE:129 [ mul8u_error::b#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] +Uplifting [mulf8s_prepared] best 293789 combination zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 ] ] with [ zp ZP_BYTE:60 [ muls8s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 ] ] with [ zp ZP_BYTE:72 [ mul8s::a#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 ] ] with [ zp ZP_BYTE:79 [ mul8s_error::b#0 ] ] - score: 1 @@ -7600,39 +7664,39 @@ Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_swor Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 ] ] with [ zp ZP_WORD:80 [ mul8s_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 ] ] with [ zp ZP_WORD:74 [ mul8s::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 ] ] with [ zp ZP_WORD:88 [ mul8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:120 [ mul8u::return#3 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp ZP_WORD:96 [ mulf8s_prepared::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 ] ] with [ zp ZP_WORD:100 [ mulf8u_prepared::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 ] ] with [ zp ZP_WORD:124 [ mul8u::return#3 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 ] ] with [ zp ZP_WORD:98 [ mulf8s_prepared::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 ] ] with [ zp ZP_WORD:102 [ mulf8u_prepared::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 ] ] with [ zp ZP_WORD:62 [ muls8s::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] ] with [ zp ZP_BYTE:108 [ muls8u::a#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] ] with [ zp ZP_BYTE:125 [ mul8u_error::b#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp ZP_WORD:110 [ muls8u::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 ] ] with [ zp ZP_BYTE:112 [ muls8u::a#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 ] ] with [ zp ZP_BYTE:129 [ mul8u_error::b#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 ] ] with [ zp ZP_WORD:114 [ muls8u::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 ] ] with [ zp ZP_WORD:70 [ mul8s_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 ] ] with [ zp ZP_WORD:98 [ mulf8s::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 ] ] with [ zp ZP_WORD:100 [ mulf8s::return#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:76 [ mul8s_compare::mn#0 ] ] with [ zp ZP_WORD:82 [ mul8s_error::mn#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:106 [ mulf8u_prepared::return#0 ] ] with [ zp ZP_WORD:132 [ mulf8u_prepared::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:112 [ mul8u_compare::ms#0 ] ] with [ zp ZP_WORD:126 [ mul8u_error::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 ] ] with [ zp ZP_WORD:118 [ mul8u_compare::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp ZP_WORD:134 [ mulf8u::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:122 [ mul8u_compare::mn#0 ] ] with [ zp ZP_WORD:128 [ mul8u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:110 [ mulf8u_prepared::return#0 ] ] with [ zp ZP_WORD:136 [ mulf8u_prepared::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mul8u_compare::ms#0 ] ] with [ zp ZP_WORD:130 [ mul8u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:120 [ mulf8u::return#2 ] ] with [ zp ZP_WORD:122 [ mul8u_compare::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:120 [ mulf8u::return#2 mul8u_compare::mf#0 ] ] with [ zp ZP_WORD:138 [ mulf8u::return#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:126 [ mul8u_compare::mn#0 ] ] with [ zp ZP_WORD:132 [ mul8u_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 ] ] with [ zp ZP_WORD:42 [ mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 ] ] with [ zp ZP_WORD:64 [ mul8s_compare::ms#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp ZP_WORD:112 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 ] ] with [ zp ZP_WORD:116 [ mul8u_compare::ms#0 mul8u_error::ms#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 ] ] with [ zp ZP_WORD:22 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 ] ] with [ zp ZP_WORD:76 [ mul8s_compare::mn#0 mul8s_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 ] ] with [ zp ZP_WORD:68 [ mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] with [ zp ZP_WORD:106 [ mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp ZP_WORD:130 [ mul8u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 ] ] with [ zp ZP_WORD:110 [ mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:120 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 ] ] with [ zp ZP_WORD:134 [ mul8u_error::mf#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 ] ] with [ zp ZP_WORD:31 [ muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mul8s_error::ms#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_compare::ms#0 mul8u_compare::ms#0 mul8u_error::ms#0 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 muls8s::return#2 ] ] with [ zp ZP_WORD:38 [ muls8u::return#0 muls8u::m#3 muls8u::m#1 muls8u::return#2 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_compare::mn#0 mul8s_error::mn#0 ] ] with [ zp ZP_WORD:122 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:18 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8s_compare::mn#0 mul8s_error::mn#0 ] ] with [ zp ZP_WORD:126 [ mul8u_compare::mn#0 mul8u_error::mn#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 ] ] with [ zp ZP_WORD:84 [ mul8s_error::mf#0 ] ] - score: 1 -Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 ] ] with [ zp ZP_WORD:116 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] - score: 1 +Coalescing zero page register with common assignment [ zp ZP_WORD:26 [ mulf8s_prepared::m#4 mulf8s_prepared::m#5 mulf8s_prepared::m#1 mulf8s_prepared::m#0 mulf8s_prepared::m#2 mulf8s_prepared::return#2 mulf8u_prepared::return#3 mulf8s::return#2 mul8s_compare::mf#0 mulf8s::return#0 mulf8u_prepared::return#0 mulf8u_prepared::return#2 mul8s_error::mf#0 ] ] with [ zp ZP_WORD:120 [ mulf8u::return#2 mul8u_compare::mf#0 mulf8u::return#0 mul8u_error::mf#0 ] ] - score: 1 Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 ] ] with [ zp ZP_BYTE:34 [ mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 ] ] with [ zp ZP_BYTE:49 [ mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] Coalescing zero page register [ zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 ] ] with [ zp ZP_BYTE:57 [ mulf_init::dir#2 mulf_init::dir#3 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 ] ] with [ zp ZP_BYTE:35 [ mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] with [ zp ZP_BYTE:95 [ mulf8s_prepared::b#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ] ] with [ zp ZP_BYTE:97 [ mulf8s_prepared::b#0 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 ] ] with [ zp ZP_WORD:40 [ mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 ] ] with [ zp ZP_WORD:45 [ mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] Coalescing zero page register [ zp ZP_WORD:5 [ print_line_cursor#23 print_line_cursor#45 print_line_cursor#1 print_line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 ] ] with [ zp ZP_WORD:53 [ mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 ] ] @@ -7677,7 +7741,7 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls - //SEG11 [336] phi from main to print_cls [phi:main->print_cls] + //SEG11 [340] phi from main to print_cls [phi:main->print_cls] print_cls_from_main: jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] @@ -7686,7 +7750,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call mulf_init - //SEG15 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] mulf_init_from_b1: jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] @@ -7702,7 +7766,7 @@ main: { //SEG20 main::@3 b3: //SEG21 [11] call mulf_tables_cmp - //SEG22 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG22 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] mulf_tables_cmp_from_b3: jsr mulf_tables_cmp //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] @@ -7711,7 +7775,7 @@ main: { //SEG24 main::@4 b4: //SEG25 [13] call mul8u_compare - //SEG26 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG26 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] mul8u_compare_from_b4: jsr mul8u_compare //SEG27 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] @@ -7778,7 +7842,7 @@ mul8s_compare: { //SEG51 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b //SEG52 [27] call mulf8s - //SEG53 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG53 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] mulf8s_from_b12: jsr mulf8s //SEG54 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 @@ -8363,10 +8427,10 @@ mul8s: { //SEG275 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a //SEG276 [133] call mul8u - //SEG277 [147] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG277 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] mul8u_from_mul8s: - //SEG278 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy - //SEG279 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy + //SEG278 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG279 [149] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy jsr mul8u //SEG280 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 // (word) mul8u::return#2 = (word) mul8u::res#2 // register copy zp ZP_WORD:12 @@ -8382,88 +8446,92 @@ mul8s: { jmp b3 //SEG284 mul8s::@3 b3: - //SEG285 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG285 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG286 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy + //SEG286 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + lda m+1 + //SEG287 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG287 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG288 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG288 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG289 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] b1_from_b3: b1_from_b6: - //SEG289 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG290 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy jmp b1 - //SEG290 mul8s::@1 + //SEG291 mul8s::@1 b1: - //SEG291 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 + //SEG292 [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2_from_b1 jmp b4 - //SEG292 mul8s::@4 + //SEG293 mul8s::@4 b4: - //SEG293 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG294 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG294 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG295 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + lda m+1 + //SEG296 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG295 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG297 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG296 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG298 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] b2_from_b1: b2_from_b4: - //SEG297 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG299 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy jmp b2 - //SEG298 mul8s::@2 + //SEG300 mul8s::@2 b2: jmp breturn - //SEG299 mul8s::@return + //SEG301 mul8s::@return breturn: - //SEG300 [146] return + //SEG302 [148] return rts } -//SEG301 mul8u +//SEG303 mul8u mul8u: { .label mb = 6 .label res = $c .label return = $c - //SEG302 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG304 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG303 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG305 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] b1_from_mul8u: - //SEG304 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG305 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG306 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG307 [151] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 lda #<0 sta res lda #>0 sta res+1 - //SEG306 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG308 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy jmp b1 - //SEG307 mul8u::@1 + //SEG309 mul8u::@1 b1: - //SEG308 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG310 [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 jmp breturn - //SEG309 mul8u::@return + //SEG311 mul8u::@return breturn: - //SEG310 [151] return + //SEG312 [153] return rts - //SEG311 mul8u::@2 + //SEG313 mul8u::@2 b2: - //SEG312 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG314 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG313 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG315 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4_from_b2 jmp b7 - //SEG314 mul8u::@7 + //SEG316 mul8u::@7 b7: - //SEG315 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG317 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -8471,136 +8539,140 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG316 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG318 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] b4_from_b2: b4_from_b7: - //SEG317 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG319 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy jmp b4 - //SEG318 mul8u::@4 + //SEG320 mul8u::@4 b4: - //SEG319 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG321 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG320 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG322 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG321 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG323 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] b1_from_b4: - //SEG322 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG323 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG324 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG324 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG325 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG326 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG325 mulf8s +//SEG327 mulf8s mulf8s: { .label return = $e jmp mulf8s_prepare1 - //SEG326 mulf8s::mulf8s_prepare1 + //SEG328 mulf8s::mulf8s_prepare1 mulf8s_prepare1: - //SEG327 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + //SEG329 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 // (byte~) mulf8u_prepare::a#3 = (byte)(signed byte) mulf8s::a#0 // register copy reg byte a - //SEG328 [160] call mulf8u_prepare - //SEG329 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG330 [162] call mulf8u_prepare + //SEG331 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] mulf8u_prepare_from_mulf8s_prepare1: - //SEG330 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG332 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG331 mulf8s::@2 + //SEG333 mulf8s::@2 b2: - //SEG332 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG334 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG333 [162] call mulf8s_prepared + //SEG335 [164] call mulf8s_prepared jsr mulf8s_prepared - //SEG334 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG336 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 // (signed word) mulf8s_prepared::return#2 = (signed word)(word) mulf8s_prepared::m#4 // register copy zp ZP_WORD:14 jmp b4 - //SEG335 mulf8s::@4 + //SEG337 mulf8s::@4 b4: - //SEG336 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + //SEG338 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 // (signed word) mulf8s::return#0 = (signed word) mulf8s_prepared::return#2 // register copy zp ZP_WORD:14 jmp breturn - //SEG337 mulf8s::@return + //SEG339 mulf8s::@return breturn: - //SEG338 [165] return + //SEG340 [167] return rts } -//SEG339 mulf8s_prepared +//SEG341 mulf8s_prepared mulf8s_prepared: { .label memA = $fd .label m = $e .label b = 3 .label return = $e - //SEG340 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG342 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //SEG341 [167] call mulf8u_prepared - //SEG342 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG343 [169] call mulf8u_prepared + //SEG344 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] mulf8u_prepared_from_mulf8s_prepared: - //SEG343 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG345 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG344 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG346 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 // (word) mulf8u_prepared::return#3 = (word) mulf8u_prepared::return#0 // register copy zp ZP_WORD:14 jmp b6 - //SEG345 mulf8s_prepared::@6 + //SEG347 mulf8s_prepared::@6 b6: - //SEG346 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG348 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 // (word) mulf8s_prepared::m#0 = (word) mulf8u_prepared::return#3 // register copy zp ZP_WORD:14 - //SEG347 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG349 [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1_from_b6 jmp b3 - //SEG348 mulf8s_prepared::@3 + //SEG350 mulf8s_prepared::@3 b3: - //SEG349 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG351 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG350 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG352 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + lda m+1 + //SEG353 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG351 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG354 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG352 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG355 [177] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] b1_from_b3: b1_from_b6: - //SEG353 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG356 [177] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy jmp b1 - //SEG354 mulf8s_prepared::@1 + //SEG357 mulf8s_prepared::@1 b1: - //SEG355 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG358 [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2_from_b1 jmp b4 - //SEG356 mulf8s_prepared::@4 + //SEG359 mulf8s_prepared::@4 b4: - //SEG357 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG360 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG358 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG361 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + lda m+1 + //SEG362 [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG359 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG363 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG360 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG364 [183] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] b2_from_b1: b2_from_b4: - //SEG361 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG365 [183] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy jmp b2 - //SEG362 mulf8s_prepared::@2 + //SEG366 mulf8s_prepared::@2 b2: jmp breturn - //SEG363 mulf8s_prepared::@return + //SEG367 mulf8s_prepared::@return breturn: - //SEG364 [180] return + //SEG368 [184] return rts } -//SEG365 mulf8u_prepared +//SEG369 mulf8u_prepared mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $e - //SEG366 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG370 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //SEG367 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG371 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } ldx memB sec sm1: @@ -8613,23 +8685,23 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG368 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG372 [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 jmp breturn - //SEG369 mulf8u_prepared::@return + //SEG373 mulf8u_prepared::@return breturn: - //SEG370 [185] return + //SEG374 [189] return rts } -//SEG371 mulf8u_prepare +//SEG375 mulf8u_prepare mulf8u_prepare: { .label memA = $fd - //SEG372 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG376 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG373 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG377 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } lda memA sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 @@ -8637,45 +8709,45 @@ mulf8u_prepare: { sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 jmp breturn - //SEG374 mulf8u_prepare::@return + //SEG378 mulf8u_prepare::@return breturn: - //SEG375 [189] return + //SEG379 [193] return rts } -//SEG376 muls8s +//SEG380 muls8s muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG377 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 + //SEG381 [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 lda a bmi b5_from_muls8s jmp b6 - //SEG378 muls8s::@6 + //SEG382 muls8s::@6 b6: - //SEG379 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 + //SEG383 [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 lda a cmp #1 bmi b4_from_b6 - //SEG380 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG384 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] b3_from_b6: - //SEG381 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 + //SEG385 [196] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 lda #0 tay - //SEG382 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 + //SEG386 [196] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b3 - //SEG383 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG387 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] b3_from_b3: - //SEG384 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG385 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG388 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG389 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy jmp b3 - //SEG386 muls8s::@3 + //SEG390 muls8s::@3 b3: - //SEG387 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG391 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -8690,50 +8762,50 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG388 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG392 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG389 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG393 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b3_from_b3 - //SEG390 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG394 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] b4_from_b3: b4_from_b5: - //SEG391 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG395 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG392 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG396 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b4_from_b6: - //SEG393 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 + //SEG397 [200] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b4 - //SEG394 muls8s::@4 + //SEG398 muls8s::@4 b4: jmp breturn - //SEG395 muls8s::@return + //SEG399 muls8s::@return breturn: - //SEG396 [197] return + //SEG400 [201] return rts - //SEG397 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG401 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b5_from_muls8s: - //SEG398 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 + //SEG402 [202] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 lda #0 tay - //SEG399 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 + //SEG403 [202] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b5 - //SEG400 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG404 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] b5_from_b5: - //SEG401 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy - //SEG402 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG405 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG406 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy jmp b5 - //SEG403 muls8s::@5 + //SEG407 muls8s::@5 b5: - //SEG404 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG408 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -8748,88 +8820,88 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG405 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG409 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG406 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 + //SEG410 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b5_from_b5 jmp b4_from_b5 } -//SEG407 mul8u_compare +//SEG411 mul8u_compare mul8u_compare: { .label ms = 8 .label mf = $e .label mn = $c .label b = 3 .label a = 2 - //SEG408 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG412 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] b1_from_mul8u_compare: - //SEG409 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG413 [207] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a jmp b1 - //SEG410 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG414 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] b1_from_b10: - //SEG411 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG415 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy jmp b1 - //SEG412 mul8u_compare::@1 + //SEG416 mul8u_compare::@1 b1: - //SEG413 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG417 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] b2_from_b1: - //SEG414 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG418 [208] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b jmp b2 - //SEG415 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG419 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] b2_from_b5: - //SEG416 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG420 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy jmp b2 - //SEG417 mul8u_compare::@2 + //SEG421 mul8u_compare::@2 b2: - //SEG418 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG422 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 // (byte) muls8u::a#0 = (byte) mul8u_compare::a#7 // register copy zp ZP_BYTE:2 - //SEG419 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG423 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG420 [207] call muls8u + //SEG424 [211] call muls8u jsr muls8u - //SEG421 [208] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG425 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 // (word) muls8u::return#2 = (word) muls8u::return#0 // register copy zp ZP_WORD:8 jmp b12 - //SEG422 mul8u_compare::@12 + //SEG426 mul8u_compare::@12 b12: - //SEG423 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG427 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 // (word) mul8u_compare::ms#0 = (word) muls8u::return#2 // register copy zp ZP_WORD:8 - //SEG424 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG428 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG425 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG429 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG426 [212] call mulf8u + //SEG430 [216] call mulf8u jsr mulf8u - //SEG427 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG431 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 // (word) mulf8u::return#2 = (word) mulf8u::return#0 // register copy zp ZP_WORD:14 jmp b13 - //SEG428 mul8u_compare::@13 + //SEG432 mul8u_compare::@13 b13: - //SEG429 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG433 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 // (word) mul8u_compare::mf#0 = (word) mulf8u::return#2 // register copy zp ZP_WORD:14 - //SEG430 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG434 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG431 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG435 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //SEG432 [217] call mul8u - //SEG433 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG436 [221] call mul8u + //SEG437 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] mul8u_from_b13: - //SEG434 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy - //SEG435 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy + //SEG438 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG439 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG436 [218] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG440 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 // (word) mul8u::return#3 = (word) mul8u::res#2 // register copy zp ZP_WORD:12 jmp b14 - //SEG437 mul8u_compare::@14 + //SEG441 mul8u_compare::@14 b14: - //SEG438 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG442 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 // (word) mul8u_compare::mn#0 = (word) mul8u::return#3 // register copy zp ZP_WORD:12 - //SEG439 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG443 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -8837,24 +8909,24 @@ mul8u_compare: { cmp mf+1 beq b3_from_b14 !: - //SEG440 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG444 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] b6_from_b14: jmp b6 - //SEG441 mul8u_compare::@6 + //SEG445 mul8u_compare::@6 b6: - //SEG442 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG446 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] b3_from_b6: - //SEG443 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG447 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG444 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG448 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b3_from_b14: - //SEG445 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG449 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 jmp b3 - //SEG446 mul8u_compare::@3 + //SEG450 mul8u_compare::@3 b3: - //SEG447 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG451 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -8862,248 +8934,248 @@ mul8u_compare: { cmp mn+1 beq b20_from_b3 !: - //SEG448 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG452 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] b4_from_b3: - //SEG449 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 + //SEG453 [228] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 jmp b4 - //SEG450 mul8u_compare::@4 + //SEG454 mul8u_compare::@4 b4: - //SEG451 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG455 [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 jmp b8 - //SEG452 mul8u_compare::@8 + //SEG456 mul8u_compare::@8 b8: - //SEG453 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG457 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG454 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG458 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG455 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG459 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 // (byte) mul8u_error::b#0 = (byte) mul8u_compare::b#10 // register copy zp ZP_BYTE:3 - //SEG456 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG460 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 // (word) mul8u_error::ms#0 = (word) mul8u_compare::ms#0 // register copy zp ZP_WORD:8 - //SEG457 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG461 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 // (word) mul8u_error::mn#0 = (word) mul8u_compare::mn#0 // register copy zp ZP_WORD:12 - //SEG458 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG462 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 // (word) mul8u_error::mf#0 = (word) mul8u_compare::mf#0 // register copy zp ZP_WORD:14 - //SEG459 [232] call mul8u_error - //SEG460 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG463 [236] call mul8u_error + //SEG464 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] mul8u_error_from_b8: jsr mul8u_error jmp breturn - //SEG461 mul8u_compare::@return + //SEG465 mul8u_compare::@return breturn: - //SEG462 [233] return + //SEG466 [237] return rts - //SEG463 mul8u_compare::@5 + //SEG467 mul8u_compare::@5 b5: - //SEG464 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG468 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG465 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG469 [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2_from_b5 jmp b10 - //SEG466 mul8u_compare::@10 + //SEG470 mul8u_compare::@10 b10: - //SEG467 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG471 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG468 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG472 [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1_from_b10 - //SEG469 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG473 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] b11_from_b10: jmp b11 - //SEG470 mul8u_compare::@11 + //SEG474 mul8u_compare::@11 b11: - //SEG471 [239] call print_str - //SEG472 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG475 [243] call print_str + //SEG476 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] print_str_from_b11: - //SEG473 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy - //SEG474 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG477 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG478 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG475 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG479 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] b16_from_b11: jmp b16 - //SEG476 mul8u_compare::@16 + //SEG480 mul8u_compare::@16 b16: - //SEG477 [241] call print_ln - //SEG478 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG481 [245] call print_ln + //SEG482 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] print_ln_from_b16: - //SEG479 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy - //SEG480 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy + //SEG483 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG484 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG481 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG485 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] b20_from_b3: jmp b20 - //SEG482 mul8u_compare::@20 + //SEG486 mul8u_compare::@20 b20: - //SEG483 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG487 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] b4_from_b20: - //SEG484 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG488 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy jmp b4 str: .text "multiply results match!@" } -//SEG485 mul8u_error +//SEG489 mul8u_error mul8u_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //SEG486 [244] call print_str - //SEG487 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG490 [248] call print_str + //SEG491 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] print_str_from_mul8u_error: - //SEG488 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG489 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG492 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG493 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b1 - //SEG490 mul8u_error::@1 + //SEG494 mul8u_error::@1 b1: - //SEG491 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG495 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 // (byte) print_byte::b#3 = (byte) mul8u_error::a#0 // register copy reg byte x - //SEG492 [246] call print_byte - //SEG493 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG496 [250] call print_byte + //SEG497 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] print_byte_from_b1: - //SEG494 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG495 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG498 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG499 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG496 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG500 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] b2_from_b1: jmp b2 - //SEG497 mul8u_error::@2 + //SEG501 mul8u_error::@2 b2: - //SEG498 [248] call print_str - //SEG499 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG502 [252] call print_str + //SEG503 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] print_str_from_b2: - //SEG500 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG501 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG504 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG505 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b3 - //SEG502 mul8u_error::@3 + //SEG506 mul8u_error::@3 b3: - //SEG503 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG507 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //SEG504 [250] call print_byte - //SEG505 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG508 [254] call print_byte + //SEG509 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] print_byte_from_b3: - //SEG506 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG507 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG510 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG511 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG508 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG512 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] b4_from_b3: jmp b4 - //SEG509 mul8u_error::@4 + //SEG513 mul8u_error::@4 b4: - //SEG510 [252] call print_str - //SEG511 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG514 [256] call print_str + //SEG515 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] print_str_from_b4: - //SEG512 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG513 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG516 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG517 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str jmp b5 - //SEG514 mul8u_error::@5 + //SEG518 mul8u_error::@5 b5: - //SEG515 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG519 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 // (word) print_word::w#3 = (word) mul8u_error::ms#0 // register copy zp ZP_WORD:8 - //SEG516 [254] call print_word - //SEG517 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG520 [258] call print_word + //SEG521 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] print_word_from_b5: - //SEG518 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG519 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG522 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG523 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG520 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG524 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] b6_from_b5: jmp b6 - //SEG521 mul8u_error::@6 + //SEG525 mul8u_error::@6 b6: - //SEG522 [256] call print_str - //SEG523 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG526 [260] call print_str + //SEG527 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] print_str_from_b6: - //SEG524 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG525 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG528 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG529 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str jmp b7 - //SEG526 mul8u_error::@7 + //SEG530 mul8u_error::@7 b7: - //SEG527 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG531 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG528 [258] call print_word - //SEG529 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG532 [262] call print_word + //SEG533 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] print_word_from_b7: - //SEG530 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG531 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG534 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG535 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG532 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG536 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] b8_from_b7: jmp b8 - //SEG533 mul8u_error::@8 + //SEG537 mul8u_error::@8 b8: - //SEG534 [260] call print_str - //SEG535 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG538 [264] call print_str + //SEG539 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] print_str_from_b8: - //SEG536 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG537 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG540 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG541 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str jmp b9 - //SEG538 mul8u_error::@9 + //SEG542 mul8u_error::@9 b9: - //SEG539 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG543 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG540 [262] call print_word - //SEG541 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG544 [266] call print_word + //SEG545 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] print_word_from_b9: - //SEG542 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG543 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG546 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG547 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG544 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG548 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] b10_from_b9: jmp b10 - //SEG545 mul8u_error::@10 + //SEG549 mul8u_error::@10 b10: - //SEG546 [264] call print_ln - //SEG547 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG550 [268] call print_ln + //SEG551 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] print_ln_from_b10: - //SEG548 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG549 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG552 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG553 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG550 mul8u_error::@return + //SEG554 mul8u_error::@return breturn: - //SEG551 [265] return + //SEG555 [269] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -9111,66 +9183,66 @@ mul8u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG552 mulf8u +//SEG556 mulf8u mulf8u: { .label return = $e - //SEG553 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG557 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 // (byte) mulf8u_prepare::a#0 = (byte) mulf8u::a#0 // register copy reg byte a - //SEG554 [267] call mulf8u_prepare - //SEG555 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG558 [271] call mulf8u_prepare + //SEG559 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] mulf8u_prepare_from_mulf8u: - //SEG556 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG560 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare jmp b2 - //SEG557 mulf8u::@2 + //SEG561 mulf8u::@2 b2: - //SEG558 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG562 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 // (byte) mulf8u_prepared::b#0 = (byte) mulf8u::b#0 // register copy reg byte x - //SEG559 [269] call mulf8u_prepared - //SEG560 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG563 [273] call mulf8u_prepared + //SEG564 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] mulf8u_prepared_from_b2: - //SEG561 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG565 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG562 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG566 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 // (word) mulf8u_prepared::return#2 = (word) mulf8u_prepared::return#0 // register copy zp ZP_WORD:14 jmp b3 - //SEG563 mulf8u::@3 + //SEG567 mulf8u::@3 b3: - //SEG564 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG568 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 // (word) mulf8u::return#0 = (word) mulf8u_prepared::return#2 // register copy zp ZP_WORD:14 jmp breturn - //SEG565 mulf8u::@return + //SEG569 mulf8u::@return breturn: - //SEG566 [272] return + //SEG570 [276] return rts } -//SEG567 muls8u +//SEG571 muls8u muls8u: { .label return = 8 .label m = 8 .label a = 2 - //SEG568 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + //SEG572 [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b1_from_muls8u - //SEG569 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG573 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] b2_from_muls8u: - //SEG570 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 + //SEG574 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG571 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG575 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 lda #<0 sta m lda #>0 sta m+1 jmp b2 - //SEG572 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG576 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] b2_from_b2: - //SEG573 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG574 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG577 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG578 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy jmp b2 - //SEG575 muls8u::@2 + //SEG579 muls8u::@2 b2: - //SEG576 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG580 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -9178,147 +9250,147 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG577 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG581 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG578 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG582 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2_from_b2 - //SEG579 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG583 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] b1_from_b2: - //SEG580 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG584 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG581 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG585 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b1_from_muls8u: - //SEG582 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG586 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #<0 sta return lda #>0 sta return+1 jmp b1 - //SEG583 muls8u::@1 + //SEG587 muls8u::@1 b1: jmp breturn - //SEG584 muls8u::@return + //SEG588 muls8u::@return breturn: - //SEG585 [279] return + //SEG589 [283] return rts } -//SEG586 mulf_tables_cmp +//SEG590 mulf_tables_cmp mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = 4 - //SEG587 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG591 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] b1_from_mulf_tables_cmp: - //SEG588 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG592 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG589 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG593 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 jmp b1 - //SEG590 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG594 [285] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] b1_from_b2: - //SEG591 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG592 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG595 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG596 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy jmp b1 - //SEG593 mulf_tables_cmp::@1 + //SEG597 mulf_tables_cmp::@1 b1: - //SEG594 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG598 [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y ldy #0 cmp (asm_sqr),y beq b2 jmp b3 - //SEG595 mulf_tables_cmp::@3 + //SEG599 mulf_tables_cmp::@3 b3: - //SEG596 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG600 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG597 [284] call print_str - //SEG598 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG601 [288] call print_str + //SEG602 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] print_str_from_b3: - //SEG599 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG603 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG600 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG604 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str jmp b6 - //SEG601 mulf_tables_cmp::@6 + //SEG605 mulf_tables_cmp::@6 b6: - //SEG602 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG606 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 // (word~) print_word::w#11 = (word)(byte*) mulf_tables_cmp::asm_sqr#2 // register copy zp ZP_WORD:8 - //SEG603 [286] call print_word - //SEG604 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG607 [290] call print_word + //SEG608 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] print_word_from_b6: - //SEG605 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy - //SEG606 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy + //SEG609 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG610 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy jsr print_word - //SEG607 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG611 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] b7_from_b6: jmp b7 - //SEG608 mulf_tables_cmp::@7 + //SEG612 mulf_tables_cmp::@7 b7: - //SEG609 [288] call print_str - //SEG610 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG613 [292] call print_str + //SEG614 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] print_str_from_b7: - //SEG611 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy - //SEG612 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 + //SEG615 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG616 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str jmp b8 - //SEG613 mulf_tables_cmp::@8 + //SEG617 mulf_tables_cmp::@8 b8: - //SEG614 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG618 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG615 [290] call print_word - //SEG616 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG619 [294] call print_word + //SEG620 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] print_word_from_b8: - //SEG617 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy - //SEG618 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy + //SEG621 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG622 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy jsr print_word - //SEG619 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] + //SEG623 [295] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] breturn_from_b8: - //SEG620 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG624 [295] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG621 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy + //SEG625 [295] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy jmp breturn - //SEG622 mulf_tables_cmp::@return + //SEG626 mulf_tables_cmp::@return breturn: - //SEG623 [292] return + //SEG627 [296] return rts - //SEG624 mulf_tables_cmp::@2 + //SEG628 mulf_tables_cmp::@2 b2: - //SEG625 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG629 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG626 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG630 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG627 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG631 [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1_from_b2 @@ -9327,58 +9399,58 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] + //SEG632 [300] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5] b5_from_b2: jmp b5 - //SEG629 mulf_tables_cmp::@5 + //SEG633 mulf_tables_cmp::@5 b5: - //SEG630 [297] call print_str - //SEG631 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG634 [301] call print_str + //SEG635 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] print_str_from_b5: - //SEG632 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 + //SEG636 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG633 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG637 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG634 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG638 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] b10_from_b5: jmp b10 - //SEG635 mulf_tables_cmp::@10 + //SEG639 mulf_tables_cmp::@10 b10: - //SEG636 [299] call print_ln - //SEG637 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG640 [303] call print_ln + //SEG641 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] print_ln_from_b10: - //SEG638 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy - //SEG639 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG642 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG643 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG640 [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG644 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG641 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] + //SEG645 [295] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] breturn_from_b10: - //SEG642 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy - //SEG643 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy + //SEG646 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG647 [295] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG644 mulf_init_asm +//SEG648 mulf_init_asm mulf_init_asm: { .label mem = $ff - //SEG645 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG649 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -9417,25 +9489,25 @@ mulf_init_asm: { dey inx bne !- - //SEG646 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG647 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG648 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG649 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem jmp breturn - //SEG650 mulf_init_asm::@return + //SEG654 mulf_init_asm::@return breturn: - //SEG651 [306] return + //SEG655 [310] return rts } -//SEG652 mulf_init +//SEG656 mulf_init mulf_init: { .label sqr1_hi = 6 .label sqr = 8 @@ -9444,81 +9516,81 @@ mulf_init: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG653 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG657 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] b1_from_mulf_init: - //SEG654 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG658 [312] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG655 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG659 [312] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG656 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG660 [312] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG657 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG661 [312] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr lda #>0 sta sqr+1 - //SEG658 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG662 [312] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG659 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG663 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] b1_from_b2: - //SEG660 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG661 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG662 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG663 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG664 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG664 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG665 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG666 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG667 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG668 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy jmp b1 - //SEG665 mulf_init::@1 + //SEG669 mulf_init::@1 b1: - //SEG666 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG670 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG667 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG671 [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG668 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG672 [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2_from_b1 jmp b5 - //SEG669 mulf_init::@5 + //SEG673 mulf_init::@5 b5: - //SEG670 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG674 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG671 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG675 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG672 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG676 [318] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] b2_from_b1: b2_from_b5: - //SEG673 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG674 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG677 [318] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG678 [318] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy jmp b2 - //SEG675 mulf_init::@2 + //SEG679 mulf_init::@2 b2: - //SEG676 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG680 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG677 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG681 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG678 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG682 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG679 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG683 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_hi),y - //SEG680 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG684 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG681 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG685 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -9526,80 +9598,80 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG682 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG686 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG683 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG687 [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1_from_b2 lda sqr1_lo cmp #mulf_init::@3] + //SEG688 [327] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] b3_from_b2: - //SEG685 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG689 [327] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG686 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG690 [327] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG687 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG691 [327] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG688 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG692 [327] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 jmp b3 - //SEG689 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG693 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] b3_from_b4: - //SEG690 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG691 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG692 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG693 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG694 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG695 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG696 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG697 [327] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy jmp b3 - //SEG694 mulf_init::@3 + //SEG698 mulf_init::@3 b3: - //SEG695 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG699 [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG696 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG700 [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x ldy #0 sta (sqr2_hi),y - //SEG697 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG701 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG698 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG702 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG699 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG703 [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b12_from_b3 - //SEG700 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG704 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] b4_from_b3: - //SEG701 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG705 [333] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir jmp b4 - //SEG702 mulf_init::@4 + //SEG706 mulf_init::@4 b4: - //SEG703 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG707 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG704 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG708 [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3_from_b4 @@ -9607,56 +9679,56 @@ mulf_init: { cmp #mulf_init::@12] + //SEG714 [339] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] b12_from_b3: jmp b12 - //SEG711 mulf_init::@12 + //SEG715 mulf_init::@12 b12: - //SEG712 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG716 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] b4_from_b12: - //SEG713 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG717 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy jmp b4 } -//SEG714 print_cls +//SEG718 print_cls print_cls: { .label sc = 4 - //SEG715 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG719 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] b1_from_print_cls: - //SEG716 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG720 [341] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 jmp b1 - //SEG717 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG721 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] b1_from_b1: - //SEG718 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG722 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy jmp b1 - //SEG719 print_cls::@1 + //SEG723 print_cls::@1 b1: - //SEG720 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG724 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG721 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG725 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG722 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG726 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1_from_b1 @@ -9664,9 +9736,9 @@ print_cls: { cmp #<$400+$3e8 bne b1_from_b1 jmp breturn - //SEG723 print_cls::@return + //SEG727 print_cls::@return breturn: - //SEG724 [341] return + //SEG728 [345] return rts } print_hextab: .text "0123456789abcdef" @@ -9818,7 +9890,11 @@ Removing instruction jmp b1 Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction ldy #0 +Removing instruction lda m+1 +Removing instruction lda m+1 Removing instruction lda #>0 +Removing instruction lda m+1 +Removing instruction lda m+1 Removing instruction ldx memB Removing instruction lda memA Removing instruction lda #<0 @@ -10151,9 +10227,11 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) +(byte~) mul8s::$11 reg byte a 20.0 (byte~) mul8s::$12 reg byte a 4.0 (byte~) mul8s::$16 reg byte a 4.0 (byte~) mul8s::$17 reg byte a 4.0 +(byte~) mul8s::$5 reg byte a 20.0 (byte~) mul8s::$6 reg byte a 4.0 (label) mul8s::@1 (label) mul8s::@2 @@ -10162,15 +10240,15 @@ FINAL SYMBOL TABLE (label) mul8s::@6 (label) mul8s::@return (signed byte) mul8s::a -(signed byte) mul8s::a#0 a zp ZP_BYTE:2 7.357142857142858 +(signed byte) mul8s::a#0 a zp ZP_BYTE:2 6.4375 (signed byte) mul8s::b -(signed byte) mul8s::b#0 reg byte y 9.363636363636363 +(signed byte) mul8s::b#0 reg byte y 8.583333333333332 (word) mul8s::m (word) mul8s::m#0 m zp ZP_WORD:12 2.0 (word) mul8s::m#1 m zp ZP_WORD:12 4.0 (word) mul8s::m#2 m zp ZP_WORD:12 4.0 (word) mul8s::m#4 m zp ZP_WORD:12 1.3333333333333333 -(word) mul8s::m#5 m zp ZP_WORD:12 2.5 +(word) mul8s::m#5 m zp ZP_WORD:12 2.4 (signed word) mul8s::return (signed word) mul8s::return#2 return zp ZP_WORD:12 202.0 (void()) mul8s_compare() @@ -10342,9 +10420,11 @@ FINAL SYMBOL TABLE (signed word) mulf8s::return#0 return zp ZP_WORD:14 34.33333333333333 (signed word) mulf8s::return#2 return zp ZP_WORD:14 202.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) +(byte~) mulf8s_prepared::$10 reg byte a 20.0 (byte~) mulf8s_prepared::$11 reg byte a 4.0 (byte~) mulf8s_prepared::$15 reg byte a 4.0 (byte~) mulf8s_prepared::$16 reg byte a 4.0 +(byte~) mulf8s_prepared::$4 reg byte a 20.0 (byte~) mulf8s_prepared::$5 reg byte a 4.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 @@ -10353,13 +10433,13 @@ FINAL SYMBOL TABLE (label) mulf8s_prepared::@6 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.4 +(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.36363636363636365 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 m zp ZP_WORD:14 2.0 (word) mulf8s_prepared::m#1 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#2 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#4 m zp ZP_WORD:14 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.5 +(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.4 (signed byte*) mulf8s_prepared::memA (const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253 (signed word) mulf8s_prepared::return @@ -10633,13 +10713,17 @@ reg byte y [ mul8s::b#0 ] reg byte x [ mul8s_error::a#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +reg byte a [ mul8s::$5 ] reg byte a [ mul8s::$6 ] reg byte a [ mul8s::$16 ] +reg byte a [ mul8s::$11 ] reg byte a [ mul8s::$12 ] reg byte a [ mul8s::$17 ] reg byte a [ mul8u::$1 ] +reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] +reg byte a [ mulf8s_prepared::$10 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] reg byte x [ muls8u::b#0 ] @@ -10675,12 +10759,12 @@ main: { lda #5 sta BGCOL //SEG10 [5] call print_cls - //SEG11 [336] phi from main to print_cls [phi:main->print_cls] + //SEG11 [340] phi from main to print_cls [phi:main->print_cls] jsr print_cls //SEG12 [6] phi from main to main::@1 [phi:main->main::@1] //SEG13 main::@1 //SEG14 [7] call mulf_init - //SEG15 [307] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] + //SEG15 [311] phi from main::@1 to mulf_init [phi:main::@1->mulf_init] jsr mulf_init //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] //SEG17 main::@2 @@ -10689,12 +10773,12 @@ main: { //SEG19 [10] phi from main::@2 to main::@3 [phi:main::@2->main::@3] //SEG20 main::@3 //SEG21 [11] call mulf_tables_cmp - //SEG22 [280] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] + //SEG22 [284] phi from main::@3 to mulf_tables_cmp [phi:main::@3->mulf_tables_cmp] jsr mulf_tables_cmp //SEG23 [12] phi from main::@3 to main::@4 [phi:main::@3->main::@4] //SEG24 main::@4 //SEG25 [13] call mul8u_compare - //SEG26 [202] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] + //SEG26 [206] phi from main::@4 to mul8u_compare [phi:main::@4->mul8u_compare] jsr mul8u_compare //SEG27 [14] phi from main::@4 to main::@5 [phi:main::@4->main::@5] //SEG28 main::@5 @@ -10744,7 +10828,7 @@ mul8s_compare: { //SEG51 [26] (signed byte) mulf8s::b#0 ← (signed byte) mul8s_compare::b#10 -- vbsxx=vbsz1 ldx b //SEG52 [27] call mulf8s - //SEG53 [158] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] + //SEG53 [160] phi from mul8s_compare::@12 to mulf8s [phi:mul8s_compare::@12->mulf8s] jsr mulf8s //SEG54 [28] (signed word) mulf8s::return#2 ← (signed word) mulf8s::return#0 // (signed word) mulf8s::return#2 = (signed word) mulf8s::return#0 // register copy zp ZP_WORD:14 @@ -11210,9 +11294,9 @@ mul8s: { //SEG275 [132] (byte~) mul8u::a#8 ← (byte)(signed byte) mul8s::a#0 -- vbuxx=vbuz1 ldx a //SEG276 [133] call mul8u - //SEG277 [147] phi from mul8s to mul8u [phi:mul8s->mul8u] - //SEG278 [147] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy - //SEG279 [147] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy + //SEG277 [149] phi from mul8s to mul8u [phi:mul8s->mul8u] + //SEG278 [149] phi (byte) mul8u::a#6 = (byte~) mul8u::a#8 [phi:mul8s->mul8u#0] -- register_copy + //SEG279 [149] phi (byte) mul8u::b#2 = (byte~) mul8u::b#3 [phi:mul8s->mul8u#1] -- register_copy jsr mul8u //SEG280 [134] (word) mul8u::return#2 ← (word) mul8u::res#2 // (word) mul8u::return#2 = (word) mul8u::res#2 // register copy zp ZP_WORD:12 @@ -11224,70 +11308,72 @@ mul8s: { cmp #0 bpl b1 //SEG284 mul8s::@3 - //SEG285 [137] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG285 [137] (byte~) mul8s::$5 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG286 [138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy + //SEG286 [138] (byte~) mul8s::$6 ← > (word) mul8s::m#0 -- vbuaa=_hi_vwuz1 + //SEG287 [139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0 -- vbuaa=vbuaa_minus_vbuyy sty $ff sec sbc $ff - //SEG287 [139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG288 [140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG288 [140] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] - //SEG289 [140] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy - //SEG290 mul8s::@1 + //SEG289 [141] phi from mul8s::@3 mul8s::@6 to mul8s::@1 [phi:mul8s::@3/mul8s::@6->mul8s::@1] + //SEG290 [141] phi (word) mul8s::m#5 = (word) mul8s::m#1 [phi:mul8s::@3/mul8s::@6->mul8s::@1#0] -- register_copy + //SEG291 mul8s::@1 b1: - //SEG291 [141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 + //SEG292 [142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2 -- vbsyy_ge_0_then_la1 cpy #0 bpl b2 - //SEG292 mul8s::@4 - //SEG293 [142] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG293 mul8s::@4 + //SEG294 [143] (byte~) mul8s::$11 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG294 [143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG295 [144] (byte~) mul8s::$12 ← > (word) mul8s::m#5 -- vbuaa=_hi_vwuz1 + //SEG296 [145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc a - //SEG295 [144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa + //SEG297 [146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG296 [145] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] - //SEG297 [145] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy - //SEG298 mul8s::@2 + //SEG298 [147] phi from mul8s::@1 mul8s::@4 to mul8s::@2 [phi:mul8s::@1/mul8s::@4->mul8s::@2] + //SEG299 [147] phi (word) mul8s::m#4 = (word) mul8s::m#5 [phi:mul8s::@1/mul8s::@4->mul8s::@2#0] -- register_copy + //SEG300 mul8s::@2 b2: - //SEG299 mul8s::@return - //SEG300 [146] return + //SEG301 mul8s::@return + //SEG302 [148] return rts } -//SEG301 mul8u +//SEG303 mul8u mul8u: { .label mb = 6 .label res = $c .label return = $c - //SEG302 [148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa + //SEG304 [150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2 -- vwuz1=_word_vbuaa sta mb lda #0 sta mb+1 - //SEG303 [149] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] - //SEG304 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy - //SEG305 [149] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 + //SEG305 [151] phi from mul8u to mul8u::@1 [phi:mul8u->mul8u::@1] + //SEG306 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#0 [phi:mul8u->mul8u::@1#0] -- register_copy + //SEG307 [151] phi (word) mul8u::res#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u->mul8u::@1#1] -- vwuz1=vbuc1 sta res sta res+1 - //SEG306 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy - //SEG307 mul8u::@1 + //SEG308 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#6 [phi:mul8u->mul8u::@1#2] -- register_copy + //SEG309 mul8u::@1 b1: - //SEG308 [150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 + //SEG310 [152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2 -- vbuxx_neq_0_then_la1 cpx #0 bne b2 - //SEG309 mul8u::@return - //SEG310 [151] return + //SEG311 mul8u::@return + //SEG312 [153] return rts - //SEG311 mul8u::@2 + //SEG313 mul8u::@2 b2: - //SEG312 [152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG314 [154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG313 [153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 + //SEG315 [155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4 -- vbuaa_eq_0_then_la1 cmp #0 beq b4 - //SEG314 mul8u::@7 - //SEG315 [154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 + //SEG316 mul8u::@7 + //SEG317 [156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 -- vwuz1=vwuz1_plus_vwuz2 lda res clc adc mb @@ -11295,108 +11381,110 @@ mul8u: { lda res+1 adc mb+1 sta res+1 - //SEG316 [155] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] - //SEG317 [155] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy - //SEG318 mul8u::@4 + //SEG318 [157] phi from mul8u::@2 mul8u::@7 to mul8u::@4 [phi:mul8u::@2/mul8u::@7->mul8u::@4] + //SEG319 [157] phi (word) mul8u::res#6 = (word) mul8u::res#2 [phi:mul8u::@2/mul8u::@7->mul8u::@4#0] -- register_copy + //SEG320 mul8u::@4 b4: - //SEG319 [156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 + //SEG321 [158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuxx_ror_1 txa lsr tax - //SEG320 [157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 + //SEG322 [159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1 asl mb rol mb+1 - //SEG321 [149] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] - //SEG322 [149] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy - //SEG323 [149] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy - //SEG324 [149] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy + //SEG323 [151] phi from mul8u::@4 to mul8u::@1 [phi:mul8u::@4->mul8u::@1] + //SEG324 [151] phi (word) mul8u::mb#2 = (word) mul8u::mb#1 [phi:mul8u::@4->mul8u::@1#0] -- register_copy + //SEG325 [151] phi (word) mul8u::res#2 = (word) mul8u::res#6 [phi:mul8u::@4->mul8u::@1#1] -- register_copy + //SEG326 [151] phi (byte) mul8u::a#3 = (byte) mul8u::a#0 [phi:mul8u::@4->mul8u::@1#2] -- register_copy jmp b1 } -//SEG325 mulf8s +//SEG327 mulf8s mulf8s: { .label return = $e - //SEG326 mulf8s::mulf8s_prepare1 - //SEG327 [159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 + //SEG328 mulf8s::mulf8s_prepare1 + //SEG329 [161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0 // (byte~) mulf8u_prepare::a#3 = (byte)(signed byte) mulf8s::a#0 // register copy reg byte a - //SEG328 [160] call mulf8u_prepare - //SEG329 [186] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] - //SEG330 [186] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy + //SEG330 [162] call mulf8u_prepare + //SEG331 [190] phi from mulf8s::mulf8s_prepare1 to mulf8u_prepare [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare] + //SEG332 [190] phi (byte) mulf8u_prepare::a#2 = (byte~) mulf8u_prepare::a#3 [phi:mulf8s::mulf8s_prepare1->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG331 mulf8s::@2 - //SEG332 [161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx + //SEG333 mulf8s::@2 + //SEG334 [163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0 -- vbsz1=vbsxx stx mulf8s_prepared.b - //SEG333 [162] call mulf8s_prepared + //SEG335 [164] call mulf8s_prepared jsr mulf8s_prepared - //SEG334 [163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 + //SEG336 [165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4 // (signed word) mulf8s_prepared::return#2 = (signed word)(word) mulf8s_prepared::m#4 // register copy zp ZP_WORD:14 - //SEG335 mulf8s::@4 - //SEG336 [164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 + //SEG337 mulf8s::@4 + //SEG338 [166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2 // (signed word) mulf8s::return#0 = (signed word) mulf8s_prepared::return#2 // register copy zp ZP_WORD:14 - //SEG337 mulf8s::@return - //SEG338 [165] return + //SEG339 mulf8s::@return + //SEG340 [167] return rts } -//SEG339 mulf8s_prepared +//SEG341 mulf8s_prepared mulf8s_prepared: { .label memA = $fd .label m = $e .label b = 3 .label return = $e - //SEG340 [166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 + //SEG342 [168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0 -- vbuxx=vbuz1 ldx b - //SEG341 [167] call mulf8u_prepared - //SEG342 [181] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] - //SEG343 [181] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy + //SEG343 [169] call mulf8u_prepared + //SEG344 [185] phi from mulf8s_prepared to mulf8u_prepared [phi:mulf8s_prepared->mulf8u_prepared] + //SEG345 [185] phi (byte) mulf8u_prepared::b#2 = (byte~) mulf8u_prepared::b#3 [phi:mulf8s_prepared->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG344 [168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 + //SEG346 [170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0 // (word) mulf8u_prepared::return#3 = (word) mulf8u_prepared::return#0 // register copy zp ZP_WORD:14 - //SEG345 mulf8s_prepared::@6 - //SEG346 [169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 + //SEG347 mulf8s_prepared::@6 + //SEG348 [171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3 // (word) mulf8s_prepared::m#0 = (word) mulf8u_prepared::return#3 // register copy zp ZP_WORD:14 - //SEG347 [170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 + //SEG349 [172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1 -- _deref_pbsc1_ge_0_then_la1 lda memA cmp #0 bpl b1 - //SEG348 mulf8s_prepared::@3 - //SEG349 [171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG350 mulf8s_prepared::@3 + //SEG351 [173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG350 [172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 + //SEG352 [174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0 -- vbuaa=_hi_vwuz1 + //SEG353 [175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0 -- vbuaa=vbuaa_minus_vbuz1 sec sbc b - //SEG351 [173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa + //SEG354 [176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG352 [174] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] - //SEG353 [174] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy - //SEG354 mulf8s_prepared::@1 + //SEG355 [177] phi from mulf8s_prepared::@3 mulf8s_prepared::@6 to mulf8s_prepared::@1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1] + //SEG356 [177] phi (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#1 [phi:mulf8s_prepared::@3/mulf8s_prepared::@6->mulf8s_prepared::@1#0] -- register_copy + //SEG357 mulf8s_prepared::@1 b1: - //SEG355 [175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 + //SEG358 [178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2 -- vbsz1_ge_0_then_la1 lda b cmp #0 bpl b2 - //SEG356 mulf8s_prepared::@4 - //SEG357 [176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG359 mulf8s_prepared::@4 + //SEG360 [179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 lda m+1 - //SEG358 [177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 + //SEG361 [180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5 -- vbuaa=_hi_vwuz1 + //SEG362 [181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0) -- vbuaa=vbuaa_minus__deref_pbuc1 sec sbc memA - //SEG359 [178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa + //SEG363 [182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16 -- vwuz1=vwuz1_sethi_vbuaa sta m+1 - //SEG360 [179] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] - //SEG361 [179] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy - //SEG362 mulf8s_prepared::@2 + //SEG364 [183] phi from mulf8s_prepared::@1 mulf8s_prepared::@4 to mulf8s_prepared::@2 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2] + //SEG365 [183] phi (word) mulf8s_prepared::m#4 = (word) mulf8s_prepared::m#5 [phi:mulf8s_prepared::@1/mulf8s_prepared::@4->mulf8s_prepared::@2#0] -- register_copy + //SEG366 mulf8s_prepared::@2 b2: - //SEG363 mulf8s_prepared::@return - //SEG364 [180] return + //SEG367 mulf8s_prepared::@return + //SEG368 [184] return rts } -//SEG365 mulf8u_prepared +//SEG369 mulf8u_prepared mulf8u_prepared: { .label resL = $fe .label memB = $ff .label return = $e - //SEG366 [182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx + //SEG370 [186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2 -- _deref_pbuc1=vbuxx stx memB - //SEG367 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } + //SEG371 asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB } sec sm1: lda mulf_sqr1_lo,x @@ -11408,55 +11496,55 @@ mulf8u_prepared: { sm4: sbc mulf_sqr2_hi,x sta memB - //SEG368 [184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG372 [188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda resL sta return lda memB sta return+1 - //SEG369 mulf8u_prepared::@return - //SEG370 [185] return + //SEG373 mulf8u_prepared::@return + //SEG374 [189] return rts } -//SEG371 mulf8u_prepare +//SEG375 mulf8u_prepare mulf8u_prepare: { .label memA = $fd - //SEG372 [187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa + //SEG376 [191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2 -- _deref_pbuc1=vbuaa sta memA - //SEG373 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } + //SEG377 asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 } sta mulf8u_prepared.sm1+1 sta mulf8u_prepared.sm3+1 eor #$ff sta mulf8u_prepared.sm2+1 sta mulf8u_prepared.sm4+1 - //SEG374 mulf8u_prepare::@return - //SEG375 [189] return + //SEG378 mulf8u_prepare::@return + //SEG379 [193] return rts } -//SEG376 muls8s +//SEG380 muls8s muls8s: { .label m = 8 .label return = 8 .label a = 2 - //SEG377 [190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 + //SEG381 [194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5 -- vbsz1_lt_0_then_la1 lda a bmi b6 - //SEG378 muls8s::@6 - //SEG379 [191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 + //SEG382 muls8s::@6 + //SEG383 [195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4 -- vbsz1_le_0_then_la1 cmp #1 bmi b2 - //SEG380 [192] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] - //SEG381 [192] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 + //SEG384 [196] phi from muls8s::@6 to muls8s::@3 [phi:muls8s::@6->muls8s::@3] + //SEG385 [196] phi (signed byte) muls8s::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#0] -- vbsyy=vbuc1 lda #0 tay - //SEG382 [192] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 + //SEG386 [196] phi (signed word) muls8s::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@3#1] -- vwsz1=vbuc1 sta m sta m+1 - //SEG383 [192] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] - //SEG384 [192] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy - //SEG385 [192] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy - //SEG386 muls8s::@3 + //SEG387 [196] phi from muls8s::@3 to muls8s::@3 [phi:muls8s::@3->muls8s::@3] + //SEG388 [196] phi (signed byte) muls8s::j#2 = (signed byte) muls8s::j#1 [phi:muls8s::@3->muls8s::@3#0] -- register_copy + //SEG389 [196] phi (signed word) muls8s::m#3 = (signed word) muls8s::m#1 [phi:muls8s::@3->muls8s::@3#1] -- register_copy + //SEG390 muls8s::@3 b3: - //SEG387 [193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx + //SEG391 [197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0 -- vwsz1=vwsz1_plus_vbsxx txa sta $fe ora #$7f @@ -11471,39 +11559,39 @@ muls8s: { lda m+1 adc $ff sta m+1 - //SEG388 [194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy + //SEG392 [198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2 -- vbsyy=_inc_vbsyy iny - //SEG389 [195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 + //SEG393 [199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b3 - //SEG390 [196] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] - //SEG391 [196] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy + //SEG394 [200] phi from muls8s::@3 muls8s::@5 to muls8s::@4 [phi:muls8s::@3/muls8s::@5->muls8s::@4] + //SEG395 [200] phi (signed word) muls8s::return#0 = (signed word) muls8s::m#1 [phi:muls8s::@3/muls8s::@5->muls8s::@4#0] -- register_copy jmp b4 - //SEG392 [196] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] + //SEG396 [200] phi from muls8s::@6 to muls8s::@4 [phi:muls8s::@6->muls8s::@4] b2: - //SEG393 [196] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 + //SEG397 [200] phi (signed word) muls8s::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s::@6->muls8s::@4#0] -- vwsz1=vbuc1 lda #<0 sta return sta return+1 - //SEG394 muls8s::@4 + //SEG398 muls8s::@4 b4: - //SEG395 muls8s::@return - //SEG396 [197] return + //SEG399 muls8s::@return + //SEG400 [201] return rts - //SEG397 [198] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] + //SEG401 [202] phi from muls8s to muls8s::@5 [phi:muls8s->muls8s::@5] b6: - //SEG398 [198] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 + //SEG402 [202] phi (signed byte) muls8s::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#0] -- vbsyy=vbuc1 lda #0 tay - //SEG399 [198] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 + //SEG403 [202] phi (signed word) muls8s::m#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8s->muls8s::@5#1] -- vwsz1=vbuc1 sta m sta m+1 - //SEG400 [198] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] - //SEG401 [198] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy - //SEG402 [198] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy - //SEG403 muls8s::@5 + //SEG404 [202] phi from muls8s::@5 to muls8s::@5 [phi:muls8s::@5->muls8s::@5] + //SEG405 [202] phi (signed byte) muls8s::i#2 = (signed byte) muls8s::i#1 [phi:muls8s::@5->muls8s::@5#0] -- register_copy + //SEG406 [202] phi (signed word) muls8s::m#5 = (signed word) muls8s::m#2 [phi:muls8s::@5->muls8s::@5#1] -- register_copy + //SEG407 muls8s::@5 b5: - //SEG404 [199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx + //SEG408 [203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0 -- vwsz1=vwsz1_minus_vbsxx txa sta $fe ora #$7f @@ -11518,73 +11606,73 @@ muls8s: { lda m+1 sbc $ff sta m+1 - //SEG405 [200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy + //SEG409 [204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2 -- vbsyy=_dec_vbsyy dey - //SEG406 [201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 + //SEG410 [205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5 -- vbsyy_neq_vbsz1_then_la1 cpy a bne b5 jmp b4 } -//SEG407 mul8u_compare +//SEG411 mul8u_compare mul8u_compare: { .label ms = 8 .label mf = $e .label mn = $c .label b = 3 .label a = 2 - //SEG408 [203] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] - //SEG409 [203] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 + //SEG412 [207] phi from mul8u_compare to mul8u_compare::@1 [phi:mul8u_compare->mul8u_compare::@1] + //SEG413 [207] phi (byte) mul8u_compare::a#7 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare->mul8u_compare::@1#0] -- vbuz1=vbuc1 lda #0 sta a - //SEG410 [203] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] - //SEG411 [203] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy - //SEG412 mul8u_compare::@1 + //SEG414 [207] phi from mul8u_compare::@10 to mul8u_compare::@1 [phi:mul8u_compare::@10->mul8u_compare::@1] + //SEG415 [207] phi (byte) mul8u_compare::a#7 = (byte) mul8u_compare::a#1 [phi:mul8u_compare::@10->mul8u_compare::@1#0] -- register_copy + //SEG416 mul8u_compare::@1 b1: - //SEG413 [204] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] - //SEG414 [204] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 + //SEG417 [208] phi from mul8u_compare::@1 to mul8u_compare::@2 [phi:mul8u_compare::@1->mul8u_compare::@2] + //SEG418 [208] phi (byte) mul8u_compare::b#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@1->mul8u_compare::@2#0] -- vbuz1=vbuc1 lda #0 sta b - //SEG415 [204] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] - //SEG416 [204] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy - //SEG417 mul8u_compare::@2 + //SEG419 [208] phi from mul8u_compare::@5 to mul8u_compare::@2 [phi:mul8u_compare::@5->mul8u_compare::@2] + //SEG420 [208] phi (byte) mul8u_compare::b#10 = (byte) mul8u_compare::b#1 [phi:mul8u_compare::@5->mul8u_compare::@2#0] -- register_copy + //SEG421 mul8u_compare::@2 b2: - //SEG418 [205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 + //SEG422 [209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7 // (byte) muls8u::a#0 = (byte) mul8u_compare::a#7 // register copy zp ZP_BYTE:2 - //SEG419 [206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG423 [210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG420 [207] call muls8u + //SEG424 [211] call muls8u jsr muls8u - //SEG421 [208] (word) muls8u::return#2 ← (word) muls8u::return#0 + //SEG425 [212] (word) muls8u::return#2 ← (word) muls8u::return#0 // (word) muls8u::return#2 = (word) muls8u::return#0 // register copy zp ZP_WORD:8 - //SEG422 mul8u_compare::@12 - //SEG423 [209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 + //SEG426 mul8u_compare::@12 + //SEG427 [213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2 // (word) mul8u_compare::ms#0 = (word) muls8u::return#2 // register copy zp ZP_WORD:8 - //SEG424 [210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 + //SEG428 [214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7 -- vbuaa=vbuz1 lda a - //SEG425 [211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 + //SEG429 [215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10 -- vbuxx=vbuz1 ldx b - //SEG426 [212] call mulf8u + //SEG430 [216] call mulf8u jsr mulf8u - //SEG427 [213] (word) mulf8u::return#2 ← (word) mulf8u::return#0 + //SEG431 [217] (word) mulf8u::return#2 ← (word) mulf8u::return#0 // (word) mulf8u::return#2 = (word) mulf8u::return#0 // register copy zp ZP_WORD:14 - //SEG428 mul8u_compare::@13 - //SEG429 [214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 + //SEG432 mul8u_compare::@13 + //SEG433 [218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2 // (word) mul8u_compare::mf#0 = (word) mulf8u::return#2 // register copy zp ZP_WORD:14 - //SEG430 [215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG434 [219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG431 [216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 + //SEG435 [220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10 -- vbuaa=vbuz1 lda b - //SEG432 [217] call mul8u - //SEG433 [147] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] - //SEG434 [147] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy - //SEG435 [147] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy + //SEG436 [221] call mul8u + //SEG437 [149] phi from mul8u_compare::@13 to mul8u [phi:mul8u_compare::@13->mul8u] + //SEG438 [149] phi (byte) mul8u::a#6 = (byte) mul8u::a#2 [phi:mul8u_compare::@13->mul8u#0] -- register_copy + //SEG439 [149] phi (byte) mul8u::b#2 = (byte) mul8u::b#1 [phi:mul8u_compare::@13->mul8u#1] -- register_copy jsr mul8u - //SEG436 [218] (word) mul8u::return#3 ← (word) mul8u::res#2 + //SEG440 [222] (word) mul8u::return#3 ← (word) mul8u::res#2 // (word) mul8u::return#3 = (word) mul8u::res#2 // register copy zp ZP_WORD:12 - //SEG437 mul8u_compare::@14 - //SEG438 [219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 + //SEG441 mul8u_compare::@14 + //SEG442 [223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3 // (word) mul8u_compare::mn#0 = (word) mul8u::return#3 // register copy zp ZP_WORD:12 - //SEG439 [220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 + //SEG443 [224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mf bne !+ @@ -11592,19 +11680,19 @@ mul8u_compare: { cmp mf+1 beq b6 !: - //SEG440 [221] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] - //SEG441 mul8u_compare::@6 - //SEG442 [222] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] - //SEG443 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG444 [225] phi from mul8u_compare::@14 to mul8u_compare::@6 [phi:mul8u_compare::@14->mul8u_compare::@6] + //SEG445 mul8u_compare::@6 + //SEG446 [226] phi from mul8u_compare::@6 to mul8u_compare::@3 [phi:mul8u_compare::@6->mul8u_compare::@3] + //SEG447 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@6->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG444 [222] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] + //SEG448 [226] phi from mul8u_compare::@14 to mul8u_compare::@3 [phi:mul8u_compare::@14->mul8u_compare::@3] b6: - //SEG445 [222] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 + //SEG449 [226] phi (byte) mul8u_compare::ok#4 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mul8u_compare::@14->mul8u_compare::@3#0] -- vbuxx=vbuc1 ldx #1 - //SEG446 mul8u_compare::@3 + //SEG450 mul8u_compare::@3 b3: - //SEG447 [223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 + //SEG451 [227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20 -- vwuz1_eq_vwuz2_then_la1 lda ms cmp mn bne !+ @@ -11612,189 +11700,189 @@ mul8u_compare: { cmp mn+1 beq b4 !: - //SEG448 [224] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] - //SEG449 [224] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 + //SEG452 [228] phi from mul8u_compare::@3 to mul8u_compare::@4 [phi:mul8u_compare::@3->mul8u_compare::@4] + //SEG453 [228] phi (byte) mul8u_compare::ok#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mul8u_compare::@3->mul8u_compare::@4#0] -- vbuxx=vbuc1 ldx #0 - //SEG450 mul8u_compare::@4 + //SEG454 mul8u_compare::@4 b4: - //SEG451 [225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 + //SEG455 [229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5 -- vbuxx_neq_0_then_la1 cpx #0 bne b5 - //SEG452 mul8u_compare::@8 - //SEG453 [226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG456 mul8u_compare::@8 + //SEG457 [230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG454 [227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 + //SEG458 [231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7 -- vbuxx=vbuz1 ldx a - //SEG455 [228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 + //SEG459 [232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10 // (byte) mul8u_error::b#0 = (byte) mul8u_compare::b#10 // register copy zp ZP_BYTE:3 - //SEG456 [229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 + //SEG460 [233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0 // (word) mul8u_error::ms#0 = (word) mul8u_compare::ms#0 // register copy zp ZP_WORD:8 - //SEG457 [230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 + //SEG461 [234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0 // (word) mul8u_error::mn#0 = (word) mul8u_compare::mn#0 // register copy zp ZP_WORD:12 - //SEG458 [231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 + //SEG462 [235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0 // (word) mul8u_error::mf#0 = (word) mul8u_compare::mf#0 // register copy zp ZP_WORD:14 - //SEG459 [232] call mul8u_error - //SEG460 [243] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] + //SEG463 [236] call mul8u_error + //SEG464 [247] phi from mul8u_compare::@8 to mul8u_error [phi:mul8u_compare::@8->mul8u_error] jsr mul8u_error - //SEG461 mul8u_compare::@return + //SEG465 mul8u_compare::@return breturn: - //SEG462 [233] return + //SEG466 [237] return rts - //SEG463 mul8u_compare::@5 + //SEG467 mul8u_compare::@5 b5: - //SEG464 [234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 + //SEG468 [238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10 -- vbuz1=_inc_vbuz1 inc b - //SEG465 [235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 + //SEG469 [239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2 -- vbuz1_neq_0_then_la1 lda b cmp #0 bne b2 - //SEG466 mul8u_compare::@10 - //SEG467 [236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 + //SEG470 mul8u_compare::@10 + //SEG471 [240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7 -- vbuz1=_inc_vbuz1 inc a - //SEG468 [237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 + //SEG472 [241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1 -- vbuz1_neq_0_then_la1 lda a cmp #0 bne b1 - //SEG469 [238] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] - //SEG470 mul8u_compare::@11 - //SEG471 [239] call print_str - //SEG472 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] - //SEG473 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy - //SEG474 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 + //SEG473 [242] phi from mul8u_compare::@10 to mul8u_compare::@11 [phi:mul8u_compare::@10->mul8u_compare::@11] + //SEG474 mul8u_compare::@11 + //SEG475 [243] call print_str + //SEG476 [63] phi from mul8u_compare::@11 to print_str [phi:mul8u_compare::@11->print_str] + //SEG477 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_compare::@11->print_str#0] -- register_copy + //SEG478 [63] phi (byte*) print_str::str#18 = (const string) mul8u_compare::str [phi:mul8u_compare::@11->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG475 [240] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] - //SEG476 mul8u_compare::@16 - //SEG477 [241] call print_ln - //SEG478 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] - //SEG479 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy - //SEG480 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy + //SEG479 [244] phi from mul8u_compare::@11 to mul8u_compare::@16 [phi:mul8u_compare::@11->mul8u_compare::@16] + //SEG480 mul8u_compare::@16 + //SEG481 [245] call print_ln + //SEG482 [58] phi from mul8u_compare::@16 to print_ln [phi:mul8u_compare::@16->print_ln] + //SEG483 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mul8u_compare::@16->print_ln#0] -- register_copy + //SEG484 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_compare::@16->print_ln#1] -- register_copy jsr print_ln jmp breturn - //SEG481 [242] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] - //SEG482 mul8u_compare::@20 - //SEG483 [224] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] - //SEG484 [224] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy + //SEG485 [246] phi from mul8u_compare::@3 to mul8u_compare::@20 [phi:mul8u_compare::@3->mul8u_compare::@20] + //SEG486 mul8u_compare::@20 + //SEG487 [228] phi from mul8u_compare::@20 to mul8u_compare::@4 [phi:mul8u_compare::@20->mul8u_compare::@4] + //SEG488 [228] phi (byte) mul8u_compare::ok#3 = (byte) mul8u_compare::ok#4 [phi:mul8u_compare::@20->mul8u_compare::@4#0] -- register_copy str: .text "multiply results match!@" } -//SEG485 mul8u_error +//SEG489 mul8u_error mul8u_error: { .label b = 3 .label ms = 8 .label mn = $c .label mf = $e - //SEG486 [244] call print_str - //SEG487 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] - //SEG488 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy - //SEG489 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 + //SEG490 [248] call print_str + //SEG491 [63] phi from mul8u_error to print_str [phi:mul8u_error->print_str] + //SEG492 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#31 [phi:mul8u_error->print_str#0] -- register_copy + //SEG493 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str [phi:mul8u_error->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG490 mul8u_error::@1 - //SEG491 [245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 + //SEG494 mul8u_error::@1 + //SEG495 [249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0 // (byte) print_byte::b#3 = (byte) mul8u_error::a#0 // register copy reg byte x - //SEG492 [246] call print_byte - //SEG493 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] - //SEG494 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy - //SEG495 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy + //SEG496 [250] call print_byte + //SEG497 [108] phi from mul8u_error::@1 to print_byte [phi:mul8u_error::@1->print_byte] + //SEG498 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@1->print_byte#0] -- register_copy + //SEG499 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#3 [phi:mul8u_error::@1->print_byte#1] -- register_copy jsr print_byte - //SEG496 [247] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] - //SEG497 mul8u_error::@2 - //SEG498 [248] call print_str - //SEG499 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] - //SEG500 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy - //SEG501 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 + //SEG500 [251] phi from mul8u_error::@1 to mul8u_error::@2 [phi:mul8u_error::@1->mul8u_error::@2] + //SEG501 mul8u_error::@2 + //SEG502 [252] call print_str + //SEG503 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] + //SEG504 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy + //SEG505 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG502 mul8u_error::@3 - //SEG503 [249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 + //SEG506 mul8u_error::@3 + //SEG507 [253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0 -- vbuxx=vbuz1 ldx b - //SEG504 [250] call print_byte - //SEG505 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] - //SEG506 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy - //SEG507 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy + //SEG508 [254] call print_byte + //SEG509 [108] phi from mul8u_error::@3 to print_byte [phi:mul8u_error::@3->print_byte] + //SEG510 [108] phi (byte*) print_char_cursor#140 = (byte*) print_char_cursor#132 [phi:mul8u_error::@3->print_byte#0] -- register_copy + //SEG511 [108] phi (byte) print_byte::b#5 = (byte) print_byte::b#4 [phi:mul8u_error::@3->print_byte#1] -- register_copy jsr print_byte - //SEG508 [251] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] - //SEG509 mul8u_error::@4 - //SEG510 [252] call print_str - //SEG511 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] - //SEG512 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy - //SEG513 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 + //SEG512 [255] phi from mul8u_error::@3 to mul8u_error::@4 [phi:mul8u_error::@3->mul8u_error::@4] + //SEG513 mul8u_error::@4 + //SEG514 [256] call print_str + //SEG515 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] + //SEG516 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy + //SEG517 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG514 mul8u_error::@5 - //SEG515 [253] (word) print_word::w#3 ← (word) mul8u_error::ms#0 + //SEG518 mul8u_error::@5 + //SEG519 [257] (word) print_word::w#3 ← (word) mul8u_error::ms#0 // (word) print_word::w#3 = (word) mul8u_error::ms#0 // register copy zp ZP_WORD:8 - //SEG516 [254] call print_word - //SEG517 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] - //SEG518 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy - //SEG519 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy + //SEG520 [258] call print_word + //SEG521 [102] phi from mul8u_error::@5 to print_word [phi:mul8u_error::@5->print_word] + //SEG522 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@5->print_word#0] -- register_copy + //SEG523 [102] phi (word) print_word::w#6 = (word) print_word::w#3 [phi:mul8u_error::@5->print_word#1] -- register_copy jsr print_word - //SEG520 [255] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] - //SEG521 mul8u_error::@6 - //SEG522 [256] call print_str - //SEG523 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] - //SEG524 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy - //SEG525 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 + //SEG524 [259] phi from mul8u_error::@5 to mul8u_error::@6 [phi:mul8u_error::@5->mul8u_error::@6] + //SEG525 mul8u_error::@6 + //SEG526 [260] call print_str + //SEG527 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] + //SEG528 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy + //SEG529 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 lda #str3 sta print_str.str+1 jsr print_str - //SEG526 mul8u_error::@7 - //SEG527 [257] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 + //SEG530 mul8u_error::@7 + //SEG531 [261] (word) print_word::w#4 ← (word) mul8u_error::mn#0 -- vwuz1=vwuz2 lda mn sta print_word.w lda mn+1 sta print_word.w+1 - //SEG528 [258] call print_word - //SEG529 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] - //SEG530 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy - //SEG531 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy + //SEG532 [262] call print_word + //SEG533 [102] phi from mul8u_error::@7 to print_word [phi:mul8u_error::@7->print_word] + //SEG534 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@7->print_word#0] -- register_copy + //SEG535 [102] phi (word) print_word::w#6 = (word) print_word::w#4 [phi:mul8u_error::@7->print_word#1] -- register_copy jsr print_word - //SEG532 [259] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] - //SEG533 mul8u_error::@8 - //SEG534 [260] call print_str - //SEG535 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] - //SEG536 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy - //SEG537 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 + //SEG536 [263] phi from mul8u_error::@7 to mul8u_error::@8 [phi:mul8u_error::@7->mul8u_error::@8] + //SEG537 mul8u_error::@8 + //SEG538 [264] call print_str + //SEG539 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] + //SEG540 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy + //SEG541 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 lda #str4 sta print_str.str+1 jsr print_str - //SEG538 mul8u_error::@9 - //SEG539 [261] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 + //SEG542 mul8u_error::@9 + //SEG543 [265] (word) print_word::w#5 ← (word) mul8u_error::mf#0 -- vwuz1=vwuz2 lda mf sta print_word.w lda mf+1 sta print_word.w+1 - //SEG540 [262] call print_word - //SEG541 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] - //SEG542 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy - //SEG543 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy + //SEG544 [266] call print_word + //SEG545 [102] phi from mul8u_error::@9 to print_word [phi:mul8u_error::@9->print_word] + //SEG546 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mul8u_error::@9->print_word#0] -- register_copy + //SEG547 [102] phi (word) print_word::w#6 = (word) print_word::w#5 [phi:mul8u_error::@9->print_word#1] -- register_copy jsr print_word - //SEG544 [263] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] - //SEG545 mul8u_error::@10 - //SEG546 [264] call print_ln - //SEG547 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] - //SEG548 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy - //SEG549 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy + //SEG548 [267] phi from mul8u_error::@9 to mul8u_error::@10 [phi:mul8u_error::@9->mul8u_error::@10] + //SEG549 mul8u_error::@10 + //SEG550 [268] call print_ln + //SEG551 [58] phi from mul8u_error::@10 to print_ln [phi:mul8u_error::@10->print_ln] + //SEG552 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#18 [phi:mul8u_error::@10->print_ln#0] -- register_copy + //SEG553 [58] phi (byte*) print_line_cursor#45 = (byte*) print_line_cursor#10 [phi:mul8u_error::@10->print_ln#1] -- register_copy jsr print_ln - //SEG550 mul8u_error::@return - //SEG551 [265] return + //SEG554 mul8u_error::@return + //SEG555 [269] return rts str: .text "multiply mismatch @" str1: .text "*@" @@ -11802,53 +11890,53 @@ mul8u_error: { str3: .text " / normal:@" str4: .text " / fast:@" } -//SEG552 mulf8u +//SEG556 mulf8u mulf8u: { .label return = $e - //SEG553 [266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 + //SEG557 [270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0 // (byte) mulf8u_prepare::a#0 = (byte) mulf8u::a#0 // register copy reg byte a - //SEG554 [267] call mulf8u_prepare - //SEG555 [186] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] - //SEG556 [186] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy + //SEG558 [271] call mulf8u_prepare + //SEG559 [190] phi from mulf8u to mulf8u_prepare [phi:mulf8u->mulf8u_prepare] + //SEG560 [190] phi (byte) mulf8u_prepare::a#2 = (byte) mulf8u_prepare::a#0 [phi:mulf8u->mulf8u_prepare#0] -- register_copy jsr mulf8u_prepare - //SEG557 mulf8u::@2 - //SEG558 [268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 + //SEG561 mulf8u::@2 + //SEG562 [272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0 // (byte) mulf8u_prepared::b#0 = (byte) mulf8u::b#0 // register copy reg byte x - //SEG559 [269] call mulf8u_prepared - //SEG560 [181] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] - //SEG561 [181] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy + //SEG563 [273] call mulf8u_prepared + //SEG564 [185] phi from mulf8u::@2 to mulf8u_prepared [phi:mulf8u::@2->mulf8u_prepared] + //SEG565 [185] phi (byte) mulf8u_prepared::b#2 = (byte) mulf8u_prepared::b#0 [phi:mulf8u::@2->mulf8u_prepared#0] -- register_copy jsr mulf8u_prepared - //SEG562 [270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 + //SEG566 [274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0 // (word) mulf8u_prepared::return#2 = (word) mulf8u_prepared::return#0 // register copy zp ZP_WORD:14 - //SEG563 mulf8u::@3 - //SEG564 [271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 + //SEG567 mulf8u::@3 + //SEG568 [275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2 // (word) mulf8u::return#0 = (word) mulf8u_prepared::return#2 // register copy zp ZP_WORD:14 - //SEG565 mulf8u::@return - //SEG566 [272] return + //SEG569 mulf8u::@return + //SEG570 [276] return rts } -//SEG567 muls8u +//SEG571 muls8u muls8u: { .label return = 8 .label m = 8 .label a = 2 - //SEG568 [273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 + //SEG572 [277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1 -- vbuz1_eq_0_then_la1 lda a cmp #0 beq b3 - //SEG569 [274] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] - //SEG570 [274] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 + //SEG573 [278] phi from muls8u to muls8u::@2 [phi:muls8u->muls8u::@2] + //SEG574 [278] phi (byte) muls8u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG571 [274] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 + //SEG575 [278] phi (word) muls8u::m#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@2#1] -- vwuz1=vbuc1 tya sta m sta m+1 - //SEG572 [274] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] - //SEG573 [274] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy - //SEG574 [274] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy - //SEG575 muls8u::@2 + //SEG576 [278] phi from muls8u::@2 to muls8u::@2 [phi:muls8u::@2->muls8u::@2] + //SEG577 [278] phi (byte) muls8u::i#2 = (byte) muls8u::i#1 [phi:muls8u::@2->muls8u::@2#0] -- register_copy + //SEG578 [278] phi (word) muls8u::m#3 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@2#1] -- register_copy + //SEG579 muls8u::@2 b2: - //SEG576 [275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx + //SEG580 [279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0 -- vwuz1=vwuz1_plus_vbuxx txa clc adc m @@ -11856,122 +11944,122 @@ muls8u: { lda #0 adc m+1 sta m+1 - //SEG577 [276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy + //SEG581 [280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2 -- vbuyy=_inc_vbuyy iny - //SEG578 [277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 + //SEG582 [281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2 -- vbuyy_neq_vbuz1_then_la1 cpy a bne b2 - //SEG579 [278] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] - //SEG580 [278] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy + //SEG583 [282] phi from muls8u::@2 to muls8u::@1 [phi:muls8u::@2->muls8u::@1] + //SEG584 [282] phi (word) muls8u::return#0 = (word) muls8u::m#1 [phi:muls8u::@2->muls8u::@1#0] -- register_copy jmp b1 - //SEG581 [278] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] + //SEG585 [282] phi from muls8u to muls8u::@1 [phi:muls8u->muls8u::@1] b3: - //SEG582 [278] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 + //SEG586 [282] phi (word) muls8u::return#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:muls8u->muls8u::@1#0] -- vwuz1=vbuc1 lda #<0 sta return sta return+1 - //SEG583 muls8u::@1 + //SEG587 muls8u::@1 b1: - //SEG584 muls8u::@return - //SEG585 [279] return + //SEG588 muls8u::@return + //SEG589 [283] return rts } -//SEG586 mulf_tables_cmp +//SEG590 mulf_tables_cmp mulf_tables_cmp: { .label asm_sqr = 8 .label kc_sqr = 4 - //SEG587 [281] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] - //SEG588 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 + //SEG591 [285] phi from mulf_tables_cmp to mulf_tables_cmp::@1 [phi:mulf_tables_cmp->mulf_tables_cmp::@1] + //SEG592 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (const byte[512]) mula_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#0] -- pbuz1=pbuc1 lda #mula_sqr1_lo sta asm_sqr+1 - //SEG589 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 + //SEG593 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (const byte[512]) mulf_sqr1_lo#0 [phi:mulf_tables_cmp->mulf_tables_cmp::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_lo sta kc_sqr+1 - //SEG590 [281] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] - //SEG591 [281] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy - //SEG592 [281] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy - //SEG593 mulf_tables_cmp::@1 + //SEG594 [285] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1] + //SEG595 [285] phi (byte*) mulf_tables_cmp::asm_sqr#2 = (byte*) mulf_tables_cmp::asm_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#0] -- register_copy + //SEG596 [285] phi (byte*) mulf_tables_cmp::kc_sqr#2 = (byte*) mulf_tables_cmp::kc_sqr#1 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@1#1] -- register_copy + //SEG597 mulf_tables_cmp::@1 b1: - //SEG594 [282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 + //SEG598 [286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2 -- _deref_pbuz1_eq__deref_pbuz2_then_la1 ldy #0 lda (kc_sqr),y cmp (asm_sqr),y beq b2 - //SEG595 mulf_tables_cmp::@3 - //SEG596 [283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 + //SEG599 mulf_tables_cmp::@3 + //SEG600 [287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2 lda #2 sta BGCOL - //SEG597 [284] call print_str - //SEG598 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] - //SEG599 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 + //SEG601 [288] call print_str + //SEG602 [63] phi from mulf_tables_cmp::@3 to print_str [phi:mulf_tables_cmp::@3->print_str] + //SEG603 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@3->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG600 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 + //SEG604 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str [phi:mulf_tables_cmp::@3->print_str#1] -- pbuz1=pbuc1 lda #str sta print_str.str+1 jsr print_str - //SEG601 mulf_tables_cmp::@6 - //SEG602 [285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 + //SEG605 mulf_tables_cmp::@6 + //SEG606 [289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2 // (word~) print_word::w#11 = (word)(byte*) mulf_tables_cmp::asm_sqr#2 // register copy zp ZP_WORD:8 - //SEG603 [286] call print_word - //SEG604 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] - //SEG605 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy - //SEG606 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy + //SEG607 [290] call print_word + //SEG608 [102] phi from mulf_tables_cmp::@6 to print_word [phi:mulf_tables_cmp::@6->print_word] + //SEG609 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@6->print_word#0] -- register_copy + //SEG610 [102] phi (word) print_word::w#6 = (word~) print_word::w#11 [phi:mulf_tables_cmp::@6->print_word#1] -- register_copy jsr print_word - //SEG607 [287] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] - //SEG608 mulf_tables_cmp::@7 - //SEG609 [288] call print_str - //SEG610 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] - //SEG611 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy - //SEG612 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 + //SEG611 [291] phi from mulf_tables_cmp::@6 to mulf_tables_cmp::@7 [phi:mulf_tables_cmp::@6->mulf_tables_cmp::@7] + //SEG612 mulf_tables_cmp::@7 + //SEG613 [292] call print_str + //SEG614 [63] phi from mulf_tables_cmp::@7 to print_str [phi:mulf_tables_cmp::@7->print_str] + //SEG615 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@7->print_str#0] -- register_copy + //SEG616 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str1 [phi:mulf_tables_cmp::@7->print_str#1] -- pbuz1=pbuc1 lda #str1 sta print_str.str+1 jsr print_str - //SEG613 mulf_tables_cmp::@8 - //SEG614 [289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 + //SEG617 mulf_tables_cmp::@8 + //SEG618 [293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2 -- vwuz1=vwuz2 lda kc_sqr sta print_word.w lda kc_sqr+1 sta print_word.w+1 - //SEG615 [290] call print_word - //SEG616 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] - //SEG617 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy - //SEG618 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy + //SEG619 [294] call print_word + //SEG620 [102] phi from mulf_tables_cmp::@8 to print_word [phi:mulf_tables_cmp::@8->print_word] + //SEG621 [102] phi (byte*) print_char_cursor#139 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@8->print_word#0] -- register_copy + //SEG622 [102] phi (word) print_word::w#6 = (word~) print_word::w#12 [phi:mulf_tables_cmp::@8->print_word#1] -- register_copy jsr print_word - //SEG619 [291] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] - //SEG620 [291] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 + //SEG623 [295] phi from mulf_tables_cmp::@8 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return] + //SEG624 [295] phi (byte*) print_line_cursor#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#0] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 - //SEG621 [291] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy - //SEG622 mulf_tables_cmp::@return + //SEG625 [295] phi (byte*) print_char_cursor#31 = (byte*) print_char_cursor#18 [phi:mulf_tables_cmp::@8->mulf_tables_cmp::@return#1] -- register_copy + //SEG626 mulf_tables_cmp::@return breturn: - //SEG623 [292] return + //SEG627 [296] return rts - //SEG624 mulf_tables_cmp::@2 + //SEG628 mulf_tables_cmp::@2 b2: - //SEG625 [293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG629 [297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2 -- pbuz1=_inc_pbuz1 inc asm_sqr bne !+ inc asm_sqr+1 !: - //SEG626 [294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 + //SEG630 [298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2 -- pbuz1=_inc_pbuz1 inc kc_sqr bne !+ inc kc_sqr+1 !: - //SEG627 [295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 + //SEG631 [299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1 -- pbuz1_lt_pbuc1_then_la1 lda kc_sqr+1 cmp #>mulf_sqr1_lo+$200*4 bcc b1 @@ -11980,49 +12068,49 @@ mulf_tables_cmp: { cmp #mulf_tables_cmp::@5] - //SEG629 mulf_tables_cmp::@5 - //SEG630 [297] call print_str - //SEG631 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] - //SEG632 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 + //SEG632 [300] phi from mulf_tables_cmp::@2 to mulf_tables_cmp::@5 [phi:mulf_tables_cmp::@2->mulf_tables_cmp::@5] + //SEG633 mulf_tables_cmp::@5 + //SEG634 [301] call print_str + //SEG635 [63] phi from mulf_tables_cmp::@5 to print_str [phi:mulf_tables_cmp::@5->print_str] + //SEG636 [63] phi (byte*) print_char_cursor#152 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@5->print_str#0] -- pbuz1=pbuc1 lda #<$400 sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG633 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 + //SEG637 [63] phi (byte*) print_str::str#18 = (const string) mulf_tables_cmp::str2 [phi:mulf_tables_cmp::@5->print_str#1] -- pbuz1=pbuc1 lda #str2 sta print_str.str+1 jsr print_str - //SEG634 [298] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] - //SEG635 mulf_tables_cmp::@10 - //SEG636 [299] call print_ln - //SEG637 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] - //SEG638 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy - //SEG639 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 + //SEG638 [302] phi from mulf_tables_cmp::@5 to mulf_tables_cmp::@10 [phi:mulf_tables_cmp::@5->mulf_tables_cmp::@10] + //SEG639 mulf_tables_cmp::@10 + //SEG640 [303] call print_ln + //SEG641 [58] phi from mulf_tables_cmp::@10 to print_ln [phi:mulf_tables_cmp::@10->print_ln] + //SEG642 [58] phi (byte*) print_char_cursor#133 = (byte*) print_char_cursor#132 [phi:mulf_tables_cmp::@10->print_ln#0] -- register_copy + //SEG643 [58] phi (byte*) print_line_cursor#45 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:mulf_tables_cmp::@10->print_ln#1] -- pbuz1=pbuc1 lda #<$400 sta print_line_cursor lda #>$400 sta print_line_cursor+1 jsr print_ln - //SEG640 [300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 + //SEG644 [304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1 -- pbuz1=pbuz2 lda print_line_cursor sta print_char_cursor lda print_line_cursor+1 sta print_char_cursor+1 - //SEG641 [291] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] - //SEG642 [291] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy - //SEG643 [291] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy + //SEG645 [295] phi from mulf_tables_cmp::@10 to mulf_tables_cmp::@return [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return] + //SEG646 [295] phi (byte*) print_line_cursor#10 = (byte*) print_line_cursor#1 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#0] -- register_copy + //SEG647 [295] phi (byte*) print_char_cursor#31 = (byte*~) print_char_cursor#225 [phi:mulf_tables_cmp::@10->mulf_tables_cmp::@return#1] -- register_copy jmp breturn str: .text "multiply table mismatch at @" str1: .text " / @" str2: .text "multiply tables match!@" } -//SEG644 mulf_init_asm +//SEG648 mulf_init_asm mulf_init_asm: { .label mem = $ff - //SEG645 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } + //SEG649 asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- } ldx #0 txa .byte $c9 @@ -12061,23 +12149,23 @@ mulf_init_asm: { dey inx bne !- - //SEG646 [302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG650 [306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_lo sta mem - //SEG647 [303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG651 [307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr1_hi sta mem - //SEG648 [304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG652 [308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_lo sta mem - //SEG649 [305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 + //SEG653 [309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0) -- _deref_pbuc1=_deref_pbuc2 lda mula_sqr2_hi sta mem - //SEG650 mulf_init_asm::@return - //SEG651 [306] return + //SEG654 mulf_init_asm::@return + //SEG655 [310] return rts } -//SEG652 mulf_init +//SEG656 mulf_init mulf_init: { .label sqr1_hi = 6 .label sqr = 8 @@ -12086,70 +12174,70 @@ mulf_init: { .label sqr2_hi = 6 .label sqr2_lo = 4 .label dir = 2 - //SEG653 [308] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] - //SEG654 [308] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 + //SEG657 [312] phi from mulf_init to mulf_init::@1 [phi:mulf_init->mulf_init::@1] + //SEG658 [312] phi (byte) mulf_init::x_2#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#0] -- vbuz1=vbuc1 lda #0 sta x_2 - //SEG655 [308] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 + //SEG659 [312] phi (byte*) mulf_init::sqr1_hi#2 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#1] -- pbuz1=pbuc1 lda #mulf_sqr1_hi+1 sta sqr1_hi+1 - //SEG656 [308] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 + //SEG660 [312] phi (byte*) mulf_init::sqr1_lo#2 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init->mulf_init::@1#2] -- pbuz1=pbuc1 lda #mulf_sqr1_lo+1 sta sqr1_lo+1 - //SEG657 [308] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 + //SEG661 [312] phi (word) mulf_init::sqr#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#3] -- vwuz1=vbuc1 lda #<0 sta sqr sta sqr+1 - //SEG658 [308] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 + //SEG662 [312] phi (byte) mulf_init::c#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:mulf_init->mulf_init::@1#4] -- vbuxx=vbuc1 tax - //SEG659 [308] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] - //SEG660 [308] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy - //SEG661 [308] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy - //SEG662 [308] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy - //SEG663 [308] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy - //SEG664 [308] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy - //SEG665 mulf_init::@1 + //SEG663 [312] phi from mulf_init::@2 to mulf_init::@1 [phi:mulf_init::@2->mulf_init::@1] + //SEG664 [312] phi (byte) mulf_init::x_2#3 = (byte) mulf_init::x_2#2 [phi:mulf_init::@2->mulf_init::@1#0] -- register_copy + //SEG665 [312] phi (byte*) mulf_init::sqr1_hi#2 = (byte*) mulf_init::sqr1_hi#1 [phi:mulf_init::@2->mulf_init::@1#1] -- register_copy + //SEG666 [312] phi (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#1 [phi:mulf_init::@2->mulf_init::@1#2] -- register_copy + //SEG667 [312] phi (word) mulf_init::sqr#4 = (word) mulf_init::sqr#1 [phi:mulf_init::@2->mulf_init::@1#3] -- register_copy + //SEG668 [312] phi (byte) mulf_init::c#2 = (byte) mulf_init::c#1 [phi:mulf_init::@2->mulf_init::@1#4] -- register_copy + //SEG669 mulf_init::@1 b1: - //SEG666 [309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx + //SEG670 [313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2 -- vbuxx=_inc_vbuxx inx - //SEG667 [310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 + //SEG671 [314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuxx_band_vbuc1 txa and #1 - //SEG668 [311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 + //SEG672 [315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2 -- vbuaa_neq_0_then_la1 cmp #0 bne b2 - //SEG669 mulf_init::@5 - //SEG670 [312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 + //SEG673 mulf_init::@5 + //SEG674 [316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3 -- vbuz1=_inc_vbuz1 inc x_2 - //SEG671 [313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 + //SEG675 [317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4 -- vwuz1=_inc_vwuz1 inc sqr bne !+ inc sqr+1 !: - //SEG672 [314] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] - //SEG673 [314] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy - //SEG674 [314] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy - //SEG675 mulf_init::@2 + //SEG676 [318] phi from mulf_init::@1 mulf_init::@5 to mulf_init::@2 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2] + //SEG677 [318] phi (byte) mulf_init::x_2#2 = (byte) mulf_init::x_2#3 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#0] -- register_copy + //SEG678 [318] phi (word) mulf_init::sqr#3 = (word) mulf_init::sqr#4 [phi:mulf_init::@1/mulf_init::@5->mulf_init::@2#1] -- register_copy + //SEG679 mulf_init::@2 b2: - //SEG676 [315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 + //SEG680 [319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3 -- vbuaa=_lo_vwuz1 lda sqr - //SEG677 [316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa + //SEG681 [320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5 -- _deref_pbuz1=vbuaa ldy #0 sta (sqr1_lo),y - //SEG678 [317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 + //SEG682 [321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3 -- vbuaa=_hi_vwuz1 lda sqr+1 - //SEG679 [318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa + //SEG683 [322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6 -- _deref_pbuz1=vbuaa sta (sqr1_hi),y - //SEG680 [319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 + //SEG684 [323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2 -- pbuz1=_inc_pbuz1 inc sqr1_hi bne !+ inc sqr1_hi+1 !: - //SEG681 [320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 + //SEG685 [324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2 -- vwuz1=vwuz1_plus_vbuz2 lda x_2 clc adc sqr @@ -12157,125 +12245,125 @@ mulf_init: { lda #0 adc sqr+1 sta sqr+1 - //SEG682 [321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 + //SEG686 [325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2 -- pbuz1=_inc_pbuz1 inc sqr1_lo bne !+ inc sqr1_lo+1 !: - //SEG683 [322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG687 [326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1 -- pbuz1_neq_pbuc1_then_la1 lda sqr1_lo+1 cmp #>mulf_sqr1_lo+$200 bne b1 lda sqr1_lo cmp #mulf_init::@3] - //SEG685 [323] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 + //SEG688 [327] phi from mulf_init::@2 to mulf_init::@3 [phi:mulf_init::@2->mulf_init::@3] + //SEG689 [327] phi (byte) mulf_init::dir#2 = (byte/word/signed word/dword/signed dword) 255 [phi:mulf_init::@2->mulf_init::@3#0] -- vbuz1=vbuc1 lda #$ff sta dir - //SEG686 [323] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 + //SEG690 [327] phi (byte*) mulf_init::sqr2_hi#2 = (const byte[512]) mulf_sqr2_hi#0 [phi:mulf_init::@2->mulf_init::@3#1] -- pbuz1=pbuc1 lda #mulf_sqr2_hi sta sqr2_hi+1 - //SEG687 [323] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 + //SEG691 [327] phi (byte*) mulf_init::sqr2_lo#2 = (const byte[512]) mulf_sqr2_lo#0 [phi:mulf_init::@2->mulf_init::@3#2] -- pbuz1=pbuc1 lda #mulf_sqr2_lo sta sqr2_lo+1 - //SEG688 [323] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 + //SEG692 [327] phi (byte) mulf_init::x_255#2 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@2->mulf_init::@3#3] -- vbuxx=vbuc1 ldx #-1 - //SEG689 [323] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] - //SEG690 [323] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy - //SEG691 [323] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy - //SEG692 [323] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy - //SEG693 [323] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy - //SEG694 mulf_init::@3 + //SEG693 [327] phi from mulf_init::@4 to mulf_init::@3 [phi:mulf_init::@4->mulf_init::@3] + //SEG694 [327] phi (byte) mulf_init::dir#2 = (byte) mulf_init::dir#3 [phi:mulf_init::@4->mulf_init::@3#0] -- register_copy + //SEG695 [327] phi (byte*) mulf_init::sqr2_hi#2 = (byte*) mulf_init::sqr2_hi#1 [phi:mulf_init::@4->mulf_init::@3#1] -- register_copy + //SEG696 [327] phi (byte*) mulf_init::sqr2_lo#2 = (byte*) mulf_init::sqr2_lo#1 [phi:mulf_init::@4->mulf_init::@3#2] -- register_copy + //SEG697 [327] phi (byte) mulf_init::x_255#2 = (byte) mulf_init::x_255#1 [phi:mulf_init::@4->mulf_init::@3#3] -- register_copy + //SEG698 mulf_init::@3 b3: - //SEG695 [324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG699 [328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_lo,x ldy #0 sta (sqr2_lo),y - //SEG696 [325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG700 [329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda mulf_sqr1_hi,x sta (sqr2_hi),y - //SEG697 [326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 + //SEG701 [330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2 -- pbuz1=_inc_pbuz1 inc sqr2_hi bne !+ inc sqr2_hi+1 !: - //SEG698 [327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 + //SEG702 [331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2 -- vbuxx=vbuxx_plus_vbuz1 txa clc adc dir tax - //SEG699 [328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 + //SEG703 [332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12 -- vbuxx_neq_0_then_la1 cpx #0 bne b4 - //SEG700 [329] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] - //SEG701 [329] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 + //SEG704 [333] phi from mulf_init::@3 to mulf_init::@4 [phi:mulf_init::@3->mulf_init::@4] + //SEG705 [333] phi (byte) mulf_init::dir#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:mulf_init::@3->mulf_init::@4#0] -- vbuz1=vbuc1 lda #1 sta dir - //SEG702 mulf_init::@4 + //SEG706 mulf_init::@4 b4: - //SEG703 [330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 + //SEG707 [334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2 -- pbuz1=_inc_pbuz1 inc sqr2_lo bne !+ inc sqr2_lo+1 !: - //SEG704 [331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 + //SEG708 [335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3 -- pbuz1_neq_pbuc1_then_la1 lda sqr2_lo+1 cmp #>mulf_sqr2_lo+$1ff bne b3 lda sqr2_lo cmp #mulf_init::@12] - //SEG711 mulf_init::@12 - //SEG712 [329] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] - //SEG713 [329] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy + //SEG714 [339] phi from mulf_init::@3 to mulf_init::@12 [phi:mulf_init::@3->mulf_init::@12] + //SEG715 mulf_init::@12 + //SEG716 [333] phi from mulf_init::@12 to mulf_init::@4 [phi:mulf_init::@12->mulf_init::@4] + //SEG717 [333] phi (byte) mulf_init::dir#3 = (byte) mulf_init::dir#2 [phi:mulf_init::@12->mulf_init::@4#0] -- register_copy } -//SEG714 print_cls +//SEG718 print_cls print_cls: { .label sc = 4 - //SEG715 [337] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] - //SEG716 [337] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + //SEG719 [341] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG720 [341] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 lda #<$400 sta sc lda #>$400 sta sc+1 - //SEG717 [337] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] - //SEG718 [337] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy - //SEG719 print_cls::@1 + //SEG721 [341] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG722 [341] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG723 print_cls::@1 b1: - //SEG720 [338] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 + //SEG724 [342] *((byte*) print_cls::sc#2) ← (byte) ' ' -- _deref_pbuz1=vbuc1 lda #' ' ldy #0 sta (sc),y - //SEG721 [339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 + //SEG725 [343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG722 [340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 + //SEG726 [344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 -- pbuz1_neq_pbuc1_then_la1 lda sc+1 cmp #>$400+$3e8 bne b1 lda sc cmp #<$400+$3e8 bne b1 - //SEG723 print_cls::@return - //SEG724 [341] return + //SEG727 print_cls::@return + //SEG728 [345] return rts } print_hextab: .text "0123456789abcdef" diff --git a/src/test/ref/test-multiply-8bit.sym b/src/test/ref/test-multiply-8bit.sym index 5ba792c4a..a46e65891 100644 --- a/src/test/ref/test-multiply-8bit.sym +++ b/src/test/ref/test-multiply-8bit.sym @@ -11,9 +11,11 @@ (label) main::@5 (label) main::@return (signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b) +(byte~) mul8s::$11 reg byte a 20.0 (byte~) mul8s::$12 reg byte a 4.0 (byte~) mul8s::$16 reg byte a 4.0 (byte~) mul8s::$17 reg byte a 4.0 +(byte~) mul8s::$5 reg byte a 20.0 (byte~) mul8s::$6 reg byte a 4.0 (label) mul8s::@1 (label) mul8s::@2 @@ -22,15 +24,15 @@ (label) mul8s::@6 (label) mul8s::@return (signed byte) mul8s::a -(signed byte) mul8s::a#0 a zp ZP_BYTE:2 7.357142857142858 +(signed byte) mul8s::a#0 a zp ZP_BYTE:2 6.4375 (signed byte) mul8s::b -(signed byte) mul8s::b#0 reg byte y 9.363636363636363 +(signed byte) mul8s::b#0 reg byte y 8.583333333333332 (word) mul8s::m (word) mul8s::m#0 m zp ZP_WORD:12 2.0 (word) mul8s::m#1 m zp ZP_WORD:12 4.0 (word) mul8s::m#2 m zp ZP_WORD:12 4.0 (word) mul8s::m#4 m zp ZP_WORD:12 1.3333333333333333 -(word) mul8s::m#5 m zp ZP_WORD:12 2.5 +(word) mul8s::m#5 m zp ZP_WORD:12 2.4 (signed word) mul8s::return (signed word) mul8s::return#2 return zp ZP_WORD:12 202.0 (void()) mul8s_compare() @@ -202,9 +204,11 @@ (signed word) mulf8s::return#0 return zp ZP_WORD:14 34.33333333333333 (signed word) mulf8s::return#2 return zp ZP_WORD:14 202.0 (signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b) +(byte~) mulf8s_prepared::$10 reg byte a 20.0 (byte~) mulf8s_prepared::$11 reg byte a 4.0 (byte~) mulf8s_prepared::$15 reg byte a 4.0 (byte~) mulf8s_prepared::$16 reg byte a 4.0 +(byte~) mulf8s_prepared::$4 reg byte a 20.0 (byte~) mulf8s_prepared::$5 reg byte a 4.0 (label) mulf8s_prepared::@1 (label) mulf8s_prepared::@2 @@ -213,13 +217,13 @@ (label) mulf8s_prepared::@6 (label) mulf8s_prepared::@return (signed byte) mulf8s_prepared::b -(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.4 +(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.36363636363636365 (word) mulf8s_prepared::m (word) mulf8s_prepared::m#0 m zp ZP_WORD:14 2.0 (word) mulf8s_prepared::m#1 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#2 m zp ZP_WORD:14 4.0 (word) mulf8s_prepared::m#4 m zp ZP_WORD:14 1.3333333333333333 -(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.5 +(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.4 (signed byte*) mulf8s_prepared::memA (const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253 (signed word) mulf8s_prepared::return @@ -493,13 +497,17 @@ reg byte y [ mul8s::b#0 ] reg byte x [ mul8s_error::a#0 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ] +reg byte a [ mul8s::$5 ] reg byte a [ mul8s::$6 ] reg byte a [ mul8s::$16 ] +reg byte a [ mul8s::$11 ] reg byte a [ mul8s::$12 ] reg byte a [ mul8s::$17 ] reg byte a [ mul8u::$1 ] +reg byte a [ mulf8s_prepared::$4 ] reg byte a [ mulf8s_prepared::$5 ] reg byte a [ mulf8s_prepared::$15 ] +reg byte a [ mulf8s_prepared::$10 ] reg byte a [ mulf8s_prepared::$11 ] reg byte a [ mulf8s_prepared::$16 ] reg byte x [ muls8u::b#0 ] diff --git a/src/test/ref/unused-vars.log b/src/test/ref/unused-vars.log index d6ffc5cf8..e581d494a 100644 --- a/src/test/ref/unused-vars.log +++ b/src/test/ref/unused-vars.log @@ -4,20 +4,40 @@ CONTROL FLOW GRAPH SSA (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte/signed byte/word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 (byte) b#0 ← (byte/signed byte/word/signed word/dword/signed dword~) $0 + (byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281 + (byte[]) msg#0 ← (const string) $1 + (byte[]) arr#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 9 } + (byte) c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) c2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) d#0 ← (word/signed word/dword/signed dword) 1000 to:@2 main: scope:[main] from @2 + (word) d#2 ← phi( @2/(word) d#3 ) (byte) b#13 ← phi( @2/(byte) b#14 ) (byte) main::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 (byte*) main::COLS#0 ← ((byte*)) (word/dword/signed dword) 55296 + (byte/signed byte/word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte/signed byte/word/signed word/dword/signed dword) 3 + (byte/signed word/word/dword/signed dword/signed byte~) main::$1 ← (byte/signed byte/word/signed word/dword/signed dword~) main::$0 + (byte/signed byte/word/signed word/dword/signed dword) 3 call s (byte) s::return#0 ← (byte) s::return#2 to:main::@3 main::@3: scope:[main] from main (byte*) main::COLS#2 ← phi( main/(byte*) main::COLS#0 ) (byte) main::col#2 ← phi( main/(byte) main::col#0 ) + (word) d#1 ← phi( main/(word) d#2 ) (byte) b#7 ← phi( main/(byte) b#5 ) + (byte) s::return#3 ← phi( main/(byte) s::return#0 ) + (byte~) main::$2 ← (byte) s::return#3 (byte) b#1 ← (byte) b#7 + (byte/signed word/word/dword/signed dword~) main::$3 ← (byte/signed word/word/dword/signed dword/signed byte~) main::$1 + (byte~) main::$2 + (byte) main::e#0 ← (byte/signed word/word/dword/signed dword~) main::$3 + (word/signed word/dword/signed dword~) main::$4 ← (word/signed word/dword/signed dword) 2000 + (word/signed word/dword/signed dword) 2000 + (word/signed dword/dword~) main::$5 ← (word/signed word/dword/signed dword~) main::$4 + (word) d#1 + (word/signed dword/dword~) main::$6 ← (word/signed dword/dword~) main::$5 + (byte) b#1 + (word) main::f#0 ← (word/signed dword/dword~) main::$6 (byte) b#2 ← ++ (byte) b#1 + (byte[]) main::g#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 6 } + (byte[]) main::h#0 ← (const string) main::$9 (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::@1 main::@1: scope:[main] from main::@1 main::@3 @@ -25,6 +45,8 @@ main::@1: scope:[main] from main::@1 main::@3 (byte) main::i#2 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#0 ) (byte*) main::COLS#1 ← phi( main::@1/(byte*) main::COLS#1 main::@3/(byte*) main::COLS#2 ) (byte) main::col#1 ← phi( main::@1/(byte) main::col#1 main::@3/(byte) main::col#2 ) + (signed byte/signed word/signed dword~) main::$7 ← - (byte/signed byte/word/signed word/dword/signed dword) 13 + (signed byte) main::x#0 ← (signed byte/signed word/signed dword~) main::$7 *((byte*) main::COLS#1 + (byte) main::i#2) ← (byte) main::col#1 *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) b#8 (byte) main::i#1 ← (byte) main::i#2 + rangenext(0,100) @@ -43,12 +65,13 @@ s: scope:[s] from main to:s::@return s::@return: scope:[s] from s (byte) b#11 ← phi( s/(byte) b#4 ) - (byte) s::return#3 ← phi( s/(byte) s::return#1 ) - (byte) s::return#2 ← (byte) s::return#3 + (byte) s::return#4 ← phi( s/(byte) s::return#1 ) + (byte) s::return#2 ← (byte) s::return#4 (byte) b#5 ← (byte) b#11 return to:@return @2: scope:[] from @begin + (word) d#3 ← phi( @begin/(word) d#0 ) (byte) b#14 ← phi( @begin/(byte) b#0 ) call main to:@3 @@ -60,12 +83,17 @@ s::@return: scope:[s] from s SYMBOL TABLE SSA (byte/signed byte/word/signed word/dword/signed dword~) $0 +(const string) $1 = (string) "hello world@" (label) @2 (label) @3 (label) @begin (label) @end +(byte*) BGCOL +(byte*) BGCOL#0 (byte*) SCREEN (byte*) SCREEN#0 +(byte[]) arr +(byte[]) arr#0 (byte) b (byte) b#0 (byte) b#1 @@ -82,8 +110,26 @@ SYMBOL TABLE SSA (byte) b#7 (byte) b#8 (byte) b#9 +(byte) c +(byte) c#0 +(byte) c2 +(byte) c2#0 +(word) d +(word) d#0 +(word) d#1 +(word) d#2 +(word) d#3 (void()) main() +(byte/signed byte/word/signed word/dword/signed dword~) main::$0 +(byte/signed word/word/dword/signed dword/signed byte~) main::$1 +(byte~) main::$2 +(byte/signed word/word/dword/signed dword~) main::$3 +(word/signed word/dword/signed dword~) main::$4 +(word/signed dword/dword~) main::$5 +(word/signed dword/dword~) main::$6 +(signed byte/signed word/signed dword~) main::$7 (bool~) main::$8 +(const string) main::$9 = (string) "goodbye sky " (label) main::@1 (label) main::@3 (label) main::@return @@ -95,10 +141,22 @@ SYMBOL TABLE SSA (byte) main::col#0 (byte) main::col#1 (byte) main::col#2 +(byte) main::e +(byte) main::e#0 +(word) main::f +(word) main::f#0 +(byte[]) main::g +(byte[]) main::g#0 +(byte[]) main::h +(byte[]) main::h#0 (byte) main::i (byte) main::i#0 (byte) main::i#1 (byte) main::i#2 +(signed byte) main::x +(signed byte) main::x#0 +(byte[]) msg +(byte[]) msg#0 (byte()) s() (label) s::@return (byte) s::return @@ -106,14 +164,21 @@ SYMBOL TABLE SSA (byte) s::return#1 (byte) s::return#2 (byte) s::return#3 +(byte) s::return#4 Alias (byte) b#0 = (byte/signed byte/word/signed word/dword/signed dword~) $0 (byte) b#14 +Alias (byte) s::return#0 = (byte) s::return#3 +Alias (word) d#1 = (word) d#2 Alias (byte) main::col#0 = (byte) main::col#2 Alias (byte*) main::COLS#0 = (byte*) main::COLS#2 Alias (byte) b#1 = (byte) b#7 +Alias (byte) main::e#0 = (byte/signed word/word/dword/signed dword~) main::$3 +Alias (word) main::f#0 = (word/signed dword/dword~) main::$6 +Alias (signed byte) main::x#0 = (signed byte/signed word/signed dword~) main::$7 Alias (byte) b#3 = (byte) b#9 (byte) b#8 -Alias (byte) s::return#1 = (byte) s::return#3 (byte) s::return#2 +Alias (byte) s::return#1 = (byte) s::return#4 (byte) s::return#2 Alias (byte) b#11 = (byte) b#4 (byte) b#5 +Alias (word) d#0 = (word) d#3 Alias (byte) b#12 = (byte) b#6 Successful SSA optimization Pass2AliasElimination Self Phi Eliminated (byte) main::col#1 @@ -121,6 +186,7 @@ Self Phi Eliminated (byte*) main::COLS#1 Self Phi Eliminated (byte) b#3 Successful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) b#13 (byte) b#0 +Redundant Phi (word) d#1 (word) d#0 Redundant Phi (byte) b#1 (byte) b#11 Redundant Phi (byte) main::col#1 (byte) main::col#0 Redundant Phi (byte*) main::COLS#1 (byte*) main::COLS#0 @@ -132,16 +198,35 @@ Simple Condition (bool~) main::$8 if((byte) main::i#1!=rangelast(0,100)) goto ma Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) b#0 = 2>>1 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte[]) msg#0 = $1 +Constant (const byte[]) arr#0 = { 7, 8, 9 } +Constant (const byte) c#0 = 1 +Constant (const byte) c2#0 = 1 +Constant (const word) d#0 = 1000 Constant (const byte) main::col#0 = 2 Constant (const byte*) main::COLS#0 = ((byte*))55296 +Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$0 = 3+3 +Constant (const word/signed word/dword/signed dword) main::$4 = 2000+2000 +Constant (const byte[]) main::g#0 = { 4, 5, 6 } +Constant (const byte[]) main::h#0 = main::$9 Constant (const byte) main::i#0 = 0 +Constant (const signed byte) main::x#0 = -13 Constant (const byte) s::return#1 = 2 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte/signed word/word/dword/signed dword/signed byte) main::$1 = main::$0+3 Constant (const byte) s::return#0 = s::return#1 +Constant (const word/signed dword/dword) main::$5 = main::$4+d#0 Constant (const byte) b#11 = ++b#0 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) main::$2 = s::return#0 +Constant (const word) main::f#0 = main::$5+b#11 Constant (const byte) b#2 = ++b#11 Successful SSA optimization Pass2ConstantIdentification +Constant (const byte) main::e#0 = main::$1+main::$2 +Successful SSA optimization Pass2ConstantIdentification +Successful SSA optimization PassNEliminateUnusedVars +Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ @@ -211,14 +296,25 @@ s::@return: scope:[s] from s VARIABLE REGISTER WEIGHTS +(byte*) BGCOL (byte*) SCREEN +(byte[]) arr (byte) b +(byte) c +(byte) c2 +(word) d (void()) main() (byte*) main::COLS (byte) main::col +(byte) main::e +(word) main::f +(byte[]) main::g +(byte[]) main::h (byte) main::i (byte) main::i#1 16.5 (byte) main::i#2 14.666666666666666 +(signed byte) main::x +(byte[]) msg (byte()) s() (byte) s::return @@ -414,9 +510,14 @@ FINAL SYMBOL TABLE (label) @2 (label) @begin (label) @end +(byte*) BGCOL (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte[]) arr (byte) b +(byte) c +(byte) c2 +(word) d (void()) main() (label) main::@1 (label) main::@return @@ -424,9 +525,15 @@ FINAL SYMBOL TABLE (const byte*) main::COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 (byte) main::col (const byte) main::col#0 col = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) main::e +(word) main::f +(byte[]) main::g +(byte[]) main::h (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 +(signed byte) main::x +(byte[]) msg (byte()) s() (label) s::@return (byte) s::return diff --git a/src/test/ref/unused-vars.sym b/src/test/ref/unused-vars.sym index 239f73ae1..cdb2e5a88 100644 --- a/src/test/ref/unused-vars.sym +++ b/src/test/ref/unused-vars.sym @@ -1,9 +1,14 @@ (label) @2 (label) @begin (label) @end +(byte*) BGCOL (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(byte[]) arr (byte) b +(byte) c +(byte) c2 +(word) d (void()) main() (label) main::@1 (label) main::@return @@ -11,9 +16,15 @@ (const byte*) main::COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296 (byte) main::col (const byte) main::col#0 col = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) main::e +(word) main::f +(byte[]) main::g +(byte[]) main::h (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 +(signed byte) main::x +(byte[]) msg (byte()) s() (label) s::@return (byte) s::return